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