PostgreSQL基本使用方法

PostgreSQL 概述

PostgreSQL 是一個免費的對象-關(guān)系數(shù)據(jù)庫服務(wù)器(ORDBMS),PostgreSQL 的 Slogan 是 "世界上最先進(jìn)的開源關(guān)系型數(shù)據(jù)庫"。

  • 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS):所謂的關(guān)系型數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。
  • 對象關(guān)系數(shù)據(jù)庫系統(tǒng)(ORDBMS):是面向?qū)ο蠹夹g(shù)與傳統(tǒng)的關(guān)系數(shù)據(jù)庫相結(jié)合的產(chǎn)物,將所有實體都看著對象,并將這些對象類進(jìn)行封裝。OODBMS 對象關(guān)系數(shù)據(jù)庫在實質(zhì)上還是關(guān)系數(shù)據(jù)庫 。

參考:https://www.runoob.com/postgresql/postgresql-create-table.html

PostgreSQL 涉及術(shù)語

1.數(shù)據(jù)庫: 數(shù)據(jù)庫是一些關(guān)聯(lián)表的集合。
2.數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個數(shù)據(jù)庫中的表看起來像一個簡單的電子表格。
3.列:一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
4.行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
5.冗余:存儲兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
6.主鍵:主鍵是唯一的。一個數(shù)據(jù)表中只能包含一個主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
7.外鍵:外鍵用于關(guān)聯(lián)兩個表。
8.復(fù)合鍵:復(fù)合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復(fù)合索引。
9.索引:使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
10.參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實體。與實體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
11.函數(shù):通過函數(shù),可以在數(shù)據(jù)庫服務(wù)器端執(zhí)行指令程序。
12.索引:用戶可以自定義索引方法,或使用內(nèi)置的 B 樹,哈希表與 GiST 索引。
13.觸發(fā)器:觸發(fā)器是由SQL語句查詢所觸發(fā)的事件。如:一個INSERT語句可能觸發(fā)一個檢查數(shù)據(jù)完整性的觸發(fā)器。觸發(fā)器通常由INSERT或UPDATE語句觸發(fā)。
14..規(guī)則:規(guī)則(RULE)允許一個查詢能被重寫,通常用來實現(xiàn)對視圖(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
15.數(shù)據(jù)類型:包括文本、任意精度的數(shù)值數(shù)組、JSON 數(shù)據(jù)、枚舉類型、XML 數(shù)據(jù)等。
16.全文檢索:通過 Tsearch2 或 OpenFTS,8.3版本中內(nèi)嵌 Tsearch2。
17.NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數(shù)據(jù)庫的外部數(shù)據(jù)包裝器。
18.數(shù)據(jù)倉庫:能平滑遷移至同屬 PostgreSQL 生態(tài)的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進(jìn)行 ETL。


PostgreSQL總體操作

1.PostgreSQL 創(chuàng)建數(shù)據(jù)庫
  • 使用 CREATE DATABASE SQL 語句來創(chuàng)建。
    CREATE DATABASE dbname;


    創(chuàng)建數(shù)據(jù)庫
2.PostgreSQL 選擇數(shù)據(jù)庫
  • 使用 \l 用于查看已經(jīng)存在的數(shù)據(jù)庫:
  • 使用 \c + 數(shù)據(jù)庫名 來進(jìn)入數(shù)據(jù)庫:


    選擇數(shù)據(jù)庫
3. PostgreSQL 刪除數(shù)據(jù)庫
  • 使用 DROP DATABASE SQL 語句來刪除。

DROP DATABASE 會刪除數(shù)據(jù)庫的系統(tǒng)目錄項并且刪除包含數(shù)據(jù)的文件目錄。
DROP DATABASE 只能由超級管理員或數(shù)據(jù)庫擁有者執(zhí)行。
DROP DATABASE 命令需要在 PostgreSQL 命令窗口來執(zhí)行,語法格式如下:
DROP DATABASE [ IF EXISTS ] name

參數(shù)說明:

  • IF EXISTS:如果數(shù)據(jù)庫不存在則發(fā)出提示信息,而不是錯誤信息。
  • name:要刪除的數(shù)據(jù)庫的名稱。
4.PostgreSQL 創(chuàng)建表格
  • CREATE TABLE 語法格式如下:
CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( 一個或多個列 )
);

以下創(chuàng)建了一個表,表名為 COMPANY 表格,主鍵為 ID,NOT NULL 表示字段不允許包含 NULL 值:

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

我們可以使用 \d 命令來查看表格是否創(chuàng)建成功:


創(chuàng)建表格
5.PostgreSQL 刪除表格
  • PostgreSQL 使用 DROP TABLE 語句來刪除表格,包含表格數(shù)據(jù)、規(guī)則、觸發(fā)器等,所以刪除表格要慎重,刪除后所有信息就消失了。
    DROP TABLE 語法格式如下:
DROP TABLE table_name;
刪除表格
5.PostgreSQL 模式(SCHEMA)

PostgreSQL 模式(SCHEMA)可以看著是一個表的集合。一個模式可以包含視圖、索引、數(shù)據(jù)類型、函數(shù)和操作符等。相同的對象名稱可以被用于不同的模式中而不會出現(xiàn)沖突,例如 schema1 和 myschema 都可以包含名為 mytable 的表。
使用模式的優(yōu)勢:

  • 允許多個用戶使用一個數(shù)據(jù)庫并且不會互相干擾。
  • 將數(shù)據(jù)庫對象組織成邏輯組以便更容易管理。
  • 第三方應(yīng)用的對象可以放在獨立的模式中,這樣它們就不會與其他對象的名稱發(fā)生沖突。
  • 模式類似于操作系統(tǒng)層的目錄,但是模式不能嵌套。

我們可以使用 CREATE SCHEMA 語句來創(chuàng)建模式,語法格式如下:

create schema myschema

在該模式下創(chuàng)建表格語法:

CREATE SCHEMA myschema.mytable (
...
);
實例:
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)
);
模式(SCHEMA)
刪除模式

刪除一個為空的模式(其中的所有對象已經(jīng)被刪除):

DROP SCHEMA myschema;

刪除一個模式以及其中包含的所有對象:

DROP SCHEMA myschema CASCADE;

PostgreSQL 增刪改查

1.插入數(shù)據(jù)

PostgreSQL INSERT INTO 語句用于向表中插入新記錄。
我們可以插入一行也可以同時插入多行。
INSERT INTO 語句語法格式如下:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

  • column1, column2,...columnN 為表中字段名。
  • value1, value2, value3,...valueN 為字段對應(yīng)的值。
    ps:在使用 INSERT INTO 語句時,字段列必須和數(shù)據(jù)值數(shù)量相同,且順序也要對應(yīng)。如果我們向表中的所有字段插入值,則可以不需要指定字段,只需要指定插入的值即可:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13'); 
忽略 SALARY 字段:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,JOIN_DATE) VALUES (2, 'Allen', 25, 'Texas', '2007-12-13');
入多行:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (3, 'Teddy', 23, 'Norway', 20000.00, DEFAULT );
插入數(shù)據(jù)
2.查找數(shù)據(jù)

PostgreSQL SELECT 語句用于從數(shù)據(jù)庫中選取數(shù)據(jù)。語句語法格式如下:

SELECT column1, column2,...columnN FROM table_name;

查找數(shù)據(jù)
3.更改數(shù)據(jù)

如果我們要更新在 PostgreSQL 數(shù)據(jù)庫中的數(shù)據(jù),我們可以用 UPDATE 來操作,以下是 UPDATE 語句修改數(shù)據(jù)的通用 SQL 語法:

UPDATE table_name

SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

  • 我們可以同時更新一個或者多個字段。
  • 我們可以在 WHERE 子句中指定任何條件。


    更改數(shù)據(jù)
4.刪除數(shù)據(jù)

你可以使用 DELETE 語句來刪除 PostgreSQL 表中的數(shù)據(jù),以下是 DELETE 語句刪除數(shù)據(jù)的通用語法:

DELETE FROM table_name WHERE [condition];

刪除數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容