久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦)

時(shí)間:2019-05-15 10:19:57下載本文作者:會(huì)員上傳
簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦)》。

第一篇:高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦)

以下的SQL語(yǔ)句以Northwind為例

1、不要再where子句中“=”的左側(cè)使用函數(shù)和表達(dá)式,因?yàn)橄到y(tǒng)無(wú)法應(yīng)用函數(shù)或表達(dá)式中的索引

SELECT * FROM Customers WHERE Cast(CustomerID AS VARCHAR(20))='1'--Clustered Index Scan 全表掃描

SELECT * FROM Customers WHERE CustomerID ='1'--Clustered Index Seek 索引掃描

2、只返回必要的行或列

2.1 減少I(mǎi)/O次數(shù)

2.2 減少加載到內(nèi)存的數(shù)據(jù)量

3、關(guān)于組合索引(待定)

組合索引中的順序很重要,當(dāng)查詢語(yǔ)句中的列只能與組合索引中的第1列相匹配時(shí),才能在查詢中應(yīng)用此索引

4、Distinct語(yǔ)句的使用原則

盡量少用,因?yàn)閿?shù)據(jù)庫(kù)引擎需要花費(fèi)大量的時(shí)間對(duì)所有字段進(jìn)行比較,過(guò)濾掉重復(fù)的記錄,因此影響了查詢的效率

字段較少時(shí),可適當(dāng)采用;較多時(shí),不宜采用

5、Union語(yǔ)句

Union必須滿足以下要求:

1、所有select語(yǔ)句的列數(shù)必須相同

2、所有select語(yǔ)句中對(duì)應(yīng)列的數(shù)據(jù)類(lèi)型必須兼容

執(zhí)行包含Union的查詢語(yǔ)句的過(guò)程如下:

1、依次執(zhí)行所有select語(yǔ)句

2、將所有select語(yǔ)句的結(jié)果集合并為一個(gè)結(jié)果集

3、對(duì)結(jié)果集進(jìn)行排序,并過(guò)濾掉重復(fù)的記錄(由于需要第3步的操作,導(dǎo)致聯(lián)合查詢效率很低)可使用union all,不用排序和過(guò)濾重復(fù)記錄,效率高

6、使用存儲(chǔ)過(guò)程

數(shù)據(jù)庫(kù)引擎可以在創(chuàng)建存儲(chǔ)過(guò)程時(shí)對(duì)其進(jìn)行分析和優(yōu)化,并可在首次執(zhí)行該過(guò)程后使用該過(guò)程的內(nèi)存中版本。

相對(duì)來(lái)說(shuō),每次運(yùn)行sql語(yǔ)句時(shí),都要從客戶端重復(fù)發(fā)送,并且在sqlserver每次執(zhí)行這些語(yǔ)句時(shí),對(duì)其進(jìn)行編譯和優(yōu)化。

7、如果需要多次對(duì)一個(gè)數(shù)據(jù)量非常大的表中一部分?jǐn)?shù)據(jù)進(jìn)行查詢操作,可以將這部分?jǐn)?shù)據(jù)放在臨時(shí)表中,然后對(duì)臨時(shí)表進(jìn)行操作。

8、模糊匹配符%和索引的關(guān)系

假定有一個(gè)表Good,主鍵為聚集索引,類(lèi)型為nvarchar(50)

SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '%商品1'--Clustered

Index Scan 全表掃描

SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '商%品1'--Clustered Index Seek 索引掃描

SELECT * FROM Goods AS g WHERE g.GoodsName LIKE '商品1%'--Clustered Index Seek 索引掃描

結(jié)論:通配符%放在中間和后面會(huì)走索引,放在前面不會(huì)

9、應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描,如:

SELECT * FROM Employees AS e WHERE e.EmployeeID =1--走聚集索引

SELECT * FROM Employees AS e WHERE e.EmployeeID IS NULL--Constanct Scan10、盡量使用數(shù)字型字段,若只含數(shù)值信息的字段盡量不要設(shè)計(jì)為字符型,這會(huì)降低查詢和連接的性能,并會(huì)增加存儲(chǔ)開(kāi)銷(xiāo)。這是因?yàn)橐嬖谔幚聿樵兒瓦B 接時(shí)會(huì)逐個(gè)比較字符串中每一個(gè)字符,而對(duì)于數(shù)字型而言只需要比較一次就夠了。

11、在所有的存儲(chǔ)過(guò)程和觸發(fā)器的開(kāi)始處設(shè)置 SET NOCOUNT ON,在結(jié)束時(shí)設(shè)置 SET NOCOUNT OFF。無(wú)需在執(zhí)行存儲(chǔ)過(guò)程和觸發(fā)器的每個(gè)語(yǔ)句后向客戶端發(fā)送

DONE_IN_PROC 消息。

第二篇:高效SQL語(yǔ)句

1.SELECT子句中避免使用 “*”

當(dāng)你想在SELECT子句中列出所有的COLUMN時(shí),使用動(dòng)態(tài)SQL列引用 ?*? 是一個(gè)方便的方法.不幸的是,這是一個(gè)非常低效的方法.實(shí)際上,ORACLE在解析的過(guò)程中, 會(huì)將“*” 依次轉(zhuǎn)換成所有的列名, 這個(gè)工作是通過(guò)查詢數(shù)據(jù)字典完成的, 這意味著將耗費(fèi)更多的時(shí)間.2.使用DECODE函數(shù)來(lái)減少處理時(shí)間

使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表.例如:

Sql代碼

1.SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0020 ANDENAME LIKE ?SMITH%?;

2.SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ?SMITH%?;

SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0020 ANDENAME LIKE ?SMITH%?;

SELECT COUNT(*),SUM(SAL)FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ?SMITH%?;

你可以用DECODE函數(shù)高效地得到相同結(jié)果:

Sql代碼

1.SELECT COUNT(DECODE(DEPT_NO,0020,?X?,NULL))D0020_COUNT,2.COUNT(DECODE(DEPT_NO,0030,?X?,NULL))D0030_COUNT,3.SUM(DECODE(DEPT_NO,0020,SAL,NULL))D0020_SAL,4.SUM(DECODE(DEPT_NO,0030,SAL,NULL))D0030_SAL5.FROM EMP WHERE ENAME LIKE ?SMITH%?;

SELECT COUNT(DECODE(DEPT_NO,0020,?X?,NULL))D0020_COUNT,COUNT(DECODE(DEPT_NO,0030,?X?,NULL))D0030_COUNT,SUM(DECODE(DEPT_NO,0020,SAL,NULL))D0020_SAL,SUM(DECODE(DEPT_NO,0030,SAL,NULL))D0030_SAL FROM EMP WHERE ENAME LIKE ?SMITH%?;

類(lèi)似的,DECODE函數(shù)也可以運(yùn)用于GROUP BY 和ORDER BY子句中.3.刪除重復(fù)記錄

最高效的刪除重復(fù)記錄方法(因?yàn)槭褂昧薘OWID)

Sql代碼

1.DELETE FROM EMP E WHERE E.ROWID >(SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);

DELETE FROM EMP E WHERE E.ROWID >(SELECT MIN(X.ROWID)FROM EMP X WHERE X.EMP_NO = E.EMP_NO);

4.用TRUNCATE替代DELETE

當(dāng)刪除表中的記錄時(shí),在通常情況下,回滾段(rollback segments)用來(lái)存放可以被恢復(fù)的信息,如果你沒(méi)有COMMIT事務(wù),ORACLE會(huì)將數(shù)據(jù)恢復(fù)到刪除之前的狀態(tài)(準(zhǔn)確地說(shuō)是恢復(fù)到執(zhí)行刪除命令之前的狀況),而當(dāng)運(yùn)用TRUNCATE時(shí), 回滾段不再存放任何可被恢復(fù)的信息.當(dāng)命令運(yùn)行后,數(shù)據(jù)不能被恢復(fù).因此很少的資源被調(diào)用,執(zhí)行時(shí)間也會(huì)很短.5.計(jì)算記錄條數(shù)

和一般的觀點(diǎn)相反, count(*)比count(1)稍快,當(dāng)然如果可以通過(guò)索引檢索,對(duì)索引列的計(jì)數(shù)仍舊是最快的.例如 COUNT(EMPNO)

6.用Where子句替換HAVING子句

避免使用HAVING子句,HAVING 只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過(guò)濾,這個(gè)處理需要排序、總計(jì)等操作,如果能通過(guò)WHERE子句限制記錄的數(shù)目,那就能減少這方面的開(kāi)銷(xiāo), 例如:

Sql代碼

1.--低效

2.SELECT REGION,AVG(LOG_SIZE)FROM LOCATION GROUP BY REGION HAVING REGION REGION!= ?SYDNEY? AND REGION!= ?PERTH?3.--高效

4.SELECT REGION,AVG(LOG_SIZE)FROMLOCATION WHERE REGION REGION!= ?SYDNEY? ND REGION!= ?PERTH? GROUP BY REGION

--低效

SELECT REGION,AVG(LOG_SIZE)FROM LOCATION GROUP BY REGION HAVING REGION REGION!= ?SYDNEY? AND REGION!= ?PERTH?--高效

SELECT REGION,AVG(LOG_SIZE)FROMLOCATION WHERE REGION REGION!= ?SYDNEY? ND REGION!= ?PERTH? GROUP BY REGION

7.用EXISTS替代IN

在許多基于基礎(chǔ)表的查詢中,為了滿足一個(gè)條件,往往需要對(duì)另一個(gè)表進(jìn)行聯(lián)接.在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率.Sql代碼1.--低效

2.SELECT * FROM EMP WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ?MELB?)

3.--高效:

4.SELECT * FROM EMP WHERE EMPNO > 0 AND EXISTS(SELECT ?X?FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ?MELB?)

--低效

SELECT * FROM EMP WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ?MELB?)

--高效:

SELECT * FROM EMP WHERE EMPNO > 0 AND EXISTS(SELECT ?X?FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ?MELB?)

8.用NOT EXISTS替代NOT IN

在子查詢中,NOT IN子句將執(zhí)行一個(gè)內(nèi)部的排序和合并.無(wú)論在哪種情況下,NOT IN都是最低效的(因?yàn)樗鼘?duì)子查詢中的表執(zhí)行了一個(gè)全表遍歷).為了避免使用NOT IN,我們可以把它改寫(xiě)成外連接(Outer Joins)或NOT EXISTS.例如:

SELECT …FROM EMPWHERE DEPT_NO NOT IN(SELECT DEPT_NO FROM DEPT WHERE DEPT_CAT=?A?);

Sql代碼

1.--為了提高效率改寫(xiě)為:(方法一: 高效)

SELECT ….FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+)= ?A?2.--(方法二: 最高效)

SELECT ….FROM EMP E WHERE NOT EXISTS(SELECT ?X?FROM DEPT D WHERE D.DEPT_NO = E.DEPT_NO AND DEPT_CAT = ?A?);3.--為了提高效率改寫(xiě)為:(方法一: 高效)

SELECT ….FROM EMP A,DEPT B WHERE A.DEPT_NO = B.DEPT(+)AND B.DEPT_NO IS NULL AND B.DEPT_CAT(+)= ?A?

4.--(方法二: 最高效)

SELECT ….FROM EMP E WHERE NOT EXISTS(SELECT ?X?FROM DEPT D WHERE D.DEPT_NO = E.DEPT_NO AND DEPT_CAT = ?A?);

9.用EXISTS替換DISTINCT

當(dāng)提交一個(gè)包含一對(duì)多表信息(比如部門(mén)表和雇員表)的查詢時(shí),避免在SELECT子句中使用DISTINCT.一般可以考慮用EXIST替換 例如:

Sql代碼1.--低效:

2.SELECT DISTINCT DEPT_NO,DEPT_NAMEFROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO3.--高效:

4.SELECT DEPT_NO,DEPT_NAMEFROM DEPT D WHERE EXISTS(SELECT ?X? FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);

5.--EXISTS 使查詢更為迅速,因?yàn)镽DBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.--低效:

SELECT DISTINCT DEPT_NO,DEPT_NAMEFROM DEPT D,EMP E WHERE D.DEPT_NO = E.DEPT_NO

--高效:

SELECT DEPT_NO,DEPT_NAMEFROM DEPT D WHERE EXISTS(SELECT ?X? FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);

--EXISTS 使查詢更為迅速,因?yàn)镽DBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.10.用索引提高效率

索引是表的一個(gè)概念部分,用來(lái)提高檢索數(shù)據(jù)的效率,實(shí)際上ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree結(jié)構(gòu),通常通過(guò)索引查詢數(shù)據(jù)比全表掃描要快,當(dāng)ORACLE找出執(zhí)行查詢和Update語(yǔ)句的最佳路徑時(shí),ORACLE優(yōu)化器將使用索引,同樣在聯(lián)結(jié)多個(gè)表時(shí)使用索引也可以提高效率,另一個(gè)使用索引的好處是,它提供了主鍵(primary key)的唯一性驗(yàn)證,除了那些LONG或LONG RAW數(shù)據(jù)類(lèi)型, 你可以索引幾乎所有的列.通常, 在大型表中使用索引特別有效.當(dāng)然,你也會(huì)發(fā)現(xiàn), 在掃描小表時(shí),使用索引同樣能提高效率,雖然使用索引能得到查詢效率的提高,但是我們也必須注意到它的代價(jià).索引需要空間來(lái)存儲(chǔ),也需要定期維護(hù),每當(dāng)有記錄在表中增減或索引列被修改時(shí),索引本身也會(huì)被修改,這意味著每條記錄的INSERT , DELETE , UPDATE將為此多付出4 , 5 次的磁盤(pán)I/O,因?yàn)樗饕枰~外的存儲(chǔ)空間和處理,那些不必要的索引反而會(huì)使查詢反應(yīng)時(shí)間變慢注:定期的重構(gòu)索引是有必要的.11.避免在索引列上使用計(jì)算

WHERE子句中,如果索引列是函數(shù)的一部分,優(yōu)化器將不使用索引而使用全表掃描.舉例:Sql代碼

1.--低效:

2.SELECT …FROM DEPT WHERE SAL * 12 > 25000;3.--高效:

4.SELECT … FROM DEPT WHERE SAL> 25000/12;--低效:

SELECT …FROM DEPT WHERE SAL * 12 > 25000;--高效:

SELECT … FROM DEPT WHERE SAL> 25000/12;

12.用>=替代>

Sql代碼

1.--如果DEPTNO上有一個(gè)索引2.--高效:

SELECT *FROM EMPWHERE DEPTNO >=4

3.--低效:

SELECT *FROM EMPWHERE DEPTNO >3--如果DEPTNO上有一個(gè)索引 4.--高效:

SELECT *FROM EMPWHERE DEPTNO >=45.--低效:

SELECT *FROM EMPWHERE DEPTNO >3

兩者的區(qū)別在于, 前者DBMS將直接跳到第一個(gè)DEPT等于4的記錄而后者將首先定位到DEPTNO=3的記錄并且向前掃描到第一個(gè)DEPT大于3的記錄.

第三篇:高效的SQL語(yǔ)句

如何寫(xiě)高效率的SQL語(yǔ)句、Where子句中的連接順序:

ORACLE采用自下而上的順序解析WHERE子句。

根據(jù)這個(gè)原理,表之間的連接必須寫(xiě)在其他WHERE條件之前,那些可以過(guò)濾掉最大數(shù)量記錄的條件必須寫(xiě)在WHERE子句的末尾。

舉例:

(低效)

select...from table1 t1 where t1.sal > 300 and t1.jobtype = '0001' and 20 <(select count(*)from table1 t2 where t2.pno = t1.tno;

(高效)

select...from table1 t1 where 20 <(select count(*)from table1 t2 where t2.pno = t1.tno and t1.sal > 300 and t1.jobtype = '0001';

2、Select子句中避免使用 “ * ”:

當(dāng)你想在select子句中列出所有的column時(shí),使用動(dòng)態(tài)SQL列引用 ‘*' 是一個(gè)方便的方法。不幸的是,這是一個(gè)非常低效的方法。

實(shí)際上,ORACLE在解析的過(guò)程中,會(huì)將 '*' 依次轉(zhuǎn)換成所有的列名, 這個(gè)工作是通過(guò)查詢數(shù)據(jù)字典完成的, 這意味著將耗費(fèi)更多的時(shí)間。

3、減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù):

當(dāng)執(zhí)行每條SQL語(yǔ)句時(shí),ORACLE在內(nèi)部執(zhí)行了許多工作:

解析SQL語(yǔ)句、估算索引的利用率、綁定變量、讀數(shù)據(jù)塊等等。

由此可見(jiàn),減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù),就能實(shí)際上減少ORACLE的工作量。

舉例:

題目——我要查找編號(hào)為0001、0002學(xué)生的信息。

(低效)

select name,age,gender,address from t_student where id = '0001';

select name,age,gender,address from t_student where id = '0002';

(高效)

select a.name,a.age,a.gender,a.address,b.name,b.age,b.gender,b.address from t_student a,t_student b where a.id = '0001' and b.id = '0002';

4、使用Decode函數(shù)來(lái)減少處理時(shí)間:

使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表。

舉例:

(低效)

select count(*), sum(banace)from table1 where dept_id = '0001' and name like 'anger%';select count(*), sum(banace)from table1 where dept_id = '0002' and name like 'anger%';(高效)

select count(decode(dept_id,'0001','XYZ',null))count_01,count(decode(dept_id,'0002','XYZ',null))

count_02,sum(decode(dept_id,'0001',dept_id,null))sum_01,sum(decode(dept_id,'0002',dept_id,null))sum_02

from table1

where name like 'anger%';

5、整合簡(jiǎn)單,無(wú)關(guān)聯(lián)的數(shù)據(jù)庫(kù)訪問(wèn):

如果你有幾個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)查詢語(yǔ)句,你可以把它們整合到一個(gè)查詢中(即使它們之間沒(méi)有關(guān)系)

舉例:

(低效)

select name from table1 where id = '0001';

select name from table2 where id = '0001';

select name from table3 where id = '0001';

(高效)

select t1.name, t2.name, t3.name

from table1 t1, table2 t2, table3 t3

where t1.id(+)= '0001' and t2.id(+)= '0001' and t3.id(+)= '0001'

【注:上面例子雖然高效,但是可讀性差,需要量情而定??!】

6、刪除重復(fù)記錄:

最高效的刪除重復(fù)記錄方法(因?yàn)槭褂昧薘OWID)

舉例:

delete from table1 t1

where t1.rowid >(select min(t2.rowid)from table1 t2 where t1.id = t2.id);

7、盡量不要使用having子句,可以考慮用where替換。

having只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過(guò)濾.這個(gè)處理需要排序,總計(jì)等操作。如果能通過(guò)where子句限制記錄的數(shù)目,那就能減少這方面的開(kāi)銷(xiāo)。

8、盡量用表的別名:

當(dāng)在SQL語(yǔ)句中連接多個(gè)表時(shí),請(qǐng)使用表的別名并把別名前綴于每個(gè)Column上。這樣一來(lái),就可以減少解析的時(shí)間并減少那些由Column歧義引起的語(yǔ)法錯(cuò)誤。

9、用exists替代in(發(fā)現(xiàn)好多程序員不知道這個(gè)怎么用):

在許多基于基礎(chǔ)表的查詢中,為了滿足一個(gè)條件,往往需要對(duì)另一個(gè)表進(jìn)行聯(lián)接。在這種情況下,使用exists(或not exists)通常將提高查詢的效率。

舉例:

(低效)

select...from table1 t1 where t1.id > 10 and pno in(select no from table2 where name like 'www%');

(高效)

select...from table1 t1 where t1.id > 10 and exists(select 1 from table2 t2 where t1.pno = t2.no and name like 'www%');

10、用not exists替代not in:

在子查詢中,not in子句將執(zhí)行一個(gè)內(nèi)部的排序和合并。

無(wú)論在哪種情況下,not in都是最低效的(因?yàn)樗鼘?duì)子查詢中的表執(zhí)行了一個(gè)全表遍歷)。為了避免使用not in,我們可以把它改寫(xiě)成外連接(Outer Joins)或not exists。

11、用exists替換distinct:

當(dāng)提交一個(gè)包含一對(duì)多表信息的查詢時(shí),避免在select子句中使用distinct.一般可以考慮用exists替換

舉例:

(低效)

select distinct d.dept_no, d.dept_name from t_dept d, t_emp e where d.dept_no = e.dept_no;(高效)

select d.dept_no, d.dept_name from t_dept d where exists(select 1 from t_emp where d.dept_no = e.dept_no);

exists使查詢更為迅速,因?yàn)镽DBMS核心模塊將在子查詢的條件一旦滿足后,立刻返回結(jié)果.12、用表連接替換exists:

通常來(lái)說(shuō),采用表連接的方式比exists更有效率。

舉例:

(低效)

select ename from emp e where exists(select 1 from dept where dept_no = e.dept_no and dept_cat = 'W');

SELECT ENAME

(高效)

select ename from dept d, emp e where e.dept_no = d.dept_no and dept_cat = 'W';

13、避免在索引列上使用is null和is not null

避免在索引中使用任何可以為空的列,ORACLE將無(wú)法使用該索引。

對(duì)于單列索引,如果列包含空值,索引中將不存在此記錄;

對(duì)于復(fù)合索引,如果每個(gè)列都為空,索引中同樣不存在此記錄;

如果至少有一個(gè)列不為空,則記錄存在于索引中。

舉例:

如果唯一性索引建立在表的A列和B列上, 并且表中存在一條記錄的A,B值為(123,null),ORACLE將不接受下一條具有相同A,B值(123,null)的記錄(插入),然而如果所有的索引列都為空,ORACLE將認(rèn)為整個(gè)鍵值為空而空不等于空。

因此你可以插入1000 條具有相同鍵值的記錄,當(dāng)然它們都是空!

因?yàn)榭罩挡淮嬖谟谒饕兄?所以WHERE子句中對(duì)索引列進(jìn)行空值比較將使ORACLE停用該索引。

14、最好把復(fù)雜的sql,去看下它的執(zhí)行計(jì)劃,這樣有利于你分析知道自己的sql效率如何。

第四篇:sql語(yǔ)句

簡(jiǎn)單基本的sql語(yǔ)句 幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句

選擇:select * from table1 where范圍

插入:insert into table1(field1,field2)values(value1,value2)

刪除:delete from table1 where范圍

更新:update table1 set field1=value1 where范圍

查找:select * from table1 where field1 like ’%value1%’

(1)數(shù)據(jù)記錄篩選:

sql=“select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]”

sql=“select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]”sql=“select top 10 * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]”sql=“select top 10 * from 數(shù)據(jù)表 order by 字段名 [desc]”

sql=“select * from 數(shù)據(jù)表 where 字段名 in('值1','值2','值3')”

sql=“select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2”

(2)更新數(shù)據(jù)記錄:

sql=“update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式”

sql=“update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式”

(3)添加數(shù)據(jù)記錄:

sql=“insert into 數(shù)據(jù)表(字段1,字段2,字段3 …)values(值1,值2,值3 …)”

sql=“insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表”(把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表)

(4)數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù):

AVG(字段名)得出一個(gè)表格欄平均值

COUNT(*;字段名)對(duì)數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì)MAX(字段名)取得一個(gè)表格欄最大的值

MIN(字段名)取得一個(gè)表格欄最小的值

SUM(字段名)把數(shù)據(jù)欄的值相加

引用以上函數(shù)的方法:

sql=“select sum(字段名)as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式”

set rs=conn.excute(sql)

用 rs(“別名”)獲取統(tǒng)計(jì)的值,其它函數(shù)運(yùn)用同上。

查詢?nèi)コ貜?fù)值:select distinct * from table1between的用法

between限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2

in 的使用方法

select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)

第五篇:SQL語(yǔ)句

SQL語(yǔ)句,用友的SQL2000,通過(guò)查詢管理器寫(xiě)的語(yǔ)句

1、查詢

2、修改

3、刪除

4、插入

表名:users 包含字段:id,sname,sage

查詢 select * from users查詢users表中所有數(shù)據(jù)

select id,sname,sage from users查詢users表中id,sname,sage字段所有數(shù)據(jù)

可以限定查詢條件比如:

select sname from users where sage>20查詢年齡大于20歲的所有人的名字

修改 update users set sname='李四',sage=22將users表中數(shù)據(jù)都改為姓名李四,年齡22

update users set sname='李四',sage=22 where id=1限定id為1的人的信息修改為

姓名李四,年齡22

可以加where條件。

刪除 delete from users where id=2刪除users表中id為2的一行數(shù)據(jù)delete from users 代表刪除users中所有數(shù)據(jù)

插入 insert into users(id,sname,sage)values(5,'劉三',21)插入一條數(shù)據(jù)

SQL四條最基本的數(shù)據(jù)操作語(yǔ)句:Insert,Select,Update和Delete。

例如:SELECT columns FROM tables;其中columns為列的名稱(chēng),tables為表格名稱(chēng)

1、查詢:select 字段名 from 表名 where 條件

查找在表(如A)中符合條件的字段

2、修改:update 表名 set 字段名=‘所要修改的內(nèi)容’

修改在表(如A)中的字段的值為:所要修改的內(nèi)容

3、刪除: delete from 表名 where 條件

刪除符合條件的表(如A)中的信息

4、插入: insert into 表名(字段名)(‘插入內(nèi)容’)

在表(如A)中插入字段為:插入內(nèi)容 的一條信息

下載高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦)word格式文檔
下載高效SQL語(yǔ)句(SQL Server)(寫(xiě)寫(xiě)幫推薦).doc
將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
點(diǎn)此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)范文推薦

    sql語(yǔ)句學(xué)習(xí)

    一、選擇題 1、SQL語(yǔ)言是語(yǔ)言?!⊿QL特點(diǎn))(易) A)層次數(shù)據(jù)庫(kù) B)網(wǎng)絡(luò)數(shù)據(jù)庫(kù) C)關(guān)系數(shù)據(jù)庫(kù)D)非數(shù)據(jù)庫(kù) 答案:C 2、SQL語(yǔ)言具有兩種使用方式,分別稱(chēng)為交互式SQL和。 ——(SQL語(yǔ)言使......

    SQL語(yǔ)句練習(xí)

    1.用SQL語(yǔ)句在“商學(xué)院教學(xué)管理”數(shù)據(jù)庫(kù)中建立學(xué)生表、課程表、成績(jī)表、教師表、授課表、班級(jí)表。實(shí)現(xiàn)下列要求: (1)按課本第99-100頁(yè)表結(jié)構(gòu)要求建立以上六張表。 (2)在學(xué)生表中插......

    基本sql語(yǔ)句

    典型SQL語(yǔ)句匯總 Sys用戶是超級(jí)用戶,具有sysdba的角色,密碼是:change_on_install。 System用戶是管理操作員,具有sysoper的角色,密碼是:manager。 普通登錄用戶: 用戶名:scott,密碼:ti......

    sql常用語(yǔ)句

    //創(chuàng)建臨時(shí)表空間create temporary tablespace test_temp tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m autoextend on next 32m maxs......

    SQL語(yǔ)句大全

    SQL練習(xí)一、 設(shè)有如下的關(guān)系模式, 試用SQL語(yǔ)句完成以下操作: 學(xué)生(學(xué)號(hào),姓名,性別,年齡,所在系) 課程(課程號(hào),課程名,學(xué)分,學(xué)期,學(xué)時(shí)) 選課(學(xué)號(hào),課程號(hào),成績(jī)) 1. 求選修了課程號(hào)為“C2”......

    SQL語(yǔ)句總結(jié)

    SQL語(yǔ)句總結(jié) 一、插入記錄 1. 插入固定的數(shù)值 語(yǔ)法: INSERT[INTO]表名[(字段列表)]VALUES(值列表) 示例1: Insert into Students values('Mary’,24,’mary@163.com’) 若沒(méi)有指......

    常用SQL語(yǔ)句

    一、創(chuàng)建數(shù)據(jù)庫(kù) create database 數(shù)據(jù)庫(kù)名 on( name='數(shù)據(jù)庫(kù)名_data', size='數(shù)據(jù)庫(kù)文件大小', maxsize='數(shù)據(jù)庫(kù)文件最大值', filegrowth=5%,//數(shù)據(jù)庫(kù)文件的增長(zhǎng)率 filename......

    常用sql語(yǔ)句

    1、查看表空間的名稱(chēng)及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d......

主站蜘蛛池模板: 成人欧美一区二区三区a片| 高清无码h版动漫在线观看| 亚洲精品无码久久久久sm| 无码aⅴ在线观看| 国产成人午夜精品影院| 在线观看片免费视频无码| 精品无码人妻av受辱日韩| 欧洲精品不卡1卡2卡三卡| 制服丝袜亚洲欧美中文字幕| 国产大学生粉嫩无套流白浆| 久久久噜噜噜久噜久久| 国产农村一国产农村无码毛片| 无码精品a∨在线观看| 2018年秋霞无码片| 亚洲av成人无码久久精品| 乱子伦视频在线看| 国产精品人人做人人爽| 久久国产劲暴∨内射新川| 99国产精品白浆无码流出| 97人妻无码一区| 亚洲国产成人精品无码区一本| 免费无码成人av片在线| 国产又色又爽无遮挡免费| 亚洲人成网亚洲欧洲无码久久| 天码人妻一区二区三区| 国产无遮挡又黄又爽在线观看| 扒开双腿疯狂进出爽爽爽视频| 欧美成aⅴ人高清怡红院| 无码任你躁久久久久久| 色一情一乱一伦麻豆| 亚洲大尺度无码专区尤物| 亚洲av高清在线观看一区二区| 人妻熟女一区二区三区app下载| 久久久亚洲精品无码| 少妇厨房愉情理伦片免费| 好大好硬好爽免费视频| 中文av伊人av无码av狼人| 色吊丝永久性观看网站| 久久人妻少妇嫩草AV蜜桃漫画| 久久成人国产精品一区二区| 99国产精品久久久久久久成人热|