在創建完一個表的時候,它里面沒有數據。在數據庫可以有點用處之前要做的第一件事就是向里面插入數據。數據在概念上是每次插入一行。我們當然可以每次插入多行,但是確實沒有辦法插入少於一行的數據。即使你只知道幾個字段的數值,那么你也必須創建一個完整的行。
使用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);
