sql语句操作规范:
- 表名:select * from 表名
- 表名为小写字母时:表名为小写、大写、大小写混合都行。
- 表名为大写字母时:表名只能为大写。
- 表名为大小写混合时:表名只能为大写。
- 字段名
- 字段名为小写字母时:查询时字段名为小写、大写、大小写混合都行。
- 字段名为大写字母时:查询时字段名只能为大写。
获取所有表名:
select tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%'
AND tablename NOT LIKE 'sql_%' ORDER BY tablename;
select table_name from INFORMATION_SCHEMA.TABLES WHERE table_catalog = '数据库名' and
table_type = 'BASE TABLE' AND table_name NOT LIKE 'pg%'
AND table_name NOT LIKE 'sql_%'
获取视图名:
SELECT SCHEMA_NAME from information_schema.schemata WHERE SCHEMA_NAME NOT LIKE 'pg%'
AND SCHEMA_NAME NOT LIKE 'information%'
同时获取表名和模式名:
select table_schema,table_name from INFORMATION_SCHEMA.TABLES WHERE table_type = 'BASE TABLE'
AND table_name NOT LIKE 'pg%' AND table_name NOT LIKE 'sql_%'
SELECT schemaname,tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%'
AND tablename NOT LIKE 'sql_%'
获取某一模式下的表名:
select table_name from INFORMATION_SCHEMA.TABLES Where table_schema = 'ldgx_36_jiangxi'
and table_catalog = 'postgres' and table_type = 'BASE TABLE'
创建表
CREATE TABLE ht_versions_data (i_id int PRIMARY KEY NOT NULL,version varchar(10))
插入记录
insert into ht_versions_data (i_id,version) VALUES ('1','1.0')
更改表名的语法:
ALTER TABLE ldgx_34_anhui.ldgx2016_p RENAME TO "2016_p" //特殊表名需要"",且新名字不能 加模式名
ALTER TABLE "ldgx_34_anhui"."2016_p" RENAME TO "ldgx2016_p" //=
ALTER TABLE "ldgx_34_anhui"."2016_p" RENAME TO ldgx2016_p
查找重复行:
select i_id, count(*) from table group by i_id having count(*) > 1;
左连接查询(三张表)
select A.col1, B.col2, C.col3 from (A left join B on a.col3 = b.col1) left join c on A.col3 = C.col1 Where ......
limit
数据是从第0条开始的,所以这句代码表示从 第六条数据开始的10行数据。
select * from my_table limit 10 offset 5
不带 offset 时,表示查询10条数据
select * from my_table limit 10
添加约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名称 UNIQUE (列名);
如:
ALTER TABLE users ADD CONSTRAINT unique_username UNIQUE (username);
删除约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名称;
如:
ALTER TABLE users DROP CONSTRAINT unique_username;