如何優化用sql語句insert

時間 2021-10-14 22:31:35

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樓:四舍**入

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 資料表" (將資料表所有記錄刪除)

12樓:

insert into table_name values() 這個語句是不能做判斷的,但可以建議你下面的語法實現:

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

insert into table_name values(1);

或者將你要插入的資料先寫入臨時表,然後用

insert into table_nameselect * from #temp_table a left join table_name on a.filed1 = b.field1 where b.

filed1 is null

mysql求大神優化sql語句

可以這樣寫成只使用1個子查詢 select a.b.d as day num,b.m as month num,b.y as year num from watersku a,select sum b.num as y,sum case when date format b.add time,y m...

sql語句如何刪除列,SQL語句如何刪除列?

小丁創業 方法和詳細的操作步驟如下 1 第一步,開啟資料庫管理平臺軟體 sql server management studio 見下圖,轉到下面的步驟。2 第二步,執行完上面的操作之後,驗證身份並連線到資料庫 見下圖,轉到下面的步驟。3 第三步,執行完上面的操作之後,右鍵單擊 student 修改...

sql語句如何寫,sql語句如何寫

簡單的幾個 查詢 select 欄位 from 表名 where 條件增加 insert into 表名 values 欄位 欄位型別 修改 update 表名 set 欄位 多少 where 條件刪除 delete from 表名 where 條件還有什麼 alter啊什麼什麼的。還要看你用的什麼...