删除表格
DROP TABLE table_name;
新增字段
ALTER TABLE IF EXISTS table_name ADD COLUMN column_name datatype;
datatype可以为比如 varchar(255),int4,text这些。
需要新增多列时:
ALTER TABLE IF EXISTS table_name ADD COLUMN column_name1 datatype1,ADD COLUMN
column_name2 datatype2;
为了防止新增的列重复,也可以写为下面这样
ALTER TABLE IF EXISTS table_name ADD column IF NOT exists column_name datatype;
删除列
ALTER TABLE IF EXISTS table_name drop column column_name1 ,drop column column_name2;
重命名表
ALTER TABLE IF EXISTS old_table_name RENAME TO new_table_name;
重命名表字段
ALTER TABLE table_name rename old_column_name to new_column_name ;
复制一张表数据到另一张表
SELECT * INTO target_table_name FROM source_table_name;
复制数据到另一张表并做部分改动
INSERT INTO target_table_name(column1, column2, column3,…columnN) SELECT t.column1, t.column2, t.column3,…t.columnN FROM source_table_name t
防止主键冲突:(假设column1为主键)
INSERT INTO target_table_name(column1, column2, column3,…columnN) SELECT t.column1, t.column2, t.column3,…t.columnN FROM source_table_name t WHERE NOT EXISTS(SELECT column1 FROM target_table_name WHERE v.column1 = target_table_name.column1)
如果向所有字段插入值,可以不需要指定字段:
INSERT INTO target_table_name SELECT t.column1, t.column2,’’ as column3,…‘xxx’ as columnN FROM source_table_name t
查询另一张表中的某字段并给该表的字段赋值
UPDATE target_table_name SET column_name =(SELECT column_name2 FROM source_table_name v WHERE v.p_key_column=target_table_name.f_key_column) where exists(SELECT column_name2 FROM source_table_name v WHERE v.p_key_column=target_table_name.f_key_column);
示例:
如果子任务表中的id和主任务表中的sub_id相同,那么将子任务表中的某个字段设为主任务表中某个字段的值。首先要确认在子任务表中能比中ID,然后再把source_table_name表中的column_name2的值设为target_table_name中column_name的值。
创建自增索引
创建索引:
CREATE SEQUENCE table_name_i_id_seq INCREMENT 1 START 1;
设置到表:
ALTER TABLE table_name ALTER COLUMN i_id SET default nextval(‘table_name_i_id_seq’);