zoukankan      html  css  js  c++  java
  • PGSQL基础语句汇总

    一、pgsql里面的数据类型不再介绍:https://www.runoob.com/postgresql/postgresql-data-type.html 

    二、常用基本语句

               2.1、CREATE DATABASE dbname;   创建数据库

                       create database  Demo1;

                      注意:createdb 命令位于 PostgreSQL安装目录/bin 下,执行创建数据库的命令:

            $ cd /Library/PostgreSQL/11/bin/
            $ createdb -h localhost -p 5432 -U postgres Demo1
            password ******

              2.2、DROP DATABASE [ IF EXISTS ] dbname;   删除数据库

                        drop database  Demo1;

                       注意: dropdb 名位于 PostgreSQL安装目录/bin 下,执行删除数据库的命令:

              $ cd /Library/PostgreSQL/11/bin/
              $ dropdb -h localhost -p 5432 -U postgres runoobdb
              password ******

    2.3、DROP TABLE 语句来删除表格,包含表格数据、规则、触发器
    DROP TABLE Demo1; 或者 drop table department, company;


    2.4、PostgreSQL 模式(SCHEMA)可以看着是一个表的集合, 一个模式可以包含视图、索引、数据类型、函数和操作符

          相同的对象名称可以被用于不同的模式中而不会出现冲突,

          例如 schema1 和 myschema 都可以包含名为 mytable 的表。

          使用模式的优势:1、允许多个用户使用一个数据库并且不会互相干扰。

                                                      2、将数据库对象组织成逻辑组以便更容易管理。

                                                      3、第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

                         2.4.1、 创建 语法:# create schema myschema;

                                 # create table myschema.company(

                              ID INT NOT NULL,

                              NAME VARCHAR (20) NOT NULL,

                              AGE INT NOT NULL,

                              ADDRESS CHAR (25),

                              SALARY DECIMAL (18, 2),

                              PRIMARY KEY (ID)

                                     );

                 

           2.4.2、删除语法:

            删除一个为空的模式(其中的所有对象已经被删除):

              DROP SCHEMA myschema;

            删除一个模式以及其中包含的所有对象:

              DROP SCHEMA myschema CASCADE;

    2.5、插入语句:INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
    VALUES (value1, value2, value3,...valueN);

    所有字段插入值或者 INSERT INTO TABLE_NAME
    VALUES (value1,value2,value3,...valueN);

    案例:# INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE)
               VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');

    所有字段插入值或者 INSERT INTO COMPANY
               VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');




    2.6、查询语句:SELECT column1, column2,...columnN FROM table_name;
    案例:SELECT * FROM company;
    SELECT * FROM COMPANY
    WHERE SALARY > 50000;
                                  =或!=或 >=IS NOT NULL;
    案例2:
            # SELECT (17 + 6) AS ADDITION ;
    # SELECT COUNT(*) AS "RECORDS" FROM COMPANY;

    PostgreSQL 还内置了一些数学函数,如:
            1、avg() : 返回一个表达式的平均值
            2、sum() : 返回指定字段的总和
            3、count() : 返回查询的记录总数

          2.7、更新数据库表中数据
    语法:UPDATE table_name SET column1 = value1,
    column2 = value2...., columnN = valueN WHERE [condition];

    案例:# UPDATE COMPANY SET SALARY = 15000 WHERE ID = 3;


    2.8、DELETE 语句来删除 PostgreSQL 表中的数据
    DELETE FROM table_name WHERE [condition];
    案例:DELETE FROM table_name WHERE [condition];

    2.9、查询数据 limit 或 OFFSET
    案例:=# SELECT * FROM COMPANY LIMIT 4;
    偏移 offset
    # SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

    2.10、DISTINCT 关键字与 SELECT 语句一起使用,用于去除重复记录,只获取唯一的记录
    案例:SELECT DISTINCT name FROM COMPANY;


    2.11、PostgreSQL 约束用于规定表中的数据规则。
    PostgreSQL 中常用的约束。
    1、
    NOT NULL:指示某列不能存储 NULL 值。
    2、UNIQUE:确保某列的值都是唯一的。
              3、PRIMARY Key:NOT NULL 和 UNIQUE 的结合。
    确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
    4、FOREIGN Key: 保证一个表中的数据匹配另一个表中的值的参照完整性。
    5、CHECK: 保证列中的值符合指定的条件。
    6、EXCLUSION :排他约束,保证如果将任何两行的指定列或表达式使用指定操作符进行比较,
    至少其中一个操作符比较将会返回 false 或空值。
              CREATE TABLE COMPANY3(
                 ID INT PRIMARY KEY     NOT NULL,
                 NAME           TEXT    NOT NULL,
                 AGE            INT     NOT NULL UNIQUE,
                 ADDRESS        CHAR(50),
                 SALARY         REAL    DEFAULT 50000.00
               );

    2.12、删除约束
         ALTER TABLE table_name DROP CONSTRAINT some_name;


    三、
    PostgreSQL 高级
     
       3.1、别名

    SELECT C.ID, C.NAME, C.AGE, D.DEPT FROM COMPANY AS C, DEPARTMENT AS D WHERE C.ID = D.EMP_ID; 
       3.2、PostgreSQL 触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行/调用。

              PostgreSQL 触发器可以在下面几种情况下触发:

                          3.2.1、在执行操作之前(在检查约束并尝试插入、更新或删除之前)。

               3.2.2、 在执行操作之后(在检查约束并插入、更新或删除完成之后)。

                          3.2.3、更新操作(在对一个视图进行插入、更新、删除时)

                   语法:1、创建触发器时的基础语法如下

                                   CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF]

                                                   event_name ON table_name

                                                     [

                                                        -- 触发器逻辑....

                                                    ];

       
    案例:
    关键字 触发器名字
    # CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();
    
    
    CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$
       BEGIN
          INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
          RETURN NEW;
       END;
    $example_table$ LANGUAGE plpgsql;


    列出触发器:

    
    

       # SELECT * FROM pg_trigger;

    
    

    列举出特定表的触发器,语法如下:

    
    
    # SELECT tgname FROM pg_trigger, pg_class WHERE tgrelid=pg_class.oid AND relname='company';

    删除触发器

    # drop trigger example_trigger on company;
     
     
    3.3、索引 # d company 命令列出 COMPANY 表的所有索引:
    # CREATE INDEX salary_index ON COMPANY (salary);

               使用索引时,需要考虑下列准则:

        1、索引不应该使用在较小的表上。

        2、索引不应该使用在有频繁的大批量的更新或插入操作的表上。

        3、索引不应该使用在含有大量的 NULL 值的列上。

                  4、索引不应该使用在频繁操作的列上。




    3.4、PostgreSQL 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列。

       3.4.1、用 ALTER TABLE 在一张已存在的表上添加列的语法如下:

           ALTER TABLE table_name ADD column_name datatype;

         3.4.2、在一张已存在的表上 DROP COLUMN(删除列),语法如下:

          ALTER TABLE table_name DROP COLUMN column_name;

       3.4.3、修改表中某列的 DATA TYPE(数据类型),语法如下:

          ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;
    案例:# ALTER TABLE COMPANY ADD GENDER char(1);  添加列
    # ALTER TABLE COMPANY DROP GENDER; 删除列




    3.5、PostgreSQL 中 TRUNCATE TABLE 用于删除表的数据,但不删除表结构。
    TRUNCATE TABLE 与 DELETE 具有相同的效果,但是由于它实际上并不扫描表,所以速度更快。
    语法:TRUNCATE TABLE table_name;
    案例:TRUNCATE TABLE COMPANY;

    3.6、PostgreSQL 视图是只读的,因此可能无法在视图上执行 DELETE、INSERT 或 UPDATE 语句。
    但是可以在视图上创建一个触发器,当尝试 DELETE、INSERT 或 UPDATE 视图时触发,需要做的动作在触发器内容中定义。

       3.6.1、用户或用户组认为更自然或直观查找结构数据的方式。

       3.6.2 、限制数据访问,用户只能看到有限的数据,而不是完整的表。

       3.6.3、汇总各种表中的数据,用于生成报告。

    语法:

    CREATE [TEMP | TEMPORARY] VIEW view_name AS
    SELECT column1, column2.....
    FROM table_name
    WHERE [condition];

    案例:

    CREATE VIEW COMPANY_VIEW AS
    SELECT ID, NAME, AGE
    FROM  COMPANY;      --创建

    DROP VIEW view_name;--删除
    3.7、TRANSACTION(事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
    事务具有以下四个标准属性,通常根据首字母缩写为 ACID:
    • 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
    • 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
    • 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
    • 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
    
    
    BEGIN TRANSACTION:开始一个事务。
    COMMIT:事务确认,或者可以使用 END TRANSACTION 命令。
    ROLLBACK:事务回滚。
    
    回滚: #
    BEGIN; DELETE FROM COMPANY WHERE AGE = 25; ROLLBACK;

    提交: #
    BEGIN; DELETE FROM COMPANY WHERE AGE = 25; COMMIT;
    
    
    
    3.8、子查询
    SELECT * FROM COMPANY WHERE ID IN (SELECT ID FROM COMPANY  WHERE SALARY > 45000) ;
    
    

    3.9、权限

    https://www.runoob.com/postgresql/postgresql-privileges.html

    3.10、常用函数

    https://www.runoob.com/postgresql/postgresql-functions.html
    心有猛虎,细嗅蔷薇
  • 相关阅读:
    转载c++中的多态性
    sdk环境下数据库访问之ADO
    ADO数据库访问问题
    PopMenu 弹出式菜单(变灰,禁用,激活)
    控制台窗口界面控制设计
    判断整数序列是不是二元查找树的后序遍历结果
    把二元查找树转变成排序的双向链表
    二叉树平衡因子应用举例
    二元查找树转换为它的镜像
    满二叉树先序、中序和后序之间的转换
  • 原文地址:https://www.cnblogs.com/1314520xh/p/14730635.html
Copyright © 2011-2022 走看看