SQL之数据插入
文章目錄
- 數據插入
- 一、插入完整的行
- 二、插入部分行
- 三、插入檢索出的數據
- 四、從一個表復制到另一個表
- 總結
數據插入
 1、插入完整的行
 2、插入部分行
 3、插入某些查詢的結果 
一、插入完整的行
關鍵字:INSERT INTO xxxx VALUES()
 表名:customers
 代碼如下:
 方法1(這種方法不安全,因為要記住表中的列的次序)
方法2(繁瑣但安全且在表的列次序變化的情況下也適用)
INSERT INTO customers(cust_id, cust_name, cust_city, cust_country) VALUES('10001', 'TOY LAND', 'NEW YORK', 'USA')注意:不管使用哪種INSERT語法,VALUES的數目都必須正確。如果不提供列名,則必須給每個表列提供一個值;如果提供列名,則必須給列出的每個列一個值。否則,就會產生一條錯誤消息,相應的行不能成功插入。
二、插入部分行
在上述推薦插入行的方法中,建議明確給出列名,使用這種語法,還可以省略列,但是要符合一些前提條件:
- 該列定義為允許NULL值(無值或空值)。
- 在表定義中給出默認值。這表示如果不給出值,將使用默認值。
- 如果表中不允許有NULL值或者默認值,這時卻省略了表中的值,DBMS就會產生錯誤消息,相應的行不能成功插入。
 例如要給customers表中的插入一行只有的id和名字的行,如下:
三、插入檢索出的數據
INSERT 可用來插入一行語句,如果想從其他表中將多行數據插入,可結合SELECT 語句,如下:
INSERT INTO customers(cust_id, cust_name, cust_city, cust_country) SELECT cust_id, cust_name, cust_city, cust_country FROM custnew;注意:
- 插入的新的行的主鍵不能與表中的主鍵相同;
- select 中的列名不一定一定要與原表的相同;
- INSERT SELECT中SELECT語句可以包含WHERE子句,以過濾插入的數據;
- INSERT通常只插入一行。要插入多行,必須執行多個INSERT語句。INSERT SELECT是個例外,它可以用一條INSERT插入多行,不管SELECT語句返回多少行,都將被INSERT插入。
四、從一個表復制到另一個表
關鍵字:select into
- 與INSERT SELECT將數據添加到一個已經存在的表不同,SELECT INTO將數據復制到一個新表(有的DBMS可以覆蓋已經存在的表,這依賴于所使用的具體DBMS)。
- insert select 與 select into 的重要區別還在于前者是插入數據,后者是導出數據。
這條語句創建了新的表,并把customers中的數據全部復制到custcopy中去。但是MySQL的語法稍微不同,如下:
CREATE TABLE custcopy AS SELECT * FROM customers;- 任何SELECT選項和子句都可以使用,包括WHERE和GROUPBY;
- 可利用聯結從多個表插入數據;
- 不管從多少個表中檢索數據,數據都只能插入到一個表中。
總結
本文主要是SQL必知必會的知識點,學習過程中所作的筆記;
總結
 
                            
                        - 上一篇: Linux 开发者最应该知道的命令汇总
- 下一篇: Android内核学习笔记
