計(jì)算機(jī)應(yīng)用技術(shù)數(shù)據(jù)庫09查詢_第1頁
計(jì)算機(jī)應(yīng)用技術(shù)數(shù)據(jù)庫09查詢_第2頁
計(jì)算機(jī)應(yīng)用技術(shù)數(shù)據(jù)庫09查詢_第3頁
計(jì)算機(jī)應(yīng)用技術(shù)數(shù)據(jù)庫09查詢_第4頁
計(jì)算機(jī)應(yīng)用技術(shù)數(shù)據(jù)庫09查詢_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

SQLSERVER2000表的查詢SQL語言的種類

SQL(StructuredQueryLanguage)是一種在關(guān)系數(shù)據(jù)庫中定義和操作數(shù)據(jù)的標(biāo)準(zhǔn)語言.SQL語言通常分為4類:

查詢語言(select)操縱語言(insert,update,delete)定義語言(create,alter,drop)控制語言(commit,rollback)SQL語言提供的SELECT語句的一般格式如下:SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>][,…]FROM<表名或視圖名>[,<表名或視圖名>][,…][WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY]<列名2>[ASC|DESC]];說明:

SELECT語句的含義是,根據(jù)WHERE子句指定的條件,從FROM子句后面的基本表或視圖中找出滿足條件的記錄,再按照SELECT子句指定的目標(biāo)列表達(dá)式,選出這些記錄相應(yīng)的列形成結(jié)果集返回。其中,SELECT子句和FROM子句是必選的,而WHERE子句、GROUPBY子句、HAVING子句以及ORDERBY子句都是可選的。select語句的基本格式是由select子句,from子句和where子句組成的查詢塊.整個(gè)select語句的含義是:根據(jù)where子句的篩選條件表達(dá)式,從from子句指定的表中找出滿足條件的記錄,再按select子句中指定的字段次序,選出記錄中的字段值構(gòu)造一個(gè)顯示結(jié)果表.如果有g(shù)roup子句,則將結(jié)果按<分組表達(dá)式>的值進(jìn)行分組,該值相等的記錄為一個(gè)組.如果group子句帶having短語,則只有滿足指定條件的組才會(huì)輸出.如果有order子句,則顯示結(jié)果表還要按<字段>值的升序(asc)或降序(desc)進(jìn)行排序.一、選擇行和列--選擇和投影運(yùn)算的實(shí)現(xiàn)下面以人事工資管理系統(tǒng)的員工表employee和部門表dept為例介紹SELECT語句的使用方法。Employee(emp_id,ename,job,mgr_id,workdate,sal,comm,dept_id)

員工號(hào)姓名職位主管參加工作時(shí)間月薪崗位津貼部門號(hào)

Dept(dept_id,dname,tel)

部門號(hào),部門名稱,電話用下面語句創(chuàng)建表結(jié)構(gòu):

CREATETABLEemployee(emp_idCHAR(4)PRIMARYKEY,enameVARCHAR(20),jobVARCHAR(9),mgr_idCHAR(4),workdatedatetime,salSMALLINT,commSMALLINT,dept_idCHAR(2)NOTNULL)CREATETABLEdept(dept_idCHAR(2)PRIMARYKEY,dnameVARCHAR(12),telVARCHAR(20))1、選擇運(yùn)算的實(shí)現(xiàn)查詢一個(gè)表的所有行

在SELECT語句中只要沒有WHERE子句,查詢結(jié)果就包含了所有行。【例1】查詢表employee的所有員工的員工號(hào)和姓名。查詢滿足條件的某些行查詢滿足條件的某些行,可以通過WHERE子句來實(shí)現(xiàn)?!纠?】查詢?cè)滦匠^1800的員工姓名和月薪?!纠?】查詢員工號(hào)為1001的員工姓名及部門號(hào)。

1.SELECTemp_id,enameFROMemployee2.SELECTename,salFROMemployeeWHEREsal>1800;3.SELECTename,dept_idFROMemployeeWHEREemp_id=’1001’2、投影運(yùn)算的實(shí)現(xiàn)查詢表的全部列【例4】查詢部門表中部門號(hào)為11的全部內(nèi)容。在SQL語言中,可以用星號(hào)“*”代表所有列名,列的顯示順序與基本表中列的順序一致。查詢表的部分列

【例5】查詢?nèi)w員工的員工號(hào),姓名和參加工作時(shí)間。查詢經(jīng)過計(jì)算的值SELECT子句的<目標(biāo)列表達(dá)式>不僅可以是基本表的屬性,也可以是表達(dá)式,包括算術(shù)表達(dá)式、字符串常量和函數(shù)等【例6】查詢?nèi)w員工的姓名及年薪。查詢可以通過指定別名來改變查詢結(jié)果的列標(biāo)題,這樣也可以使結(jié)果更清晰。

SELECTenameAS姓名,sal*12AS年薪

FROMemployee注意:當(dāng)自定義的列標(biāo)題中有空格時(shí)必須用單引號(hào)。

SELECT'姓名'=ename,'年薪'=sal*12

FROMemployee

4.SELECTdept_id,dname,telFROMdeptWHEREdept_id=’11’5.SELECTemp_id,ename,workdateFROMemployee6.

SELECTename,sal*12FROMemployee二、SQL的運(yùn)算符SQL語言使用的運(yùn)算符包括算術(shù)運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符等。

算術(shù)運(yùn)算符算術(shù)運(yùn)算符有4種:+、-、*、/

比較運(yùn)算符基本比較運(yùn)算符共9種:=、>、<、<=、>=、!=或<>、!>(不大于)、!<(不小于)特殊比較運(yùn)算符有4類:BETWEEN…AND…、IN、LIKE和ISNULL運(yùn)算符BETWEEN…AND…運(yùn)算符BETWEEN…AND…是用于確定記錄的范圍,即某屬性值在指定的范圍之內(nèi)(包括邊界值)的記錄,其中BETWEEN后面是下限,AND后面是上限。【例21】查詢?cè)滦皆?000到1500之間的員工姓名及月薪。查詢結(jié)果包括那些月薪等于1000和月薪等于1500的記錄。運(yùn)算符IN

運(yùn)算符IN是用于查找某屬性值包含在指定集合內(nèi)的記錄,IN后面跟的是指定集合。

【例22】查找部門號(hào)是1或2的員工姓名及部門號(hào)。運(yùn)算符LIKE(模糊查詢)

運(yùn)算符LIKE可用來進(jìn)行字符串的匹配,LIKE后面跟的是匹配模式。匹配模式可以是一個(gè)包含通配符“%”(百分號(hào))和“_”(下劃線)的字符串?!?”代表任意長度(長度可以為0)的字符串。

“_”代表任意單個(gè)字符。“[]”表示指定范圍。

【例23】查詢所有姓張員工的姓名。

【例24】查找所有2011年參加工作的員工姓名及參加工作時(shí)間。

【例25】查找姓名第2個(gè)字為“小”的員工姓名?!纠?6】查找姓為王或周并且單名的員工情況。

運(yùn)算符IS[not]NULL

運(yùn)算符ISNULL用來測(cè)試某個(gè)屬性值是否為空。【例27】可能有這樣的情況:新進(jìn)員工暫時(shí)沒有崗位津貼,等試用期滿后再領(lǐng)崗位津貼。查詢沒有崗位津貼的員工姓名?!纠?1】

SELECTename,salFROMemployeeWHEREsalBETWEEN1000and1500【例22】

SELECTename,dept_idFROMemployeeWHEREdept_idIN('11','21')

【例23】

SELECTenameFROMemployeeWHEREenameLIKE‘張%’【例24】SELECTename,workdateFROMemployeeWHEREworkdateLIKE‘%1990%’【例25】SELECTenameFROMemployeeWHEREenameLIKE'_小%'【例26】SELECT*FROMemployeeWHEREenameLIKE'[王周]%'【例27】SELECTenameFROMemployeeWHEREcommISNULL邏輯運(yùn)算符SQL語言的邏輯運(yùn)算符有3種:NOT、AND、OR?!纠?8】查詢?cè)滦匠^1500的部門主管的姓名及月薪?!纠?9】查詢?cè)滦匠^1500的員工和所有部門主管的姓名及月薪?!纠?0】查找部門號(hào)不屬于1和2的員工姓名及部門號(hào)。

【例28】

SELECTename,salFROMemployeeWHEREsal>1500ANDjob=‘部門主管’【例29】

SELECTename,salFROMemployeeWHEREsal>1500ORjob=‘部門主管’【例30】

SELECTename,dept_idFROMemployeeWHEREdept_idNOTIN(‘1’,’2’)三、對(duì)查詢結(jié)果排序SQL語言中用ORDERBY子句實(shí)現(xiàn)對(duì)查詢結(jié)果的排序,可以根據(jù)包含的一列或者多列的表達(dá)式進(jìn)行ASC(升序)或DESC(降序)的排列,默認(rèn)值是ASC。ORDERBY子句指定的排序列可以不只一個(gè)。【例31】查詢所有員工的姓名及月薪,結(jié)果按月薪的降序排列。【例32】查詢所有員工的姓名、部門號(hào)及月薪,結(jié)果按部門號(hào)升序排列,同一部門按月薪降序排列。說明:上例中dept_id稱為主排序關(guān)鍵字,sal成為次排序關(guān)鍵字。注意:

(1)ORDERBY子句不改變基本表中行或列的順序,只改變查詢顯示的順序。

(2)ORDERBY子句指定排序的列必須出現(xiàn)在SELECT子句的列表達(dá)式中。

(3)排序是查詢語句的最后一步工作,所以O(shè)RDERBY子句一般放在查詢語句的最后?;颈碇胁幌嗤男校?jīng)過對(duì)某些指定列進(jìn)行投影運(yùn)算后,可能會(huì)變成完全相同的行,顯示結(jié)果不直觀,這時(shí)需要用DISTINCT選項(xiàng)消除重復(fù)的行?!纠?3】查詢表employee中的所有職位。

注意:在一個(gè)SELECT語句中DISTINCT只能出現(xiàn)一次,并且DISTINCT必須在所有列名之前,否則會(huì)發(fā)生語法錯(cuò)誤。與DISTINCT選項(xiàng)含義相反的是A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論