標籤:
在建立完一個表的時候,它裡面沒有資料。在資料庫可以有點用處之前要做的第一件事就是向裡面插入資料。資料在概念上是每次插入一行。我們當然可以每次插入多行,但是確實沒有辦法插入少於一行的資料。即使你只知道幾個欄位的數值,那麼你也必須建立一個完整的行。
使用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);
提示: 要一次插入大量資料,可以看看COPY命令。它不像INSERT命令那麼靈活,但是更高效。
向PostgreSQL插入資料