PostgreSQL 常用语句

-- 关联表,然后赋值
update tb2 set tb2.fid = t.id from (select tb1.fid id from tb2
     left join tb1 on tb2.name = tb1.name) t;

-- 提取列中一部分内容
update flevel4 set tmp_name = substr(log_name, 0, strpos(log_name, '区')+1) where log_name like '%区%';

-- 添加外键约束
alter table datalist
	add constraint datalist_level3_id_fk
		foreign key (level3_id) references level3 (id);

-- 修改数据库编码
update pg_database set encoding = pg_char_to_encoding('GBK') where datname = 'nyc';

-- 查看数据库编码
select * from pg_database where datname='nyc';

-- 纵向合并2个表
select * from table1 union all select * from table2

-- 删除表
drop table 表名;

-- 更新值
update 表名 set "Name" = "PQMC" where fid > 0; -- 列名Name的值等于列名PQMC的值
update 表名 set "Name" = 'PQMC' where fid > 0; -- 列名Name的值为'PQMC'

-- 获取表的所有列名
select column_name from information_schema.columns where table_name=表名;

-- 删除列
alter table 表名 drop column 列名;

-- 修改表名
alter table 表名 rename to 新表名;

-- 修改列类型,并设置默认值
alter table 表名 alter column "DJMC" set data type varchar using '9999'; 

-- 添加列
alter table "CQ" add column "DJMC" varchar;

-- 修改列名
alter table "CQ" rename "sjmc" to "SJMC"; 

-- 获取连接服务下的所有表名(表名开头不包含pg_和sql_)
select tablename from pg_tables
    where tablename not like 'pg_%' and tablename not like 'sql_%'

-- 获取连接服务的所有数据库名
select datname from pg_database;

-- 表连接
select s.id, s.name, c.title from student as s 
     left join class as c on s.class_id = c.id; --通过student表的class_id列和class表的id列进行两个表连接

-- 为表添加外键(外键关联的一定是另一个表的主键)
alter table student      -- 添加外键的表名
    add constraint fk_student_lesson -- 外键的名称
        foreign key(lesson_id) references lesson(id); --student表的lesson_id列的外键为lesson表的主键列id

-- 创建带外键的表
create table emp(
      id int primary key,
      name varchar(30),
      salary nemueric(9,2),
      dept_id int,
      constraint fk_emp_dept foreign key(dep_id) references dept(id) --emp表的dept_id列的外键为dept表的主键列id
);

-- 为表添加主键
alter table student      -- 添加主键的表名
    add constraint pk_student_id -- 主键的名称
        primary key(id);        -- 主键的列名

-- 创建带有主键的表
create table emp(
      id int primary key, -- 列级约束主键,不能指定主键名称
      name varchar(30),
      salary numeric(9,2)
);

create table emp(
      id int,
      name varchar(30),
      salary numeric(9,2),
      constraint pk_emp primary key(id) -- 表级约束的主键,可以指定主键的名称
);

-- 创建序列
create sequence teacher_id_seq start with 1; --从1开始的序列

-- 为表的列设置自增序列
alter table teacher alter column id set DEFAULT nextval('teacher_id_seq'::regclass); --teacher表的id列为自增序列

-- 更新序列
alter sequence teacher_id_seq restart with 7; --起始值为7
原文地址:https://www.cnblogs.com/lqqgis/p/13514896.html