5.查詢工資在1000~1500之間的職工的編號(hào),姓名,職稱和工資
select 編號(hào),姓名,職稱,工資 from 職工檔案 where 工資 between 1000 and 1500
說明:在查找中,如果要求某列的數(shù)值在某個(gè)區(qū)間內(nèi),可用between…and,而如果要查找不在某個(gè)區(qū)間的數(shù)據(jù),可用not between…and
思考一下:要查詢工資不在1000~1500之間的職工的編號(hào),姓名,職稱和工資,應(yīng)該怎樣編寫SQL語句?
答案:select 編號(hào),姓名,職稱,工資 from 職工檔案 where 工資 not between 1000 and 1500
6.數(shù)據(jù)包含查詢:使用in的查詢,查詢具有本科和大專文化程度的職工的編號(hào)和姓名
select 編號(hào),姓名 from 職工檔案 where 文化程度 in('本科','大專')
說明:如果要查的值是已知的某幾個(gè)值中的一個(gè),此時(shí)可用IN.同樣,可以用not in來表示相反的含義。
7.數(shù)據(jù)匹配查詢:
利用like的查詢。查詢部門編號(hào)為"01"的職工的工資情況
select * from 職工檔案 where 編號(hào) like '01_'(或者like '01%')
說明:在查找時(shí),有時(shí)需要對(duì)字符串比較。like提供兩種字符串匹配方式,一種是使用下劃線"_"匹配任意一個(gè)符,另一種是使用百分號(hào)"%"匹配0個(gè)或多個(gè)字符的字符串。同樣可以使用not like來表示相反的含義。
8.聯(lián)接查詢:
實(shí)際應(yīng)用于中常常涉及到多表之間的關(guān)聯(lián)查詢,SQL語言提供了連接多個(gè)表的操作,可在兩個(gè)或多個(gè)表間按指定的列的相同的值將一個(gè)表中的行與另一個(gè)表中的行連接起來。從而大增強(qiáng)了其查詢能力。
為了防止多表中同名字段的二義性,查詢語句中的字段名前最好加上表名作為前綴,為了減少輸入時(shí)的麻煩,還可在from子句中給表起一個(gè)別名。
例:查詢職工的編號(hào),姓名,職稱與工資
select 職工檔案。編號(hào),職工檔案。職稱,工資情況。姓名,工資情況。工資 from 職工檔案,工資情況 where
職工檔案。編號(hào)=工資情況。編號(hào)
9.聯(lián)合查詢:
在SQL語言中可將兩個(gè)或多個(gè)查詢結(jié)果進(jìn)行并操作(union),需要注意的是,兩個(gè)查詢結(jié)果進(jìn)行并操作時(shí),它們必須具有相同的列數(shù),并且對(duì)應(yīng)的列有著相同的數(shù)據(jù)類型和長度(對(duì)應(yīng)的列名可以不同).union運(yùn)算自動(dòng)去掉重復(fù)記錄。
例:查詢具有工程師和政工師職稱的職工的編號(hào)和姓名
SElect 編號(hào),姓名 from 職工檔案 where 職稱='工程師' union select 編號(hào),姓名 from 職工檔案
where 職稱='政工師'
例:查詢具有工程師職稱和工資高于1000元的職工的編號(hào)
select 編號(hào) from 職工檔案 where 職稱='工程師' union select 編號(hào) from 工資情況 where 工資>1000
10.嵌套查詢:
在一個(gè)select命令的where子句中出現(xiàn)另一個(gè)select 命令,則稱為嵌套查詢或稱為子查詢,必須用花括號(hào)括起來。在where子句中最多可以有兩個(gè)同級(jí)(不是嵌套的)子查詢。
例:查詢工資高于1000的職工的編號(hào),姓名和職稱。
select 編號(hào),姓名,職稱 from 職工檔案 where 編號(hào) in(select 編號(hào) from 工資情況 where 工資>1000)
上述SQL語句執(zhí)行的是兩個(gè)過程,首先在"工資情況"表中找出工資高于1000的職工的編號(hào),然后再根據(jù)此編號(hào)在"職工檔案"表中查出姓名和職稱。
11.庫函數(shù):
select語句不僅可以通過where子句查找滿足條件的數(shù)據(jù),還可以通過函數(shù)對(duì)滿足條件的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),計(jì)數(shù)等運(yùn)算。下列五種函數(shù)可以在from子句中與選定的列一起使用:
Min 求(字符,日期,數(shù)值)列的最小值
Max 求(字符,日期,數(shù)值)列的最大值
Count(*) 計(jì)算記錄的個(gè)數(shù)
Sum 計(jì)算數(shù)值列的總和
AVG 計(jì)算數(shù)值列的平均值
這些函數(shù)是從一組值中計(jì)算出一個(gè)匯總信息,group by 子句用來定義或劃分進(jìn)行統(tǒng)計(jì)或求和的組。
例:查詢男女職工人數(shù),最高工資,最低工資,工資總額和平均工資
select 性別,count(*),Max(工資),Min(工資),sum(工資),avg(工資) from 職工檔案 group by 性別
例:查出有三個(gè)人以上具有相同職稱的職稱名稱。
select 職稱 from 職工檔案 group by 職稱 having count(*)>3
注意:having子句和where子句的區(qū)別。where子句用來指定表中元組所應(yīng)滿足的條件,而having子句用來指定每一分組所應(yīng)滿足的條件,只有滿足having子句的條件的那些組才能在結(jié)果中被顯示。即having用于去掉不符合條件的分組,如同where子句用于去掉不符合條件的若干行一樣。
在此例中,在表中按職稱進(jìn)行分組,然后在每個(gè)分組中檢測其記錄個(gè)數(shù)是否大于等于3,如果滿足條件,則該組的職稱才被輸出。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績查詢時(shí)間匯總全國計(jì)算機(jī)等級(jí)考試二級(jí)VF輔導(dǎo)筆記匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |