當建立一個資料表時,它不包含任何資料。在使用資料庫之前,首先要做的就是插入資料。資料一次插入一列。您也可以在單一指令中插入多列,但無法插入不完整的列。即使您只知道某些欄位的值,也必須建立一個完整的列。
要建立一個新的列,請使用 INSERT 指令。該指令需要資料表名稱和欄位值。例如,考慮來自第五章的產品資料表:
CREATE TABLE products ( product_no integer, name text, price numeric );
插入列的指令範例:
INSERT INTO products VALUES (1, 'Cheese', 9.99);
資料值依欄位在資料表中出現的順序列出,並以逗號分隔。通常,資料值會是字面值(常數),但也允許使用純量運算式。
上面的語法有一個缺點,就是您需要知道資料表中欄位的順序。為了避免這種情況,您也可以明確列出欄位。例如,以下兩個指令與上面的指令具有相同的效果:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99); INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);
許多使用者認為始終列出欄位名稱是一種好的做法。
如果您沒有所有欄位的值,您可以省略某些欄位。在這種情況下,這些欄位將會填入它們的預設值。例如:
INSERT INTO products (product_no, name) VALUES (1, 'Cheese'); INSERT INTO products VALUES (1, 'Cheese');
第二種形式是 PostgreSQL 的擴充功能。它從左側開始用給定的值填入欄位,其餘的欄位將使用預設值。
為了清楚起見,您也可以明確要求預設值,針對個別欄位或整個列:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT); INSERT INTO products DEFAULT VALUES;
您可以在單一指令中插入多列:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);
也可以插入查詢的結果(可能是零列、一列或多列):
INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';
這提供了完整的 SQL 查詢機制 (第七章) 來計算要插入的列。
如果您在文件中看到任何不正確的內容、與您使用特定功能的經驗不符或需要進一步澄清,請使用此表格來報告文件問題。