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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM