暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL学习笔记(8)之常用SQL命令

北重楼 2021-04-02
258


对数据库的操作都需要通过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 $$
                            BEGIN
                            INSERT INTO DUMP_STUDENTLOG VALUES(now(), user, TG_OP);
                            RETURN NULL;
                            END;
                            $$
                            LANGUAGE plpgsql;
                            • 触发器(触发器依赖表)(触发器依赖函数)(触发器依赖视图)

                            • 语句级触发器

                              --语句级触发器
                              CREATE TRIGGER STATEMENT_TRIGGER
                              AFTER INSERT OR DELETE OR UPDATE ON VIEW_DUMP_STUDENT
                              FOR STATEMENT EXECUTE PROCEDURE DUMP_FUNCTION();


                              INSERT INTO VIEW_DUMP_STUDENT VALUES(1,'April'),(2,'Harris');
                              • 行级触发器

                                --行级触发器
                                CREATE TRIGGER ROW_TRIGGER
                                AFTER INSERT OR DELETE OR UPDATE ON DUMP_STUDENT
                                FOR EACH ROW EXECUTE PROCEDURE DUMP_FUNCTION();


                                INSERT INTO DUMP_STUDENT VALUES(3,'Mary'),(4,'Bob');
                                • 存储过程

                                  --存储过程
                                  CREATE OR REPLACE PROCEDURE DUMP_PROCEDURE ()
                                  AS $$
                                  BEGIN
                                  INSERT 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;
                                          • 查询所有模式

                                            \dnS
                                            select * from information_schema.schemata;
                                            SELECT nspname FROM pg_namespace;
                                            • 查询表名

                                              \dt
                                              SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename;
                                              • 查看表结构

                                                \d tablename
                                                select * from information_schema.columns where table_schema='public' and table_name='XX';
                                                • 查看索引

                                                  \di
                                                  select * from pg_index;  #包含关于索引的一部分信息
                                                  • 查看视图

                                                    \dv
                                                    select * 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                          评论