insert 用來將行插入(或新增)到資料庫表。
插入有幾種方式:
插入完整的行;
插入行的一部分;
插入某些查詢的結果。
使用insert語句可能需要客戶端/伺服器dbms中的特定安全許可權。在試圖使用insert前,應該保證自己有足夠的安全許可權。1. 插入完整的行
insert
into customers
values('1000000006',
'toy land',
'123 any street',
'new york',
'ny',
'11111',
'usa',
null,
null);
各列必須以它們在表中出現的次序填充。
into關鍵字:在某些sql實現中,跟在insert之後的into關鍵字是可選的。
編寫insert語句的更安全(不過更煩瑣)的方法如下:
insert
into customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
values('1000000006',
'toy land',
'123 any street',
'new york',
'ny',
'11111',
'usa',
null,
null);
注意:因為提供了列名,values必須以其指定的次序匹配指定的列名,不一定按各列出現在表中的實際次序。其優點是,即使表的結構改變,這條insert語句仍然能正確工作。
insert
into customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip)
values('1000000006',
null,
null,
'toy land',
'123 any street',
'new york',
'ny',
'11111');
總是使用列的列表
一般不要使用沒有明確給出列的insert語句。給出列能使sql**繼續發揮作用,即使表結構發生了變化。
2. 插入部分行
使用insert的推薦方法是明確給出表的列名。使用這種語法,還可以省略列,這表示可以只給某些列提供值,給其他列不提供值。
insert
into customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values('1000000006',
'toy land',
'123 any street',
'new york',
'ny',
'11111',
'usa');
省略列
如果表的定義允許,則可以在insert操作中省略某些列。省略的列必須滿足以下某個條件:
該列定義為允許null值(無值或空值)。
在表定義中給出預設值。這表示如果不給出值,將使用預設值。
如果對錶中不允許null值且沒有預設值的列不給出值,dbms將產生錯誤訊息,並且相應的行插入不成功。
不管使用哪種insert語法,values的數目都必須正確。如果不提供列名,則必須給每個表列提供乙個值;如果提供列名,則必須給列出的每個列乙個值。否則,就會產生一條錯誤訊息,相應的行不能成功插入。
3. 插入檢索出的資料
利用insert將select語句的結果插入表中,這就是所謂的insert select。顧名思義,它是由一條insert語句和一條select語句組成。
-- 把另一表中的顧客列合併到customers表中。不需要每次讀取一行再將它用insert插入
insert
into customers(cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
select cust_id,
cust_contact,
cust_email,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
from custnew;
如果custnew表為空,則沒有行被插入(也不產生錯誤,因為操作仍然是合法的)。如果這個表確實有資料,則所有資料將被插入到customers。
insert select中的列名
dbms一點兒也不關心select返回的列名。它使用的是列的位置,因此select中的第一列(不管其列名)將用來填充表列中指定的第一列,第二列將用來填充表列中指定的第二列,如此等等。
插入多行
insert通常只插入一行。要插入多行,必須執行多個insert語句。insert select是個例外,它可以用一條insert插入多行,不管select語句返回多少行,都將被insert插入。
4. 從乙個表複製到另乙個表
select into語句:將乙個表的內容複製到乙個全新的表(執行中建立的表)。
db2不支援這裡描述的select into。insert select 與 select into
它們之間的乙個重要差別是前者匯出資料,而後者匯入資料。
-- 建立乙個名為custcopy的新錶,並把customers表的整個內容複製到新錶中
select * into custcoty from customers;
-- mariadb、mysql、oracle、postgresql和sqlite所使用的語法
create
table custcopy as
select * from customers;
select使用*萬用字元:匯入所有資料。
select使用列名:匯入部分的列。
使用select into複製表,可在複製的資料上測試sql**,而不會影響實際的資料。
注意:
1. 資料庫字串使用單引號。
2. 資料庫大小寫不敏感。
3. cuid演算法是一種可以產生唯一標識的高效演算法,它使用網絡卡mac,位址,奈米級時間、晶元id等算出來的:select newid();
excel資料生成sql insert語句
excel 中有a b c三列資料,希望匯入到資料庫users表中,對應的字段分別是name,age 在你的excel 中增加一列,利用excel的公式自動生成sql語句,方法如下 1 增加一列 d列 2 在第一行的d列,就是d1中輸入公式 concatenate insert into users...
excel資料生成sql insert語句
excel資料生成sql insert語句 excel 中有a b c三列資料,希望匯入到資料庫users表中,對應的字段分別是name,age 在你的excel 中增加一列,利用excel的公式自動生成sql語句,方法如下 1 增加一列 d列 2 在第一行的d列,就是d1中輸入公式 concate...
根據資料庫生成 sql insert 資料
create procedure dbo.uspoutputdata tablename sysname as declare column varchar 1000 declare columndata varchar 1000 declare sql varchar 4000 declare x...