




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章SQL語言與查詢學(xué)習(xí)要點(diǎn)基本查詢多表聯(lián)接子查詢集合運(yùn)算聚合函數(shù)
本章主要內(nèi)容SQL語言概述SQL語言的功能種類數(shù)據(jù)類型、運(yùn)算符與表達(dá)式基本查詢多表聯(lián)接子查詢集合運(yùn)算聚合函數(shù) 3.1SQL語言概述SQL(StructuredQueryLanguage)是一種結(jié)構(gòu)化查詢語言,簡稱為SQL。它是1972年在SQUARE(SpecifyingQueriesAsRelationalExpression)語言的基礎(chǔ)上由Boyce和Chamberlin提出的一個(gè)標(biāo)準(zhǔn)的、通用的結(jié)構(gòu)化查詢語言,后來將SEQUEL改為SQL。1989年,美國ANSI采納了ANSIX3.134—1989報(bào)告中定義的關(guān)系數(shù)據(jù)庫管理系統(tǒng)的SQL標(biāo)準(zhǔn)語言,稱為ANSISQL89。該標(biāo)準(zhǔn)被國際標(biāo)準(zhǔn)化組織(ISO)和美國聯(lián)邦政府組織所采納。
3.2SQL語言的功能種類SQL語言按照功能可以分為四大類:(1)數(shù)據(jù)查詢語言,主要用于查詢數(shù)據(jù),以SELECT語句為主要關(guān)鍵詞。(2)數(shù)據(jù)定義語言DDL,用于定義SQL模式、基本表、視圖和索引。(3)數(shù)據(jù)操縱語言DML,主要用于完成數(shù)據(jù)修改操作。(4)數(shù)據(jù)控制語言DCL,用于控制對數(shù)據(jù)庫的訪問,服務(wù)器的關(guān)閉、啟動(dòng)等
3.3數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.3.1簡單數(shù)據(jù)類型常用的簡單數(shù)據(jù)類型分為9個(gè):Number(p,s)、smallint、integer、float、double、char(n)、varchar(n)、date、time,下面一一進(jìn)行介紹。(1)Number(p,s)。p是數(shù)字的整個(gè)位數(shù),s是小數(shù)點(diǎn)后的位數(shù)。如:number(8,4)是一個(gè)8位數(shù)字,其中小數(shù)點(diǎn)后有4位。如果沒有特別指定,例如:number,則系統(tǒng)會(huì)設(shè)為p=5;s=0。(2)smallint。表示16位的整數(shù)。(3)integer。表示32位的整數(shù)。(4)float。表示32位的實(shí)數(shù)。(5)double。表示64位的實(shí)數(shù)。(6)char(n)。表示固定長度為n的字符串,n不能超過254。(7)varchar(n)。表示可變長度的字符串且其最大長度為n,n不能超過4000。(8)date。表示日期,包含年份、月份。(9)time。表示時(shí)間,包含小時(shí)、分鐘、秒。3.3.2運(yùn)算符SQL的運(yùn)算符分為如下幾種:(1)算術(shù)運(yùn)算符。加(+),減(-),乘(*),除(/)。(2)比較運(yùn)算符。(3)邏輯運(yùn)算符(4)范圍運(yùn)算符(5)列表運(yùn)算符。3.3.3表達(dá)式SQL語言的表達(dá)式分為三類:①算術(shù)表達(dá)式;②關(guān)系表達(dá)式;③邏輯表達(dá)式。(1)算術(shù)表達(dá)式。用算術(shù)運(yùn)算符連接的表達(dá)式稱為算術(shù)表達(dá)式。如:sal+2000。(2)關(guān)系表達(dá)式。用比較運(yùn)算符連接的表達(dá)式稱為關(guān)系表達(dá)式。如:sal>2000。(3)邏輯表達(dá)式。用邏輯運(yùn)算符連接的表達(dá)式稱為邏輯表達(dá)式。如:name='HERY'ANDSAL=2000。3.4基本查詢SELECT語句的功能是從指定的數(shù)據(jù)庫的表中提取數(shù)據(jù)。其語法格式為:SELECT[ALL|DISTINCT]{字段名列表}FROM表名[WHERE{條件表達(dá)式}][GROUPBY{group_by_list}][ORDERBY{order_by_list}[ASC/DESC]];說明:這條語句分為三大部分:(1)SELECT:SELECT子句用于指定檢索數(shù)據(jù)庫中的哪些列。(2)FROM:FROM子句用于指定從哪一個(gè)表或視圖中檢索數(shù)據(jù)。(3)WHERE:WHERE字句用于在查詢過程中的限制條件。關(guān)于DISTINCT子句、GROUPBY子句、ORDERBY子句的使用在本節(jié)后面介紹。3.4.1簡單查詢簡單查詢格式如下:SELECT{字段名列表}FROM表名;【例】假設(shè)關(guān)于一個(gè)企業(yè)信息的數(shù)據(jù)庫中有三個(gè)表:職工表EMP、部門表DEPT、崗位(或工種)表JOBLEVEL。其中:表EMP有如下字段:序號字段名稱字段類型字段說明1name字符型職工姓名2sex字符型性別3birth日期型出生日期4phone字符型員工個(gè)人聯(lián)系方式5deptname字符型所在部門6salary實(shí)型數(shù)據(jù)工資7job字符型崗位(或工種)8title字符型職務(wù)(無職務(wù),可以為空)這個(gè)表表主要要描述述企業(yè)業(yè)的職職工信信息,,數(shù)據(jù)據(jù)如下下namesexbirthdeptnametitlephonesalaryjob歐陽軍女1986-09-01辦公室867988212500文員底雪洋男1998-10-09軟件開發(fā)部867988233800軟件開發(fā)李一嵐女1984-10-01軟件開發(fā)部139123454500軟件開發(fā)白海燕女1978-02-09市場部867988251700產(chǎn)品銷售劉紫羽女1989-01-09辦公室主任867988213000文員劉徐貝爾女1989-01-09軟件開發(fā)部經(jīng)理867988234500軟件開發(fā)周楚遠(yuǎn)男1989-01-09市場部經(jīng)理867988252000產(chǎn)品銷售表DEPT有如下下字段段序號字段名稱字段類型字段說明1deptname字符型部門名2manager字符型部門經(jīng)理姓名3addr字符型部門地址4phone字符型電話號碼表JOBLEVEL有如下下字段段:序號字段名稱字段類型字段說明1job字符型崗位名字2level1數(shù)字型工資等級13level2數(shù)字型工資等級24level3數(shù)字型工資等級33.4.2帶條件件的簡簡單查查詢SELECT{字段名名列表表}FROM表名WHERE{條件表表達(dá)式式}]這里講講的帶帶條件件的簡簡單查查詢指指單條條件的的查詢詢和組組合條條件的的查詢詢。下下面分分別介介紹。。1.單條條件的的查詢詢【例】查詢企企業(yè)中中工資資超過過2100元(包包括2100元)的的所有有員工工的姓姓名及及其崗崗位。。SQL語句如如下::SQL>SELECTname,salary,jobFROMEMPWHEREsalary>=2100;2.組合合條件件的查查詢組合條條件指指WHERE子句中中的條條件由由多個(gè)個(gè)條件件組成成,這這些組組合主主要是是由邏邏輯運(yùn)運(yùn)算符符(AND、OR、NOT)組成成??纯聪旅婷娴睦?。?!纠空页銎笃髽I(yè)員員工中中做軟軟件開開發(fā)工工作并并且工工資在在4000元以上上的員員工姓姓名和和所在在部門門。SQL語句如如下::SQL>SELECTname,deptname,salary,jobFROMEMPWHEREjob='軟件開開發(fā)'andsalary>4000;3.4.3單表查查詢應(yīng)應(yīng)用1.查詢詢某些些字段段不同同的記記錄在查詢詢工程程中,,可能能發(fā)現(xiàn)現(xiàn)有某某些相相同的的數(shù)據(jù)據(jù),為為了只只顯示示不同同的數(shù)數(shù)據(jù),,可以以使用用DISTINCT關(guān)鍵字字?!纠坎樵兤笃髽I(yè)中中有多多少種種不同同的崗崗位。。SQL語句如如下::SQL>SELECTDISTINCTjobFROMEMP;2.BETWEEN…AND關(guān)鍵字字的使使用BETWEEN…AND關(guān)鍵字字給出出了查查詢范范圍內(nèi)內(nèi)的字字段,,而NOTBETWEEN…AND則給出出了查查詢選選擇范范圍之之外的的某些些列。。【例】找出工工資在在2000元到3500元的所所有員員工。。SQL語句如如下::SQL>SELECTname,salaryFROMEMPWHEREsalaryBETWEEN2000AND3500;3.模糊糊查詢詢前面的的查詢詢都是是精確確查詢詢,但但是我我們平平時(shí)查查詢時(shí)時(shí)經(jīng)常常會(huì)使使用模模糊查查詢,,比如如“找找姓陳陳的先先生””,““找員員工名名字中中最后后一個(gè)個(gè)字是是琳的的小姐姐”等等,這這些只只給出出某個(gè)個(gè)字段段得到到部分分關(guān)鍵鍵詞而而不是是字段段的整整個(gè)數(shù)數(shù)據(jù)時(shí)時(shí),就就可以以使用用LIKE關(guān)鍵字字了。。而NOTLIKE的意思思正好好相反反。這里介介紹幾幾個(gè)通通配符符,如如表3-3所示。。序號通配符說明1%代表0到多個(gè)字符2_代表單個(gè)字符4.NULL和NOTNULL關(guān)鍵字字的使使用NULL和NOTNULL主要用用于找找出下下落不不明值值的記記錄。。例如如,在在公司司人員員招聘聘過程程中,,查詢詢出尚尚未安安排面面試的的候選選人名名單。?!纠坎樵冝k辦公室室中一一般員員工的的基本本信息息(不不帶職職務(wù)的的員工工)。。SQL語句如如下::SQL>SELECT*FROMEMPWHEREdeptname="辦公室室"ANDtitle=null;5.查詢詢結(jié)果果排序序ORDERBY子句使使得SQL在顯示示查詢詢結(jié)果果時(shí)將將各返返回行行按順順序排排列,,返回回行的的排列列順序序由ORDERBY子句指指定的的表達(dá)達(dá)式的的值A(chǔ)SC或DESC確定。。SELECT[ALL|DISTINCT]{字段名名列表表}FROM表名[WHERE{條件表表達(dá)式式}][GROUPBY{group_by_list}][ORDERBY{order_by_list}[ASC/DESC]];其中::ASC:升序序。表表示按按照遞遞增順順序從從低到到高對對指定定的列列值排排序。。DESC:降序序。表表示按按照遞遞減順順序從從高到到低對對指定定的列列值排排序。。6.字段段運(yùn)算算查詢詢在數(shù)據(jù)據(jù)庫查查詢時(shí)時(shí),我我們希希望把把表中中的數(shù)數(shù)據(jù)進(jìn)進(jìn)行基基本的的算術(shù)術(shù)運(yùn)算算,然然后顯顯示出出來。。常見的的算術(shù)術(shù)運(yùn)算算有::+(加))、-(減))、*(乘乘)、、/(除))四種種?!纠咳绻麑④浖_發(fā)發(fā)部的的所有有員工工工資資增加加1000元,請請顯示示出此此部門門的員員工姓姓名和和工資資。SQL語句如如下::SQL>SELECTname,salary+1000FROMEMPWHEREdeptname='軟件開開發(fā)部部';7.rowid和rownumrowid和rownum是很有有用的的兩個(gè)個(gè)數(shù)據(jù)據(jù)庫表表中隱隱含的的字段段。rowid是數(shù)據(jù)據(jù)庫內(nèi)內(nèi)部的的十六六進(jìn)制制的數(shù)數(shù)據(jù)地地址,,表明明信息息放在在第幾幾塊第第幾行行。rownum是行號號,并并且順順序排排列,,根據(jù)據(jù)你的的select語句的的執(zhí)行行動(dòng)態(tài)態(tài)生成成。它它表示示是表表的邏邏輯上上的第第幾行行【例】區(qū)別rowid和rownum。SQL>SELECTrownum,rowid,enameFROMEMP;執(zhí)行結(jié)結(jié)果::rownumrowidename-----------------------------------------------------------------1D9B3333C.0003.0002白海燕燕2DAAAA66D.0002.0002周楚遠(yuǎn)遠(yuǎn)3BAA33331.0003.0002底雪洋洋4D555DFD.0005.0002歐陽軍軍5DB133344.0006.0002劉徐貝貝爾………………………………………….8.別名名的使使用在前面面的查查詢中中,顯顯示的的結(jié)果果都是是用字字段名名來顯顯示的的,這這樣不不是很很直觀觀,我我們可可以給給顯示示的字字段名名起一一個(gè)直直觀的的名字字(叫叫“別別名””),,以這這個(gè)別別名來來顯示示。格格式是是:字段名名[as]別名在“字字段名名”和和“別別名””之間間加空空格或或者““as””即可,,可以以將默默認(rèn)的的字段段名以以設(shè)定定的名名稱顯顯示。。【例】顯示出出軟件件開發(fā)發(fā)部的的每個(gè)個(gè)員工工工資資增加加1000元后的的信息息。SQL>SELECTname員工姓姓名,salary+1000增加工工資FROMEMPWHEREdeptname='軟件開開發(fā)部部';3.4.4多表查查詢多表查查詢是是指查查詢結(jié)結(jié)果要要從兩兩個(gè)以以上的的表中中檢索索結(jié)果果?!纠坎樵儐T員工““劉紫紫羽””所在在的部部門地地址。。分析::首先先確定定要求求中的的關(guān)鍵鍵字::劉紫紫羽,,部門門地址址。然然后確確定查查詢的的表有有哪些些?!啊安块T門名稱稱”在在部門門表DEPT中,但但是““劉紫紫羽””是員員工名名稱,,“員員工名名稱””在表表EMP中。所所以我我們確確定查查詢的的表涉涉及兩兩個(gè)表表:EMP和DEPT。SQL語句如如下::SQL>SELECTd.addrFROMEMPe,DEPTdWHERE='劉紫羽羽';3.5子查詢詢?nèi)绻衬骋粋€(gè)個(gè)SELECT命令((查詢詢1)出現(xiàn)現(xiàn)在另另一個(gè)個(gè)SQL命令((查詢詢2)的一一個(gè)子子句中中,則則稱查查詢1是查詢詢2的子查查詢,,又稱稱為““嵌套套查詢詢”。。在SELECT查詢語語句里里可以以嵌入入SELECT查詢語語句,,稱為為嵌套套查詢詢。有有些書書中將將內(nèi)嵌嵌的SELECT語句稱稱為““子查查詢””,子子查詢詢形成成的結(jié)結(jié)果又又稱為為父查查詢的的條件件。下面是是嵌套套查詢詢的格格式::SELECT字段列列表FROM表名WHERE操作符符(SELECTselect_listFROMtable);3.5.1簡單子子查詢詢【例】查詢員員工中中所有有高于于員工工底雪雪洋薪薪水的的員工工信息息。SQL語句如如下::SQL>SELECTname,sex,salaryFROMEMPWHEREsalary>=(SELECTsalaryFROMEMPWHEREname='底雪雪洋洋');3.5.2單行行子子查查詢詢單行行子子查查詢詢的的結(jié)結(jié)果果僅僅返返回回一一行行記記錄錄。。一一般般使使用用比比較較運(yùn)運(yùn)算算符符((<、>、<=、>=、<>)。?!纠块喿x讀下下面面的的SQL語句句,,并并解解釋釋其其含含義義。。SQL>SELECTname,sex,salaryFROMEMPWHEREjob=(SELECTjobFROMEMPWHEREname='底雪雪洋洋')ANDsalary>(SELECTsalaryFROMEMPWHEREname='李一一嵐嵐');3.6集合合運(yùn)運(yùn)算算3.6.1UNIONUNION是集集合合的的并并運(yùn)運(yùn)算算,,并并運(yùn)運(yùn)算算的的結(jié)結(jié)果果是是參參加加運(yùn)運(yùn)算算的的集集合合元元素素的的總總和和,,相相當(dāng)當(dāng)于于數(shù)數(shù)學(xué)學(xué)的的加加法法。。如如圖圖3-1所示示。。其其中中集集合合A和集集合合B的交交叉叉部部分分為為集集合合C。集合合A集合合B3.6.2INTERSECTINTERSECT是集集合合的的交交運(yùn)運(yùn)算算。。交交運(yùn)運(yùn)算算的的結(jié)結(jié)果果是是參參加加運(yùn)運(yùn)算算的的集集合合元元素素的的公公共共元元素素。。假設(shè)設(shè)::集集合合A={1,2,3},集集合合B={2,3,5},那那么么執(zhí)執(zhí)行行INTERSECT運(yùn)算算的的結(jié)結(jié)果果是是{2,3}。數(shù)學(xué)學(xué)符符號號記記為為::A∩∩B。在SQL語言言中中它它返返回回查查詢詢結(jié)結(jié)果果中中的的相相同同部部分分。?!纠空页龀鯽ccount、research、sales中都都存存在在的的工工種種。。SQL>SELECTjobFROMaccountINTERSECTSELECTjobFROMresearchINTERSECTSELECTjobFROMsales;3.6.3MINUSMINUS是集合的差運(yùn)運(yùn)算。差運(yùn)算算的結(jié)果是參參加運(yùn)算的集集合元素中從從第一個(gè)集合合中去掉二者者相同部分元元素后剩余的的元素,相當(dāng)當(dāng)于數(shù)學(xué)的減減法。假設(shè):集合A={1,2,3},集合B={2,3,5},那么執(zhí)行MINUS運(yùn)算的結(jié)果是是{1}。數(shù)學(xué)符號記為為:A-B。在SQL語言中它返回回在第一次查查詢結(jié)果中而而不在第二次次查詢結(jié)果中中的記錄。【例】找出在account中存在而在research中不存在的工工種。SQL>SELECTjobFROMaccountMINUSSELECTjobFROMresearch;3.7聚合函數(shù)常用的聚合函函數(shù)包括如下下幾種函數(shù)::AVG()、MIN()、MAX()、SUM()、COUNT()。1.MAX格式:MAX(x)返回一個(gè)字段段的所有值中中的最大值。。如果x是VARCHAR2數(shù)據(jù)類型,返返回一個(gè)字符符串;如果x是一個(gè)DATE數(shù)據(jù)類型,返返回一個(gè)日期期;如果x是number數(shù)據(jù)類型,返返回一個(gè)數(shù)字字。【例】查詢EMP表中的最高工工資。SQL>SELECTmax(salary)AS最高薪水FROMEMP;2.MIN格式:MIN(x)返回一個(gè)字段段的所有值中中的最小值。。如果字段是是空的,函數(shù)數(shù)MIN()返回空值。【例】查詢EMP表中的最低工工資。SQL>SELECTMIN(salary)AS最少薪水FROMEMP;【例】查詢公司中工工資最高和工工資最低的員員工。SQL>SELECTename,salFROMEMPHAVINGsal=(SELECTMAX(SAL)FROMEMP)ANDsal=(SELECTMIN(SAL)FROMEMP);3.AVG格式:AVG({x}返回指定字段段中的平均值值。注意,函函數(shù)AVG()只能對數(shù)值型型字段使用,,即x的數(shù)據(jù)類型只只能是數(shù)值型型,如果空值值即AVG(''),忽略不計(jì)。。缺省設(shè)置為為ALL?!纠坎樵冘浖_發(fā)發(fā)部人員的平平均工資。SQL>SELECTavg(salary)AS平均工資FROMEMPWHEREdeptname='軟件開發(fā)部';4.COUNT格式:COUNT(*)返回查詢中行行的數(shù)目,缺缺省值是ALL,*表示返回回所有的行。。用來統(tǒng)計(jì)一一個(gè)表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度土地流轉(zhuǎn)承包與農(nóng)業(yè)品牌建設(shè)合作協(xié)議
- 二零二五年度農(nóng)村土地租賃合同(含農(nóng)業(yè)合作社合作)
- 酒店特色宴席套餐定制服務(wù)協(xié)議合同(2025年度)
- 偉星地暖產(chǎn)品二零二五年度質(zhì)量檢測與監(jiān)管合同
- 二零二五年度智能包裝物回收體系建設(shè)合同
- 茅臺酒銷售2025年度區(qū)域代理權(quán)合作協(xié)議
- 二零二五年度勞務(wù)合同解除與商業(yè)秘密保護(hù)協(xié)議
- 二零二五年度城市公共設(shè)施設(shè)備維修保養(yǎng)與城市管理協(xié)議
- 2025年度牛羊養(yǎng)殖基地牛羊養(yǎng)殖與市場拓展購買合同
- 二零二五年度手車背戶車輛新能源推廣與應(yīng)用合同
- 商業(yè)道德承諾書
- 中職語文必考文言文15篇
- 光伏電站巡檢記錄表完整
- 高血壓患者不遵醫(yī)飲食行為的原因分析及對策
- 《團(tuán)隊(duì)的凝聚力》課件
- 膝關(guān)節(jié)僵硬個(gè)案護(hù)理
- 《民間皮影》課程標(biāo)準(zhǔn)
- 新教科版六下科學(xué)1.4《設(shè)計(jì)塔臺模型》教學(xué)設(shè)計(jì)(新課標(biāo))
- 電氣設(shè)備維修
- 森林專業(yè)撲火隊(duì)培訓(xùn)課件
- 學(xué)校體育學(xué)第八章課余體育鍛煉課件
評論
0/150
提交評論