?
This document uses PHP Chinese website manual Release
在創(chuàng)建完一個(gè)表的時(shí)候,它里面沒有數(shù)據(jù)。在數(shù)據(jù)庫可以有點(diǎn)用處之前要做的第一件事就是向里面插入數(shù)據(jù)。 數(shù)據(jù)在概念上是每次插入一行。我們當(dāng)然可以每次插入多行,但是確實(shí)沒有辦法插入少于一行的數(shù)據(jù)。 即使你只知道幾個(gè)字段的數(shù)值,那么你也必須創(chuàng)建一個(gè)完整的行。
使用INSERT命令創(chuàng)建一個(gè)新行。這條命令要求提供表名字以及列值。比如,假設(shè)來自Chapter 5的產(chǎn)品表:
CREATE TABLE products ( product_no integer, name text, price numeric );
下面是一個(gè)向表中插入一行的例子:
INSERT INTO products VALUES (1, 'Cheese', 9.99);
數(shù)據(jù)值是按照這些字段在表中出現(xiàn)的順序列出的,并且用逗號分隔。通常,數(shù)據(jù)值是文本(常量),但也允許使用標(biāo)量表達(dá)式。
上述語法的缺點(diǎn)是你必須知道表中字段的順序。你也可以明確地列出字段以避免這個(gè)問題。比如,下面的兩條命令都和上面的那條命令效果相同:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99); INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);
許多用戶認(rèn)為明確列出字段名是個(gè)好習(xí)慣。
如果你不知道所有字段的數(shù)值,那么可以省略其中的一些。這時(shí)候,這些未知字段將被填充為它們的缺省值。比如:
INSERT INTO products (product_no, name) VALUES (1, 'Cheese'); INSERT INTO products VALUES (1, 'Cheese');
第二種形式是PostgreSQL的一個(gè)擴(kuò)展。它從左向右填充字段,剩余的填充缺省值。
為了保持清晰,你也可以對獨(dú)立的字段或者整個(gè)行明確使用缺省值:
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);
Tip: 要一次插入大量數(shù)據(jù),可以看看COPY命令。它不像INSERT命令那么靈活,但是更高效。 參考Section 14.4獲取更多有關(guān)裝載海量數(shù)據(jù)的信息。