如何優化用sql語句insert

2021-10-05 13:03:38 字數 5850 閱讀 9757

1樓:小舅舅有點帥

插入書寫方式:

1、 insert into t1(field1,field2) value(‘001‘,‘002‘);

最好的做法明確插入的每一列,列於查錯,而且漏列的機率會降低。

2、insert into t1 (field1,field2) values (‘001‘,‘002‘),(‘003‘,‘004‘)......;

能夠批量插入資料最好批量插入,但是資料過於龐大時,最好分批次批量插入。

3、insert into t2 (field1,field2) select col1,col2 from t1 where ……;

這裡由於可以指定插入到talbe2中的列,以及可以通過相對較複雜的查詢語句進行資料來源獲取,可能使用起來會更加的靈活,但我們也必須注意,在指定目標表的列時,一定要將所有非空列都填上,否則將無法進行資料插入。

容易出錯的地方,當我們寫成如下方式3的變形簡寫格式:

變形:  insert into t2 select id, name, address from t1。

此時,如果略掉了目標表的列的話,則預設會對目標表的全部列進行資料插入,且select後面的列的順序 必須和目標表中的列的定義順序完全一致 才能完成正確的資料插入,這是一個很容易被忽略的地方,值得注意。

擴充套件資料

[ with [ ,...n ] ]insert [ ,...n ] ) [ ,...n     ]

| derived_table

| execute_statement

| | default values

}[;]

在該結構中,insert為該語句的實際操作,into關鍵字無真正含義,目的是為增強這個語句的可讀性。into關鍵字為可選,建議在語句中加入該關鍵字。在使用entity framework新增資料時,執行的insert語句是沒有使用into關鍵字的。

2樓:闕亙

方式1、 insert into t1(field1,field2) value(v001,v002);            // 明確只插入一條value

方式2、 insert into t1(field1,field2) values(v101,v102),(v201,v202),(v301,v302),(v401,v402);

在插入批量資料時方式2優於方式1.

方式3.1、  insert into t2(field1,field2) select col1,col2 from t1 where ……

由於可以指定插入到talbe2中的列,以及可以通過相對較複雜的查詢語句進行資料來源獲取,可能使用起來會更加的靈活一些,但我們也必須注意,我們在指定目標表的列時,一定要將所有非空列都填上,否則將無法進行資料插入,還有一點比較容易出錯的地方就是,當我們寫成如下簡寫格式:

方式3.2、  insert into t2 select id, name, address from t1

此時,如果略掉了目標表的列的話,則預設會對目標表的全部列進行資料插入,且select後面的列的順序 必須和目標表中的列的定義順序完全一致 才能完成正確的資料插入,這是一個很容易被忽略的地方,值得注意。

擴充套件資料

sql中insert into 語句

insert into 語句

insert into 語句用於向**中插入新的行。

語法insert into 表名稱 values (值1, 值2,....)

我們也可以指定所要插入資料的列:

insert into table_name (列1, 列2,...) values (值1, 值2,....)

插入新的行

"persons" 表:

sql 語句:

insert into persons values ('gates', 'bill', 'xuanwumen 10', 'beijing')

在指定的列中插入資料

"persons" 表:

sql 語句:

insert into persons (lastname, address) values ('wilson', 'champs-elysees')

3樓:匿名使用者

這只是插入

insert into 表名(i_text,i_insert) values(abc,aaa)

insert into 表名(i_text,i_insert) values(abc,bbb)

insert into 表名(i_text,i_insert) values(abc,ccc)

照你的題目來看,好像是要把

1 abc

2 abc

3 abc

修改為1 abc aaa

2 abc bbb

3 abc ccc

那麼、得用update語句

update 表名 set i_insert='aaa' where i_id=1

update 表名 set i_insert='bbb' where i_id=1

update 表名 set i_insert='ccc' where i_id=1

4樓:要淡定

25 insert into 語句怎麼寫?(sqlserver)

我的表的資料如下:i_id(自動編號)i_text(varchar50)i_insert(varchar50)1abc2abc3abc然後我的具體要求如下:怎樣使用insert語句插入資料?

效果如下:i_id(自動編號)i_text(varchar50)i_insert(varchar50)1abcaaa2abcbbb3abcccc

5樓:匿名使用者

nsert into select from where 應該是這樣的語法結構,你的基礎還需要加強啊

6樓:匿名使用者

insert into 表名(i_text,i_insert) values('abc','aaa')

insert into 表名(i_text,i_insert) values('abc','bbb')

insert into 表名(i_text,i_insert) values('abc','ccc')

你這樣插入就對了。試試看吧!!!!!

7樓:

好象不能用insert 插入哦,用insert 應該是插入一個新的記錄,可以用update語句

update 表名 set i_insert='aaa' where i_id=1

update 表名 set i_insert='bbb' where i_id=2

update 表名 set i_insert='ccc' where i_id=3

8樓:

update 表名 set i_insert='aaa' where i_id=1

update 表名 set i_insert='bbb' where i_id=2

update 表名 set i_insert='ccc' where i_id=3

9樓:

沒太看懂你的意思 但不知你說的是通用的程式 還是什麼?

細說一下吧。。。

如何優化sql語句?

10樓:匿名使用者

1 儘可能建立索引,包括條件列,連線列,外來鍵列 等2 儘可能讓where中的列順序與複合索引的列順序一致3 儘可能不要select *,而只列出自己需要的欄位列表4 儘可能減少子查詢的層數

5 儘可能在子查詢中進行資料篩選 ...

insert into在sql語句中怎麼用,舉例子說明

11樓:匿名使用者

下面的例子開啟 employee 表並新增一條記錄。

insert into employee (emp_no, fname, lname, officeno) ;

values (3022, "john", "smith", 2101)

emp_no, fname, lname, officeno 是 employee 表的欄位名,3022, "john", "smith", 2101 是對應欄位的值。

12樓:唐城冬

insert into 表名(欄位名1,欄位名2...)values(值1,值2...)

insert into 表名(欄位名1,欄位名2...)select 欄位名1,欄位名2... from 表2

13樓:匿名使用者

--向user表裡插入id、name資料insert into user(id,name) values(1,'marker');

14樓:熱愛資料庫的同學

insert into 語句用法insert into 語句用於向表中插入新記錄。

insert into 語句可以有兩種編寫形式。

第一種形式無需指定要插入資料的列名,只需提供被插入的值即可:

第二種形式需要指定列名及被插入的值:

假設我們要向 “websites” 表中插入一個新行。我們可以使用下面的 sql 語句:

from 樹懶學堂-免費資料知識學習平臺

關於insert into 裡,帶條件判斷的sql語句怎麼寫?

15樓:四舍**入

1、方法一

if not exists(select * from table_name where filed1 = 1 ) then

insert into table_name values(1

2、將要插入的資料先寫入臨時表,然後用

insert into table_name

select * from #temp_table a left join table_name on a.filed1 = b.field1 where

b.filed1 is null

擴充套件資料:

基本語句

1、資料記錄篩選:

sql="select * from 資料表 where欄位名 = 欄位值 order by 欄位名[desc]"(按某個欄位值降序排列,預設升序asc)。

sql="select * from 資料表 where 欄位名 like '%欄位值%' order by 欄位名 [desc]"

sql="select top 10 * from 資料表 where欄位名=欄位值 order by 欄位名 [desc]"

sql="select * from 資料表 where欄位名 in ('值1','值2','值3')"

sql="select * from 資料表 where 欄位名 between 值1 and 值2"

sql="select 列名1,列名2 from 資料表 where 欄位名=欄位值 group by 列名1,列名2 " (group by 用來分組,並且只有出現自group by 中的列名,才允許出現在select 語句中)。

2、更新資料記錄:

sql="update 資料表 set欄位名=欄位值 where 條件表示式"

sql="update 資料表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表示式"

3、刪除資料記錄:

sql="delete from 資料表 where 條件表示式"

sql="delete from 資料表" (將資料表所有記錄刪除)

sql語句求優化,聽說NOT IN語句不好求優化

還要注意是在哪一種資料庫管理系統中,有些就不支援minus,不過not exists應該都支援。select name from test1 a where not exists select from test2 b where b.name admin and b.name a.name sql...

sql語句修改欄位長度,sql語句如何修改欄位長度

oracle下這麼執行 alter table member modify phone char 15 sqlserver下這麼執行 alter table member alter column phone char 15 你到底用什麼庫 sql server修改表的欄位長度的語法規則及示例如下 ...

SQL語句如何rollback

rollback是針對事務的,你如果沒有在執行語句之前開啟事務,那麼無法rollback,建議你還是想別的辦法吧,事務語句如下 sqlserver的給你借鑑 開啟事務 begin tran 執行操作 update accounts user p set telphone 123456 where u...