向PostgreSQL插入數據


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

使用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命令那么靈活,但是更高效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM