版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢(xún)技能目標(biāo)在銷(xiāo)售管理系統(tǒng)數(shù)據(jù)庫(kù)中能根據(jù)按照指定的要求靈活、快速地查詢(xún)相關(guān)信息。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)知識(shí)目標(biāo)掌握SELECT語(yǔ)句語(yǔ)法格式;掌握最基本的查詢(xún)技術(shù);掌握條件查詢(xún)技術(shù);掌握多重條件查詢(xún)技術(shù);掌握連接查詢(xún)技術(shù);掌握嵌套查詢(xún)。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)SELECT語(yǔ)句的語(yǔ)法格式SELECT<輸出列表>[INTO<新表名>]FROM數(shù)據(jù)源或視圖列表[WHERE<查詢(xún)條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<過(guò)濾條件>]][ORDERBY<排序表達(dá)式>[ASC|DESC]][COMPUTE行聚合函數(shù)名(表達(dá)式)[,...n][BY表達(dá)式[,...n]]]
SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)SELECT語(yǔ)句各子句的功能(1)SELECT子句:指定查詢(xún)返回的列。(2)INTO子句:將檢索結(jié)果存儲(chǔ)到新表或視圖中。(3)FROM子句:用于指定查詢(xún)列所在的表和視圖。(4)WHERE子句:指定用于限制返回的行的搜索條件。(4)GROUPBY子句:指定用來(lái)放置輸出行的組。并且如果SELECT子句<SELECTLIST>中包含聚合函數(shù),則計(jì)算每組的匯總值。(5)HAVING子句:指定組或聚合的搜索條件。HAVING通常與GROUPBY子句一起使用。(6)ORDERBY子句:指定結(jié)果集的排序。(7)COMPUTE字句:用于對(duì)結(jié)果集進(jìn)行分組并對(duì)每一組數(shù)據(jù)進(jìn)行匯總計(jì)算。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)SELECT語(yǔ)句的執(zhí)行方式SQLServer2005提供了查詢(xún)編輯器,用于編輯和運(yùn)行查詢(xún)代碼?!纠坎樵?xún)所有員工的信息。操作的具體步驟如下。(1)啟動(dòng)SQLServerManagementStudio。(2)在【對(duì)象資源管理器】中,單擊工具欄的【新建查詢(xún)】按鈕,打開(kāi)查詢(xún)編輯器。(3)在查詢(xún)編輯器中,輸入如下代碼。SELECT*FROMemployee(4)單擊【工具欄】的按鈕,進(jìn)行語(yǔ)法分析。在【結(jié)果】窗體中出現(xiàn)“命令已成功完成”的消息,表示當(dāng)前的查詢(xún)語(yǔ)句沒(méi)有語(yǔ)法錯(cuò)誤。(5)單擊按鈕,在當(dāng)前數(shù)據(jù)庫(kù)中執(zhí)行查詢(xún)語(yǔ)句。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-SELECT子句1、查詢(xún)所有的列(使用*)【例】從商品表中查詢(xún)所有商品的信息。2、查詢(xún)指定的列【例】從客戶(hù)表中檢索所有客戶(hù)的公司名稱(chēng)、聯(lián)系人姓名和地址。3、使用TOP關(guān)鍵字限制返回行數(shù)【例】檢索客戶(hù)表中前5位客戶(hù)的公司名稱(chēng)、聯(lián)系人姓名和地址。4、使用DISTINCT關(guān)鍵字過(guò)濾重復(fù)行【例】從員工表中查詢(xún)所有員工的部門(mén)信息,并消去重復(fù)記錄。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-SELECT子句(續(xù))5、更改列標(biāo)題方法:采用“列標(biāo)題=列名”的格式采用“列名列標(biāo)題”的格式采用“列名as列標(biāo)題”的格式【例】查詢(xún)每個(gè)員工的姓名和性別,并在每人的姓名標(biāo)題上顯示“員工姓名”?!揪毩?xí)】使用其他兩種方法SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-SELECT子句(續(xù))6、使用計(jì)算列【例】查詢(xún)所有員工的工資在提高10%后信息,將提高后的工資列標(biāo)題為“提高后工資”。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-INTO子句INTO子句用于將查詢(xún)的結(jié)果插入新表中,其語(yǔ)法格式如下。INTO新表名【例】使用INTO子句創(chuàng)建一個(gè)包含員工姓名和工資,并命名為new_employee的新表。USECompanySalesGOSELECTEmployeeName,SalaryINTOnew_employeeFROMemployeeGOSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-WHERE子句使用WHERE子句的目的是為了從表格的數(shù)據(jù)集中過(guò)濾出符合條件的行。其語(yǔ)法格式如下:SELECT<輸出列表>[INTO<新表名>]FROM<數(shù)據(jù)源列表>[WHERE<查詢(xún)條件表達(dá)式>SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-WHERE子句(續(xù))1、使用算術(shù)表達(dá)式比較運(yùn)算符包含多個(gè),例如>、<、>=、>、!=、!>等,其中<>、!=均表示不等于,!>表示不大于。【例】查詢(xún)員工“蔡慧敏”的工資?!纠吭贑ompanySales數(shù)據(jù)庫(kù)的員工表(employee)中,查詢(xún)工資大于3000元的員工信息2、使用邏輯表達(dá)式
表達(dá)式AND或OR表達(dá)式或:NOT表達(dá)式【例】在CompanySales數(shù)據(jù)庫(kù)的員工表(employee)中,查詢(xún)工資在3400元以下的女性員工姓名和工資信息。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)3、使用搜索范圍運(yùn)算符使用關(guān)鍵字Between…and,即查詢(xún)介于兩個(gè)值之間的記錄信息。語(yǔ)法格式如下:列名Between【NotBetween】起始值A(chǔ)nd終止值4、使用IN關(guān)鍵字IN關(guān)鍵字給出表達(dá)式的取值范圍。如果字段取值等于列表中某個(gè)取值,則運(yùn)算結(jié)果為T(mén)RUE,否則運(yùn)算結(jié)果為FALSE,并顯示相應(yīng)的記錄。語(yǔ)法:列名[NOT]IN(值1,值2,…值n)【例】在CompanySales數(shù)據(jù)庫(kù)的銷(xiāo)售訂單表(Sell_order)中,查詢(xún)員工編號(hào)為1、5和7的員工接受訂單信息。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-WHERE子句(續(xù))5、使用模糊匹配LIKE子句格式如下:列名[NOT]LIKE<模式字符串>
通配符:%_(下劃線)【例】找出所有姓“章”的員工信息?!纠空页鏊胁恍铡袄睢钡膯T工信息。6、空或非空性空和非空的判斷準(zhǔn)則是ISNULL和ISNOTNULL。【例】在銷(xiāo)售管理數(shù)據(jù)庫(kù)中,查找目前有哪些主管位置是為不空。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-ORDERBY子句通常查詢(xún)結(jié)果集中的記錄的顯示順序是它們?cè)诒碇械捻樞颍袝r(shí)候用戶(hù)希望按照表中某個(gè)字段的升序或者降序顯示。語(yǔ)法格式:ORDERBY列名1[ASC|DESC][,列名2[ASC|DESC][,…n]]【例】按工資降序顯示員工的姓名和工資,工資相同時(shí)按姓名升序排序。USECompanySalesGOSELECT*FROMemployeeSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)使用聚合函數(shù)AVG函數(shù)SUM函數(shù)MAX函數(shù)MIN函數(shù)COUNT函數(shù)SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)使用聚合函數(shù)(續(xù))1.求和函數(shù)SUM與求平均值函數(shù)AVG 它們只能用于數(shù)值型字段,而且忽略列值為NULL的記錄。2.最大值函數(shù)MAX與最小值函數(shù)MIN 忽略列值為NULL的記錄,列表達(dá)式中的列可以是任何可排序的類(lèi)型。3.計(jì)數(shù)函數(shù)COUNT 用于統(tǒng)計(jì)查詢(xún)結(jié)果集中記錄的個(gè)數(shù),“*”用于統(tǒng)計(jì)所有記錄的個(gè)數(shù),ALL用于統(tǒng)計(jì)指定列的列值非空的記錄個(gè)數(shù),DISTINCT用于統(tǒng)計(jì)指定列的列值非空且不重復(fù)的記錄個(gè)數(shù)。默認(rèn)值為ALL。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-GROUPBY子句如果需要按某一列數(shù)據(jù)的值進(jìn)行分類(lèi),在分類(lèi)的基礎(chǔ)上再進(jìn)行查詢(xún),就要使用GROUPBY子句,它的語(yǔ)法格式如下。GROUPBY<組合表達(dá)式>【例】查詢(xún)男女員工的平均工資?!纠吭阡N(xiāo)售表Sell_Order表中,統(tǒng)計(jì)目前各種商品的訂單總數(shù)。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-HAVING子句HAVING子句指定組或聚合的搜索條件。HAVING只能與SELECT語(yǔ)句一起使用。HAVING通常在GROUPBY子句中使用。HAVING條件表達(dá)式選項(xiàng),則表示對(duì)生成的組進(jìn)行篩選后,再對(duì)每組進(jìn)行匯總計(jì)算。如果不使用GROUPBY子句,則HAVING的行為與WHERE子句一樣,它的語(yǔ)法格式如下。HAVING搜索條件【例】在銷(xiāo)售表Sell_Order表中,查詢(xún)目前訂單總數(shù)超過(guò)1000的商品訂單信息。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)簡(jiǎn)單查詢(xún)-COMPUTE子句COMPUTE子句可以用于SELECT語(yǔ)句既查看明細(xì)行,又查看匯總行??梢杂?jì)算分組的匯總值,也可以計(jì)算整個(gè)結(jié)果集的匯總值。語(yǔ)法格式如下。COMPUTE{聚合函數(shù)名(列名)}[,…N][BY表達(dá)式[,…N]【例】查詢(xún)員工表employee中部門(mén)編號(hào)為1的各員工工資信息,并計(jì)算平均工資?!纠繉?duì)employee表中部門(mén)編號(hào)為1或2的員工工資,按照其部門(mén)編號(hào)生成分組匯總行和明細(xì)行?SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)連接查詢(xún)連接的類(lèi)型分為內(nèi)連接、外連接和交叉連接。連接的格式有兩種如下。格式一:SELECT<輸出列表>FROM<表1><連接類(lèi)型><表2>[ON(<連接條件>)]格式二:SELECT<輸出列表>FROM<表1>,<表2>[WHERE<表1>.<列名><連接操作符><表2>.<列名>]SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)交叉連接交叉連接又稱(chēng)笛卡兒積,返回兩個(gè)表的乘積。例:表A有10行數(shù)據(jù),表B有20行數(shù)據(jù),那么表A和表B交叉連接的結(jié)果記錄集有400行(10×20)數(shù)據(jù)。交叉連接使用CROSSJOIN關(guān)鍵字來(lái)創(chuàng)建。說(shuō)明:交叉連接只是用于測(cè)試一個(gè)數(shù)據(jù)庫(kù)的執(zhí)行效率,在實(shí)際應(yīng)用中是無(wú)意義的?交叉連接的使用是比較少的,交叉連接不需要連接條件。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)交叉連接(續(xù))【例】查詢(xún)員工表與部門(mén)表的所有組合。USECompanySalesGOSELECTemployee.*,department.*FROMemployeeCROSSJOINdepartmentGOSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)內(nèi)連接內(nèi)連接把兩個(gè)表中的數(shù)據(jù),通過(guò)相同的列,連接生成第3個(gè)表,僅包含那些滿(mǎn)足連接條件的數(shù)據(jù)行。內(nèi)連接分為等值連接、非等值連接和自然連接?!纠坎樵?xún)已訂購(gòu)了商品客戶(hù)的公司名稱(chēng),聯(lián)系人姓名和所訂商品編號(hào)和訂購(gòu)數(shù)量?!纠坎樵?xún)“國(guó)皓科技有限公司”的訂單信息說(shuō)明:在多表查詢(xún)中,Select子句或Where子句中的列名前都加上了表名作為前綴,這樣可避免來(lái)自不同表中相同屬性名發(fā)生混淆。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)外連接分類(lèi):左外連接、右外連接和全外連接。左向外連接:只包括左表的所有行,不包括右表的不匹配行的外連接;右向外連接:只包括右表的所有行,不包括左表的不匹配行的外連接。完整外部連接:既包括左表不匹配的行,也包括右表的不匹配的行的連接SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)左外連接語(yǔ)法如下:SELECT<選擇列表>FROM左表名LEFT[OUTER]JOIN右表名ON連接條件【例】查詢(xún)是否所有的員工均接受了銷(xiāo)售訂單,包括員工的姓名和訂單信息。SELECTemployee.employeename,sell_order.*FROMemployeeLEFTJOINsell_orderonemployee.employeeID=sell_order.employeeIDSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)右外連接右外連接的語(yǔ)法如下。SELECT<選擇列表>FROM左表名RIGHT[OUTER]JOIN右表名ON連接條件包括右表(出現(xiàn)在JOIN子句的最右邊)中的所有行。不包括左表中的不匹配行?!纠坎樵?xún)是否所有的供應(yīng)商提供的商品情況。USECompanySalesGOSELECTPurchase_order.*,viderNameFROMPurchase_orderRIGHTJOINprovideronPurchase_viderID=viderIDGOSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)全外連接全外連接的語(yǔ)法如下。SELECT<選擇列表>FROM左表名FULL[OUTER]JOIN右表名ON連接條件包括所有連接表中的所有記錄,不論它們是否匹配?!纠渴褂萌膺B接查詢(xún)客戶(hù)和商品的訂購(gòu)信息,包括客戶(hù)名稱(chēng)、聯(lián)系人姓名、訂購(gòu)的商品名稱(chēng)、訂購(gòu)的數(shù)量和訂購(gòu)日期。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)嵌套查詢(xún)?cè)赟QL中,將一條SELECT語(yǔ)句作為另一條SELECT語(yǔ)句的一部分稱(chēng)為嵌套查詢(xún)。外層的SELECT語(yǔ)句被稱(chēng)為外部查詢(xún)或父查詢(xún),內(nèi)層的SELECT語(yǔ)句成為內(nèi)部查詢(xún)或子查詢(xún)。嵌套查詢(xún)?nèi)缦?。SELECT<語(yǔ)句>/*外層查詢(xún)或父查詢(xún)*/FROM<語(yǔ)句>WHERE<表達(dá)式>IN
(SELECT<語(yǔ)句>/*內(nèi)層查詢(xún)或子查詢(xún)*/FROM<語(yǔ)句>WHERE<條件>)SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)單值嵌套單值嵌套就是通過(guò)子查詢(xún)返回一個(gè)單一的數(shù)據(jù)。當(dāng)子查詢(xún)返回的是單值,可以使用>,<,=,<=,>=,!=或<>等比較運(yùn)算符參加相關(guān)表達(dá)式的運(yùn)算。SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)單值嵌套(續(xù))【例】查找員工“姚安娜”所在的部門(mén)名稱(chēng)。步驟1:查詢(xún)員工“姚安娜”所在的部門(mén)編號(hào),查詢(xún)語(yǔ)句如下。SELECTdepartmentIDFROMemployeeWHEREemployeeName='姚安娜'得到的結(jié)果為3步驟2:查詢(xún)部門(mén)編號(hào)為3的部門(mén)名稱(chēng)。SELECTdepartmentNameFROMdepartmentWHEREdepartmentID=3得到結(jié)果為“人事部”。組合:SELECTdepartmentName部門(mén)名稱(chēng)FROMdepartmentWHEREdepartmentID=(SELECTdepartmentIDFROMemployeeWHEREemployeeName='姚安娜')SQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)單值嵌套(續(xù))【例】查找年齡最小的員工姓名、性別和工資。USECompanySalesGOSELECTemployeeName姓名,sex性別,BirthDate出生年月,salary工資FROMemployeeWHEREBirthDate=(SELECTMAX(BirthDate)FROMemployee)GOSQLServer2005數(shù)據(jù)庫(kù)應(yīng)用技術(shù)多值嵌套子查詢(xún)的返回結(jié)果是一列值的嵌套查詢(xún)稱(chēng)為多值嵌套查詢(xún)。多值嵌套查詢(xún)經(jīng)常使用IN操作符。IN操作符使用的格式如下。<表達(dá)式>[NOT]IN(子查詢(xún)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024房屋買(mǎi)賣(mài)全款購(gòu)房合同范本模板
- 2024年度勞動(dòng)合同員工崗位及工資待遇
- 2024公立醫(yī)院與醫(yī)療設(shè)備供應(yīng)商之間的采購(gòu)合同
- 2024丙丁雙方就服務(wù)器租賃及維護(hù)合同
- 2024年度醫(yī)藥產(chǎn)品研發(fā)與生產(chǎn)承包合同
- 2024年度船舶租賃合同
- 2024年度股權(quán)投資投資人與目標(biāo)公司股權(quán)轉(zhuǎn)讓合同
- 2024年修訂版:知識(shí)產(chǎn)權(quán)許可使用合同標(biāo)的規(guī)范
- 2024年度KTV裝修設(shè)計(jì)服務(wù)合同
- 賽船音樂(lè)課件教學(xué)課件
- 大學(xué)英語(yǔ)四級(jí)真題閱讀練習(xí)10套(附參考答案)
- 國(guó)家慢性腎病臨床醫(yī)學(xué)研究中心
- 2023年漢字聽(tīng)寫(xiě)大會(huì)漢字聽(tīng)寫(xiě)知識(shí)競(jìng)賽題庫(kù)及答案(共三套)
- 碼垛機(jī)械手結(jié)構(gòu)設(shè)計(jì)
- 滬昆高速鐵路
- 破舊立新創(chuàng)新安全管理
- 演示文稿意大利埃托索特薩斯
- 生產(chǎn)成本控制與效率提升
- 環(huán)境工程專(zhuān)業(yè)英語(yǔ)全套課件ppt
- 溫潤(rùn)童心博愛(ài)至善
- 藝術(shù)課程標(biāo)準(zhǔn)(2022年版)
評(píng)論
0/150
提交評(píng)論