當建立一個表格時,它不包含任何資料。在資料庫能被有效使用之前,第一件事就是插入資料。資料一次插入一列。您也可以在單一指令中插入多列,但無法插入非完整的列。即使您只知道某些欄位的值,也必須建立完整的列。
要建立新列,請使用 INSERT 指令。該指令需要表格名稱和欄位值。例如,考慮第 5 章中的 products 表格
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 查詢機制 (第 7 章) 的全部功能。
如果您在文件中發現任何不正確的地方,或與您使用特定功能的經驗不符,或需要進一步澄清,請使用此表單來報告文件問題。