㈠ 如何優化用sql語句INSERT INTO
如何優化用SQL語句INSERT INTO
T-SQL腳本優化技巧:
1)對於SELECT/UPDATE語句必須顯示的定義所有的列,避免使用星號。
2)在執行SELECT/INSERT/UPDATE/DELETE語句時,請考慮執行規劃的重用,盡量考慮用SP-EXECUTESQL存儲過程。
3)優先使用 SELECT...INTO,然後使用 INSERT...SELECT,以避免大量死鎖。
4)如果需要刪除所有的數據,用TRUNCATE TABLE 代替DELETE 。
5)避免使用DISTINCT 語句。
6)如果你需要有限的記錄,通過TOP N代替SET ROWCOUNT來控制排序取值。
7)避免使用SARGABLE的語句在WHERE子句,比如: OR, <>, !=, !<, >!, IS NULL, NOT, NOT IN, NOT LIKE 和LIKE,因為這些操作很難利用已知的索引。
8)避免使用NOT IN,可以採用IN,EXISTS NOT EXISTS和LEFT JOIN 加空值判斷
--NOT EXISTS, 效率最高 SELECT a.hdr_key
FROM hdr_tbl a
WHERE NOT EXISTS (SELECT * FROM dtl_tbl b WHERE a.hdr_key = b.hdr_key) --LEFT JOIN SELECT a.hdr_key
FROM hdr_tbl a
LEFT JOIN dtl_tbl b ON a.hdr_key = b.hdr_key
WHERE b.hdr_key IS NULL --NOT IN ,效率最低 SELECT hdr_key
FROM hdr_tbl
WHERE hdr_key NOT IN (SELECT hdr_key FROM dtl_tbl) 9)使用EXISTS判斷記錄是否存在。
--不好的寫法: IF (SELECT COUNT(*) FROM table_name WHERE column_name = 'xxx') --正確的寫法: IF EXISTS (SELECT * FROM table_name WHERE column_name = 'xxx') 10)避免在GROUP BY中使用HAVING 語句。
11)GROUP BY的語句要盡量簡單,不要進行GROUP BY語句的嵌套,避免在GROUP BY中包含多餘的列
考慮在GROUP BY的列,進行ORDER BY排序,特別在多用戶的環境下。
12)如果需要在一個包含JOIN的SELECT語句進行GROUP BY,請考慮用子查詢代替JOIN. 如果必須使用GROUP BY, GROUP BY 的應該列在同一張表。
13)如果WHERE條件語句有多個AND條件,請確保至少有一個列有索引,如果沒有可以建立多列復合INDEX。
14)對於SQL 無法執行自動優化的WHERE條件語句,可以通過HINTS顯示的制定INDEX來提高查詢的效率。
--可能不好的寫法: SELECT * FROM tblTaskProcessesWHERE nextprocess = 1 AND processid IN (8,32,45) --正確的寫法: SELECT * FROM tblTaskProcesses (INDEX = IX_ProcessID)WHERE nextprocess = 1 AND processid IN (8,32,45) 15)盡可能避免在WHERE條件語句中使用函數計算。
--不好的寫法: WHERE SUBSTRING(firstname,1,1) = 'm' --正確的寫法: WHERE firstname like 'm%' 16)在WHERE條件語句中,避免在函數中包列,如果無法避免,請考慮在該列建立INDEX。
㈡ mysql 有關 insert into set的問題
insert into set為mysql的擴展語法,適合插入單行
insert into value 為標准SQL語法,能一次插入多行數據
㈢ SQL語句 怎麼把一個表的數據復制到另外一個表裡面
1、復制舊表的數據到新表(假設兩個表結構一樣)
INSERT
INTO
新表
SELECT
*
FROM
舊表
2、復制舊表的數據到新表(假設兩個表結構不一樣)
INSERT
INTO
新表(欄位1,欄位2,.......)
SELECT
欄位1,欄位2,......
FROM
舊表
3、復製表結構及數據到新表
select
*
into
目標表名
from
源表名(要求目標表不存在,因為在插入時會自動創建)
4、只復製表結構到新表
CREATE
TABLE
新表
SELECT
*
FROM
舊表
WHERE
1=2
即:讓WHERE條件不成立.
(3)sqlinsertintoset擴展閱讀
基本SQL語句
1、數據表的建立
CREATE
TABLE
數據表名稱(欄位1
類型1(長度),欄位2
類型2(長度)
……
)
2、
數據記錄篩選
sql="select
*
from
數據表
where欄位名=欄位值
order
by欄位名[desc]"
3、更新數據記錄
sql="update
數據表
set欄位名=欄位值
where
條件表達式"
4、刪除數據記錄
sql="delete
from
數據表
where
條件表達式"
5、
添加數據記錄
sql="insert
into
數據表
(欄位1,欄位2,欄位3
…)
values
(值1,值2,值3
…)"
參考資料來源:網路-SQL
㈣ insert into 語句怎麼寫(Sqlserver)
插入書寫方式:
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後面的列的順序 必須和目標表中的列的定義順序完全一致 才能完成正確的數據插入,這是一個很容易被忽略的地方,值得注意。
(4)sqlinsertintoset擴展閱讀
結構化查詢語言(SQL)語句結構
結構化查詢語言的3個部分:
一:數據查詢語言(DQL:Data Query Language)
其語句,也稱為「數據檢索語句」,用以從表中獲得數據,確定數據怎樣在應用程序給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其他類型的SQL語句一起使用。
二:數據操作語言(DML:Data Manipulation Language)
其語句包括動詞INSERT,UPDATE和DELETE。它們分別用於添加,修改和刪除表中的行。也稱為動作查詢語言。
三:事務處理語言(TPL)
它的語句能確保被DML語句影響的表的所有行及時得以更新。TPL語句包括BEGIN TRANSACTION,COMMIT和ROL
㈤ sql命令INSERT INTO欄位太多應該怎麼寫
字元串不長,我寫過更長的。
願意的話也可以分成兩個變數,如:
sq1="INSERT INTO 會員(帳號,密碼,問題,答案,email,公司名稱,經營范圍,聯系人,電話,傳真,即時通訊工具,網址,省份,城市,地址,簡介,幣,上次登陸時間) VALUES('"
sq2=sq1+"&session("user")&"','"&session("pass")&"','"&session("tswt")&"','"&session("tsda")&"','"&session("email")&"','"&request("gsmc")&"','"&request("jyfw")&"','"&request("lxr")&"','"&request("dh")&"','"&request("cz")&","&request("qqmsn")&"','"&request("webhttp")&"','"&request("province")&"','"&request("city")&"','"&request("newlocation")&"','"&request("gsjj")&"',100,'"&now()&"')"
排錯最好是先輸出一下sql的值,看看沒錯了,再執行下一步。
㈥ sql2000的insert,select,update和delete命令使用
(1)數據記錄篩選:
sql="select*from數據表where欄位名=欄位值orderby欄位名[desc]"
sql="select*from數據表where欄位名like'%欄位值%'orderby欄位名[desc]"
sql="selecttop10*from數據表where欄位名orderby欄位名[desc]"
sql="select*from數據表where欄位名in('值1','值2','值3')"
sql="select*from數據表where欄位名between值1and值2"
(2)更新數據記錄:
sql="update數據表set欄位名=欄位值where條件表達式"
sql="update數據表set欄位1=值1,欄位2=值2……欄位n=值nwhere條件表達式"
(3)刪除數據記錄:
sql="deletefrom數據表where條件表達式"
sql="deletefrom數據表"(將數據表所有記錄刪除)
(4)添加數據記錄:
sql="insertinto數據表(欄位1,欄位2,欄位3…)values(值1,值2,值3…)"
sql="insertinto目標數據表select*from源數據表"(把源數據表的記錄添加到目標數據表)
(5)數據記錄統計函數:
AVG(欄位名)得出一個表格欄平均值
COUNT(*|欄位名)對數據行數的統計或對某一欄有值的數據行數統計
MAX(欄位名)取得一個表格欄最大的值
MIN(欄位名)取得一個表格欄最小的值
SUM(欄位名)把數據欄的值相加
引用以上函數的方法:
sql="selectsum(欄位名)as別名from數據表where條件表達式"
setrs=conn.excute(sql)
用rs("別名")獲取統的計值,其它函數運用同上。
(5)數據表的建立和刪除:
CREATETABLE數據表名稱(欄位1類型1(長度),欄位2類型2(長度)……)
㈦ SQL 的 增刪改查 語句
SQL常用語句一覽
(1)數據記錄篩選:
sql="select*from數據表where欄位名=欄位值orderby欄位名[desc]"
sql="select*from數據表where欄位名like'%欄位值%'orderby欄位名[desc]"
sql="selecttop10*from數據表where欄位名orderby欄位名[desc]"
sql="select*from數據表where欄位名in('值1','值2','值3')"
sql="select*from數據表where欄位名between值1and值2"
(2)更新數據記錄:
sql="update數據表set欄位名=欄位值where條件表達式"
sql="update數據表set欄位1=值1,欄位2=值2……欄位n=值nwhere條件表達式"
(3)刪除數據記錄:
sql="deletefrom數據表where條件表達式"
sql="deletefrom數據表"(將數據表所有記錄刪除)
(4)添加數據記錄:
sql="insertinto數據表(欄位1,欄位2,欄位3…)values(值1,值2,值3…)"
sql="insertinto目標數據表select*from源數據表"(把源數據表的記錄添加到目標數據表)
㈧ 如何使用SQL語句修改表內的數據
修改表中內容
修改用到update語句,語句格式為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
即 update 員工表 set 部門id=01 where 員工id=0004
SQL聯合主鍵
Create Table 表名 (欄位名1 Int Not Null,
欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),
欄位名3…………
欄位名N………… )
(8)sqlinsertintoset擴展閱讀
主鍵是資料庫表的一個重要屬性,建立主鍵可以避免表中存在完全相同的記錄,也就是說主鍵在一張表中的記錄值是唯一的。 建立主鍵有兩種方法:一種是在資料庫提供的GUI環境中建立,另一種是通過SQL語句執行建立,下面分別介紹。
在資料庫提供的GUI環境中建立(以SQL7為例)。輸入表信息後按Ctrl鍵同時選中多行,然後點上面的主鍵按鈕就行了。
通過SQL語句執行建立。又分兩種,一是在建表語句中直接寫,二是建表之後更改表結構。
在建表語句中直接寫:
Create Table 表名 (欄位名1 Int Not Null,
欄位名2 nvarchar(13) Not Null Primary Key (欄位名1, 欄位名2),
欄位名3…………
欄位名N………… )