对数据库的操作都需要通过SQL语言进行,梳理了一部分常用到的SQL命令
数据库对象创建常用SQL
创建数据库
CREATE DATABASE A;
创建普通表
--普通表CREATE TABLE TAB_TABLEDUMP (ID INT );INSERT INTO TAB_TABLEDUMP VALUES (1);INSERT INTO TAB_TABLEDUMP VALUES (2);INSERT INTO TAB_TABLEDUMP VALUES (3);
索引
CREATE INDEX DUMP_INDEX ON TAB_TABLEDUMP(ID);
主键约束
--主键约束CREATE TABLE DUMP_PRIMARY (ID INT PRIMARY KEY);INSERT INTO DUMP_PRIMARY VALUES(1);
非空约束
--非空约束CREATE TABLE DUMP_NOTNULL (ID INT NOT NULL);INSERT INTO DUMP_NOTNULL VALUES(1);
唯一约束
--唯一键约束CREATE TABLE DUMP_UNIQUE (ID INT UNIQUE);INSERT INTO DUMP_UNIQUE VALUES(1);
检查约束
--检查约束CREATE TABLE DUMP_CHECK(ID INT CHECK(ID >0));INSERT INTO DUMP_CHECK VALUES(1);
排他约束
--外键约束CREATE TABLE DUMP_FOREIGN (COL INT REFERENCES DUMP_PRIMARY(ID));INSERT INTO DUMP_FOREIGN VALUES(1);
表依赖于表
--表依赖于表CREATE TABLE NEW_TABLE AS SELECT * FROM DUMP_PRIMARY;INSERT into new_table VALUES(2);
视图依赖表
--视图依赖表CREATE VIEW VIEW_DUMP AS SELECT * FROM TAB_TABLEDUMP;
物化视图依赖表
--物化视图依赖表CREATE MATERIALIZED VIEW VIEW_METER AS SELECT * FROM TAB_TABLEDUMP;
创建表依赖和视图--准备数据
--创建依赖表和视图CREATE TABLE DUMP_STUDENT (id int primary key,name varchar(50));CREATE TABLE DUMP_STUDENTLOG (op_time timestamp,db_user varchar(40),op_type varchar(20));CREATE VIEW VIEW_DUMP_STUDENT AS SELECT * FROM DUMP_STUDENT;
函数依赖表
--函数(函数依赖表)CREATE OR REPLACE FUNCTION DUMP_FUNCTION()RETURNS TRIGGER AS $$BEGININSERT INTO DUMP_STUDENTLOG VALUES(now(), user, TG_OP);RETURN NULL;END;$$LANGUAGE plpgsql;
触发器(触发器依赖表)(触发器依赖函数)(触发器依赖视图)
语句级触发器
--语句级触发器CREATE TRIGGER STATEMENT_TRIGGERAFTER INSERT OR DELETE OR UPDATE ON VIEW_DUMP_STUDENTFOR STATEMENT EXECUTE PROCEDURE DUMP_FUNCTION();INSERT INTO VIEW_DUMP_STUDENT VALUES(1,'April'),(2,'Harris');
行级触发器
--行级触发器CREATE TRIGGER ROW_TRIGGERAFTER INSERT OR DELETE OR UPDATE ON DUMP_STUDENTFOR EACH ROW EXECUTE PROCEDURE DUMP_FUNCTION();INSERT INTO DUMP_STUDENT VALUES(3,'Mary'),(4,'Bob');
存储过程
--存储过程CREATE OR REPLACE PROCEDURE DUMP_PROCEDURE ()AS $$BEGININSERT INTO TAB_TABLEDUMP VALUES(4);END;$$ LANGUAGE plpgsql;CALL DUMP_PROCEDURE()
创建用户,授予用户权限
create user A with password '1234';alter user A with createdb;GRANT SELECT ON TAB_TABLEDUMP TO A;CREATE TABLE TEST_REVOKE(A INT);INSERT INTO TEST_REVOKE VALUES(1);REVOKE SELECT on TEST_REVOKE from "postgres";
数据库查询常用SQL
查看当前数据库
select current_database();
查看数据库data目录
show data_directory;
表空间查询
select * from pg_tablespace;
查询所有模式
\dnSselect * from information_schema.schemata;SELECT nspname FROM pg_namespace;
查询表名
\dtSELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename;
查看表结构
\d tablenameselect * from information_schema.columns where table_schema='public' and table_name='XX';
查看索引
\diselect * from pg_index; #包含关于索引的一部分信息
查看视图
\dvselect * from pg_views where schemaname = 'public';select * from information_schema.views where table_schema = 'public';
查看触发器
select * from information_schema.triggers;
查看序列
select * from information_schema.sequences where sequence_schema = 'public';
查看约束
select * from pg_constraint where contype = 'p'select a.relname as table_name,b.conname as constraint_name,b.contype as constraint_type from pg_class a,pg_constraint b where a.oid = b.conrelid and a.relname = 'cc';

文章转载自北重楼,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




