淺析SQL子查詢實(shí)例_Mssql數(shù)據(jù)庫(kù)教程
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
推薦:解讀常規(guī)數(shù)據(jù)庫(kù)維護(hù)涉及的5項(xiàng)工作一、備份數(shù)據(jù)庫(kù) 1、打開SQL企業(yè)管理器,在控制臺(tái)根目錄中依次點(diǎn)開MicrosoftSQLServer 2、SQLServer組--雙擊打開你的服務(wù)器--雙擊打開數(shù)據(jù)庫(kù)目錄 3、選擇你的數(shù)據(jù)庫(kù)名稱(如論壇數(shù)據(jù)庫(kù)Forum)--然后點(diǎn)上面菜單中的工具--選擇備份數(shù)據(jù)庫(kù) 4、備份選項(xiàng)選擇完全備
子查詢是在一個(gè)查詢內(nèi)的查詢。子查詢的結(jié)果被DBMS使用來(lái)決定包含這個(gè)子查詢的高級(jí)查詢的結(jié)果。在子查詢的最簡(jiǎn)單的形式中,子查詢呈現(xiàn)在另一條SQL語(yǔ)句的WHERE或HAVING子局內(nèi)。列出其銷售目標(biāo)超過各個(gè)銷售人員定額綜合的銷售點(diǎn)。
SELECT CITY
FROM OFFICES
WHERE TARGET > (SELECT SUM(QUOTA)
FROM SALESREPS
WHERE REP_OFFICES = OFFICE)
SQL子查詢一般作為WHERE子句或HAVING子句的一部分出現(xiàn)。在WHERE子句中,它們幫助選擇在查詢結(jié)果中呈現(xiàn)的各個(gè)記錄。在HAVING子句中,它們版主選擇在查詢結(jié)果中呈現(xiàn)的記錄組。
子查詢和實(shí)際的SELECT語(yǔ)句之間的區(qū)別:
在常見的用法中,子查詢必須生成一個(gè)數(shù)據(jù)字段作為它的查詢結(jié)果。這意味著一個(gè)子查詢?cè)谒腟ELECT子句中幾乎總是有一個(gè)選擇項(xiàng)。
ORDER BY子句不能在子查詢中指定,子查詢結(jié)果被中查詢?cè)趦?nèi)部使用,對(duì)用戶來(lái)說(shuō)永遠(yuǎn)是不可見的,所以對(duì)它們進(jìn)行排序沒有一點(diǎn)意義。
呈現(xiàn)在子查詢中的字段名可能引用主查詢中表的字段。
在大多數(shù)實(shí)現(xiàn)中,字查詢不能是幾個(gè)不同的SELECT語(yǔ)句的UNION,它只允許一個(gè)SELECT。
WHERE中的子查詢
子查詢最常用在SQL語(yǔ)句的WHERE子句中。
列出其定額小于全公司銷售目標(biāo)的10%的銷售人員。
SELECT NAME
FROM SALESREPS
WHERE QUOTA < (.1 * (SELECT SUM(TARGET)) FROM OFFICES)
(子查詢生成用來(lái)測(cè)試搜索條件的值。)
列出其公司的銷售目標(biāo)超過各個(gè)銷售人員定額總和的銷售點(diǎn)。
SELECT CITY
FROM OFFICES
WHERE TARGET > (SELECT SUM(QUOTA)
FROM SALESREPS
WHERE REP_OFFICE = OFFICE )
(執(zhí)行描述:主查詢從OFFICES表中取得數(shù)據(jù),WHERE子句選擇在查詢結(jié)果中包括哪個(gè)銷售點(diǎn)。SQL用WHERE子句中的測(cè)試條件逐個(gè)記錄的掃描OFFICES表中的記錄,WHERE子句把當(dāng)前記錄中TARGET字段的值和子查詢產(chǎn)生的值進(jìn)行比較。要測(cè)試TAEGET值,SQL執(zhí)行子查詢,找到當(dāng)前銷售點(diǎn)中銷售人員的定額的總和。子查詢產(chǎn)生一個(gè)數(shù),WHERE子句把這個(gè)數(shù)和TARGET值進(jìn)行比較,基于比較選定或排除當(dāng)前的銷售點(diǎn)。)
(當(dāng)DBMS檢查子查詢中的搜索條件時(shí),外部引用中的字段值從主查詢檢測(cè)的當(dāng)前記錄中提取 。)
子查詢搜索條件
*子查詢比較測(cè)試 = <> < <= > >=(在這個(gè)類型的測(cè)試中,子查詢必須產(chǎn)生一個(gè)合適數(shù)據(jù)類型的值,即,它必須產(chǎn)生一個(gè)查詢結(jié)果記錄,這個(gè)查詢結(jié)果記錄只包含一個(gè)字段。如果查詢產(chǎn)生了多個(gè)記錄或多個(gè)字段,比較久沒有意義了,SQL將報(bào)告一個(gè)錯(cuò)誤。如果子查詢不產(chǎn)生記錄或產(chǎn)生一個(gè)NULL值,比較測(cè)試將返回NULL)。
*子查詢組成員測(cè)試(IN)
*存在測(cè)試(EXISTS)
*限定性比較測(cè)試 ANY ALL
子查詢和鏈接
子查詢編寫的許多查詢也可以寫成多表查詢或連接。
列出在西部地區(qū)銷售點(diǎn)工作的銷售人員(表1)的名字(表2)。
SELECT NAME,AGE
FROM SALESREPS
WHERE REP_OFFICE IN (SELECT OFFICE
FROM OFFICES
WHERE REGION = ‘Western’)
SELECT NAME,AGE
FROM SALESREPS,OFFICES
WHERE REP_OFFICE = OFFICE
AND REGION = ’Western’
下一篇 數(shù)據(jù)庫(kù)更新
列出銷售量超過平均定額的銷售人員的名字和年齡。
SELECT NAME,AGE
FROM SALESREPS
WHERE QUOTA > (SELECT AGE(QUOTA)
FROM SALESREPS)
(在這個(gè)例子中,內(nèi)部查詢是一個(gè)匯總查詢,外部查詢不是,所以不能把兩個(gè)查詢組合成一個(gè)連接。) HAVING查詢中的子查詢
當(dāng)一個(gè)子查詢呈現(xiàn)在HAVING子句中時(shí),它是作為由HAVING子句執(zhí)行的記錄組選擇的一部分工作的。
列出對(duì)ACI生產(chǎn)的產(chǎn)品,其取得的平均訂單大小超過了總的平均訂單大小的銷售人員。
SELECT NAME,AVG(AMOUNT)
FROM SALESREPS,ORDERS
WHERE EMPL_NUM = REP
AND MFR = ‘ACI’
GROUP BY NAME
HAVING AVG(AMOUNT) > (SELECT AVG(AMOUNT)
FROM ORDERS)
列出對(duì)ACI生產(chǎn)的產(chǎn)品,其取得的平均訂單大小至少與總平均訂單大小一樣大的銷售人員。
SELECT NAME,AVG(AMOUNT)
FROM SALESREPS,ORDERS
WHERE EMPL_NUM = REP
AND MFR = ’ACI’
GROUP BY NAME,EMPL_NUM
HAVING AVG(AMOUNT) >= (SELECT AVG(AMOUNT)
FROM ORDERS
WHERE REP = EMPL_NUM)
分享:淺析SQL Server2005數(shù)字轉(zhuǎn)中文大寫字母setANSI_NULLSON setQUOTED_IDENTIFIERON go alterFUNCTION[dbo].[fn_numToChn](@numnumeric(14,2)) RETURNSnvarchar(100) AS BEGIN --版權(quán)所有:ahshow DECLARE@n_datanVARCHAR(20),@c_datanVARCHAR(100),@n_strnVARCHAR(10),@iint SET@n_data=RIGHT(SPACE(1
相關(guān)Mssql數(shù)據(jù)庫(kù)教程:
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- sql2008安裝后服務(wù)器改名造成名稱不一致解決方法
- 揭開微軟SQL Server 2008的神秘面紗
- 解讀在SQL Server中使用索引的技巧
- 如何將sql執(zhí)行的錯(cuò)誤消息記錄到本地文件中實(shí)現(xiàn)過程
- 揭秘SQL Server中刪除重復(fù)數(shù)據(jù)的方法
- 觸發(fā)器學(xué)習(xí)
- SQL2005數(shù)據(jù)庫(kù)轉(zhuǎn)到SQL2000的步驟
- 解決SQLSERVER2005的混和身份驗(yàn)證模式的設(shè)置以及SA登陸問題
- 談SQL將挑戰(zhàn)操作系統(tǒng)安全
- 解析MySQL實(shí)現(xiàn)SQL Server的sp_executesql
猜你也喜歡看這些
- MySQL查詢優(yōu)化:LIMIT 1避免全表掃描提高查詢效率
- 深入探討:MySQL數(shù)據(jù)庫(kù)MyISAM與InnoDB存儲(chǔ)引擎的比較
- MySQL筆記之系統(tǒng)信息函數(shù)詳解
- 基于mysql事務(wù)、視圖、存儲(chǔ)過程、觸發(fā)器的應(yīng)用分析
- sql語(yǔ)句:拷貝表,復(fù)制表
- mysql登錄遇到ERROR 1045問題解決方法
- 解析csv數(shù)據(jù)導(dǎo)入mysql的方法
- SQL分組排序去重復(fù)的小實(shí)例
- MySQL數(shù)據(jù)庫(kù)備份和還原的常用命令
- MySQL DELETE語(yǔ)法使用詳細(xì)解析
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-淺析SQL子查詢實(shí)例
。