《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言_第1頁
《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言_第2頁
《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言_第3頁
《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言_第4頁
《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

SQL語言與可編程對(duì)象4《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第1頁。目錄常用SQL語句4.1可編程對(duì)象4.2《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第2頁。SQL語言概述《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第3頁。SQL語言概述SQL是結(jié)構(gòu)化查詢語言(StructureQueryLanguage)的簡稱,是關(guān)系數(shù)據(jù)庫操作語言的國際標(biāo)準(zhǔn)。MySQL所使用的SQL語言遵從ANSI-92國際標(biāo)準(zhǔn)。《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第4頁。SQL語言的特點(diǎn)非過程化的描述性語言。語言簡潔、易學(xué)易用。使用方式聯(lián)機(jī)交互獨(dú)立使用嵌入到其他宿主語言輸入SQL語句操作結(jié)果《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第5頁。在NavicatforMySQL中打開交互式操作窗口1.點(diǎn)擊工具欄中的“查詢”按鈕2.點(diǎn)擊“新建查詢”3.在“查詢編輯器”中輸入命令,點(diǎn)擊“運(yùn)行”?!稊?shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第6頁。SQL語言的主要語句類別維護(hù)數(shù)據(jù)結(jié)構(gòu)。支持建立、修改或刪除數(shù)據(jù)庫及數(shù)據(jù)對(duì)象操作。DDL(DataDefinitionLanguage)數(shù)據(jù)庫定義語言數(shù)據(jù)訪問。支持對(duì)數(shù)據(jù)庫中數(shù)據(jù)的查詢、插入、修改和刪除等操作。DML(DataManipulationLanguage)數(shù)據(jù)庫操縱語言數(shù)據(jù)庫監(jiān)視。支持對(duì)數(shù)據(jù)對(duì)象的授權(quán)、安全控制等操作。DCL(DataControlLanguage)數(shù)據(jù)庫控制語言操作對(duì)象是數(shù)據(jù)庫或者對(duì)象(表、視圖等)操作對(duì)象是表中的數(shù)據(jù)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第7頁。SQL語言的書寫規(guī)則不區(qū)分字母大小寫一條語句可寫在一行或多行上可用注釋增強(qiáng)語句可讀性①單行注釋(--),也可以用#

②多行注釋(/*…*/)例如:/*打開e_learning數(shù)據(jù)庫。當(dāng)?shù)谝淮卧L問某數(shù)據(jù)庫時(shí),需要使用USE語句打開數(shù)據(jù)庫,否則其他SQL語句不能執(zhí)行*/USEe_learning;【例】SELECTStudentCode,StudentNameFROMstudent;

--查詢學(xué)生表中學(xué)生的學(xué)號(hào)和姓名語句中的單詞可以是關(guān)鍵詞,也可以是標(biāo)識(shí)符關(guān)鍵字標(biāo)識(shí)符語句以“;”結(jié)尾注意--之后必須有空格?。?!《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第8頁。THANKYOU!《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第9頁。數(shù)據(jù)庫定義語言(DDL)簡介《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第10頁。數(shù)據(jù)庫定義語言DDL維護(hù)數(shù)據(jù)結(jié)構(gòu)。支持建立、修改或刪除數(shù)據(jù)庫及數(shù)據(jù)對(duì)象的操作。DATABASETABLEVIEWPROCEDURETRIGGERCREATEDROPALTER主要語句:(動(dòng)作+操作對(duì)象類型+對(duì)象名)創(chuàng)建刪除更改數(shù)據(jù)庫表視圖存儲(chǔ)過程觸發(fā)器object_name《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第11頁。DDL語句舉例——?jiǎng)?chuàng)建數(shù)據(jù)庫CREATEDATABASE數(shù)據(jù)庫名

[[DEFAULT]CHARACTERSET字符集],[[DEFAULT]COLLATE校對(duì)規(guī)則];CREATEDATABASEpet;

--創(chuàng)建一個(gè)名為pet的數(shù)據(jù)庫,采用默認(rèn)的字符集和排序規(guī)則CREATEDATABASEplantCHARACTERSETutf8;/*創(chuàng)建一個(gè)名為plant的數(shù)據(jù)庫,設(shè)置其字符集為utf8*/[]表示可選項(xiàng)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第12頁。DDL語句舉例——?jiǎng)?chuàng)建數(shù)據(jù)庫命令演示《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第13頁。DDL語句舉例——使用、刪除數(shù)據(jù)庫USE數(shù)據(jù)庫名;

--打開該數(shù)據(jù)庫作為當(dāng)前可操作的數(shù)據(jù)庫USEpet;--將pet設(shè)定為當(dāng)前數(shù)據(jù)庫DROPDATABASE數(shù)據(jù)庫名;

--刪除數(shù)據(jù)庫DROPDATABASEplant;--刪除數(shù)據(jù)庫plant《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第14頁。DDL語句舉例——?jiǎng)?chuàng)建數(shù)據(jù)表CREATETABLE表名(字段名1字段數(shù)據(jù)類型字段約束,字段名2字段數(shù)據(jù)類型字段約束,

……Constraint約束說明);USEpet;/*將數(shù)據(jù)庫pet設(shè)定為當(dāng)前數(shù)據(jù)庫*/CREATETABLE'cat'(

'CatCode'int(4)NOTNULLAUTO_INCREMENT,/*不可取空值,創(chuàng)建自增約束*/'CatName'varchar(16)NOTNULL,

/*不可取空值*/'Gender'char(1)NOTNULLDEFAULT'母',/*Gender默認(rèn)值為母*/'Birthday'dateNOTNULL,'Photo'varchar(30)DEFAULTNULL,'Introduction'text,'RegTime'timestampDEFAULTCURRENT_TIMESTAMP,/*默認(rèn)當(dāng)前時(shí)間*/

PRIMARYKEY('CatCode')/*設(shè)置CatCode為主鍵*/);字段名的單引號(hào)可以去掉字段名數(shù)據(jù)類型約束CatCodeint(4)非空,自增,主鍵CatNamevarchar(16)非空Genderchar(1)非空,默認(rèn)’母’Birthdaydate非空Photovarchar(30)默認(rèn)為空IntroductiontextRegTimetimestamp默認(rèn)CURRENT_TIMESTAMP描述字段的每一行末尾是逗號(hào)語句末尾是分號(hào)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第15頁。DDL語句舉例——?jiǎng)?chuàng)建索引CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX

索引名ON數(shù)據(jù)表名(字段ASC|DESC);--ASC升序,DESC降序CREATEUNIQUEINDEXIX_Name

ONcat(CatName

DESC);--默認(rèn)為升序ASC例:在cat表的CatName字段上建立唯一索引IX_Name,按名字降序排列字段名數(shù)據(jù)類型約束CatCodeint(4)非空,自增,主鍵CatNamevarchar(16)非空Genderchar(1)非空,默認(rèn)’母’Birthdaydate非空Photovarchar(30)默認(rèn)為空IntroductiontextRegTimetimestamp默認(rèn)CURRENT_TIMESTAMPcat表表名要建立的索引字段名《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第16頁。DDL語句舉例——?jiǎng)h除數(shù)據(jù)表、索引DROPTABLE數(shù)據(jù)表名;DROPTABLEcat;/*刪除cat表*/DROPINDEX索引名on數(shù)據(jù)表;DROPINDEXIX_Nameoncat;

/*刪除cat表IX_Name索引*/《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第17頁。DDL語句舉例——修改數(shù)據(jù)對(duì)象ALTER數(shù)據(jù)對(duì)象對(duì)象名;ALTERUNIQUEINDEXIX_NameONcat(CatNameASC);Alter語句與Create語句格式完全相同,是在已經(jīng)創(chuàng)建的數(shù)據(jù)對(duì)象做修改。/*修改索引IX_Name:按姓名升序排列*/《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第18頁。轉(zhuǎn)儲(chǔ)數(shù)據(jù)定義SQL文件生成腳本xx.sql執(zhí)行腳本在NavicatforMySQL中創(chuàng)建各種數(shù)據(jù)庫對(duì)象,實(shí)質(zhì)上是以可視化方式生成DDL語句,這些語句可以保存到一個(gè)SQL腳本文件中,以后運(yùn)行該文件可重建數(shù)據(jù)庫對(duì)象。數(shù)據(jù)庫對(duì)象數(shù)據(jù)庫對(duì)象《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第19頁。SQL腳本生成與使用舉例例:(1)轉(zhuǎn)儲(chǔ)student表的SQL文件student.sql;(2)創(chuàng)建一個(gè)新的數(shù)據(jù)庫example;(3)在example數(shù)據(jù)庫中運(yùn)行文件student.sql建立student表。

選中表,點(diǎn)擊右鍵新建數(shù)據(jù)庫后,選中該數(shù)據(jù)庫,右鍵運(yùn)行*.sql文件轉(zhuǎn)儲(chǔ)單個(gè)表轉(zhuǎn)儲(chǔ)整個(gè)數(shù)據(jù)庫步驟類似,選中數(shù)據(jù)庫后轉(zhuǎn)儲(chǔ)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第20頁。數(shù)據(jù)庫定義語言DDL維護(hù)數(shù)據(jù)結(jié)構(gòu)。支持建立、修改或刪除數(shù)據(jù)庫及數(shù)據(jù)對(duì)象的操作。DATABASETABLEVIEWPROCEDURETRIGGERCREATEDROPALTER主要語句:《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第21頁。THANKYOU!《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第22頁。數(shù)據(jù)庫操作語言(DML):數(shù)據(jù)查詢語句SELECT——單表查詢《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第23頁。數(shù)據(jù)操縱語言DML實(shí)現(xiàn)數(shù)據(jù)訪問。支持對(duì)數(shù)據(jù)的查詢和更新操作。常用語句(增刪改查)語句功能SELECT從表中查詢數(shù)據(jù)

INSERT向表中添加記錄UPDATE修改表中數(shù)據(jù)DELETE從表中刪除記錄更新查詢?cè)鰟h改查《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第24頁。查詢語句SELECTSELECT字段列表FROM表名[WHERE查詢條件][GROUPBY分組字段]

[HAVING分組條件

][ORDERBY字段名

[ASC/DESC]];語法格式主句子句從一個(gè)或多個(gè)表中查詢數(shù)據(jù)。單表查詢只需要查詢一個(gè)表?!稊?shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第25頁。數(shù)據(jù)查詢語句SELECT——主句《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第26頁。SELECT語句——主句SELECT字段列表FROM表名;《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第27頁。查詢問題實(shí)例1——查詢表中某些字段的信息問題:怎么知道每一位同學(xué)的姓名和性別?分析:查詢student表中”StudentName”和“Gender”這兩個(gè)字段的信息。《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第28頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTFROMStudentName,GenderStudent;

字段列表:表中字段多個(gè)字段之間用逗號(hào)分隔所有字段可用通配符“*”表示Student表中學(xué)生姓名和性別《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第29頁。問題:怎么知道每一位同學(xué)的所有信息?分析:查詢student表中所有字段的信息查詢問題實(shí)例2——查詢表中所有字段的信息《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第30頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTFROM*Student;

字段列表:表中字段多個(gè)字段之間用逗號(hào)分隔所有字段可用通配符“*”表示Student表中全部信息《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第31頁。問題:查詢課程號(hào)和課程名信息,查詢結(jié)果中的字段名分別是“課程號(hào)”和“課程名”?分析:查詢course表中”CourseCode”和“CourseName”這兩個(gè)字段的信息給查詢結(jié)果的字段名取個(gè)別名查詢問題實(shí)例3——給查詢結(jié)果中的字段名取個(gè)別名《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第32頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTCourseCodeAS課程號(hào),CourseName課程名FROMcourse;字段列表:表中字段“字段名AS別名”替換列標(biāo)題顯示用別名顯示查詢結(jié)果和列標(biāo)題《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第33頁。問題:根據(jù)course表信息,怎么知道有多少種不同的學(xué)科?分析:查詢course表中的SubjectCode字段?查詢問題實(shí)例4——查詢表中可能有重復(fù)值的字段《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第34頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTSubjectCodeFROMCourse;字段列表:字段名前加限制,優(yōu)化查詢結(jié)果:DISTINCT:相同字段值只顯示一條記錄SELECTDISTINCTSubjectCodeFROMCourse;查詢Course表中學(xué)科號(hào)查詢Course表中學(xué)科號(hào)(只顯示一條)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第35頁。問題:已知數(shù)據(jù)庫中courseenroll表中所有同學(xué)成績偏低5分,根據(jù)該表信息如何查詢得到正常成績(不更改表的數(shù)據(jù))?分析:查詢courseenroll表中的Score字段,然后怎么調(diào)整呢?查詢問題實(shí)例5——查詢時(shí)針對(duì)字段值的算術(shù)操作《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第36頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTStudentCode,CourseCode,Score+5

AS成績,‘成績調(diào)整'AS說明FROMcourseenroll;字段列表:可新增字段(常量、表達(dá)式)查詢courseenroll表,將成績加5分顯示,并增加一列成績調(diào)整注:courseenroll表中數(shù)據(jù)未更改。《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第37頁。問題:如何知道課程的平均分/最高分/最低分/總分/總?cè)藬?shù)?分析:查詢courseenroll表中,對(duì)相應(yīng)字段做聚合操作(求平均值/最大值/最小值/總數(shù)/計(jì)數(shù))?查詢問題實(shí)例6——查詢時(shí)針對(duì)字段值的聚合運(yùn)算《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第38頁。SELECT語句——主句SELECT字段列表FROM表名;SELECTAvg(Score)

AS平均分,Max(Score)AS最高分,Min(Score)AS最低分,Count(StudentCode)AS總?cè)舜蜦ROMcourseenroll;字段列表:可新增字段(常量、表達(dá)式)表達(dá)式中常用聚合函數(shù)函數(shù)名函數(shù)功能AVG計(jì)算某一字段的平均值COUNT統(tǒng)計(jì)某一字段的個(gè)數(shù)MAX查找某一字段的最大值MIN查找某一字段的最小值SUM計(jì)算某一字段的總和含有聚合函數(shù)的查詢結(jié)果注:courseenroll表中數(shù)據(jù)未更改?!稊?shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第39頁。THANKYOU!《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第40頁。數(shù)據(jù)查詢語句SELECT——子句《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第41頁。問題舉例:怎么從student表中獲取所有男同學(xué)的信息?如何按照生源地,統(tǒng)計(jì)各地學(xué)生的平均成績?查詢學(xué)生的成績,并按年齡從小到大排序?…分析:查詢條件分組排序未解決的其他查詢問題《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第42頁。查詢語句SELECTSELECT字段列表FROM表名[WHERE查詢條件][GROUPBY分組字段]

[HAVING分組條件

][ORDERBY字段名

[ASC/DESC]];語法格式主句子句從一個(gè)或多個(gè)表中查詢數(shù)據(jù)。

《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第43頁。查詢語句SELECT——WHERE子句SELECT字段列表FROM表名WHERE

查詢條件;

查詢條件:是一個(gè)關(guān)系或邏輯表達(dá)式查詢條件謂詞比較>、>=、<、<=、=、<>(不等于)、!>(不大于)、!<(不小于)、!=(不等于)確定范圍BETWEEN…AND、NOTBETWEEN…AND確定集合IN、NOTIN、EXISTS字符匹配LIKE、NOTLIKE空值ISNULL、ISNOTNULL否定NOT邏輯運(yùn)算AND、OR常用的關(guān)系和邏輯運(yùn)算《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第44頁。SELECT語句——WHERE子句的相等查詢SELECT字段列表FROM表名WHERE

查詢條件;

查詢條件:比較運(yùn)算>、>=、<、<=、=、<>(不等于)、!=(不等于)、

!>(不大于)、!<(不小于)。SELECTStudentCode,StudentName,Gender,LocationFROMstudentWHEREGender=‘女’;例如:查詢Student表中所有女生的信息。SELECTStudentCode,StudentName,Gender,LocationFROMStudentWHEREGender=‘女’ANDLocation=‘上?!?例如:查詢生源地為上海的女生的信息。生源地為上海的女生信息女生信息例如:查詢student表中學(xué)號(hào)為1003的學(xué)生信息。SELECT*FROMstudentWHEREStudentCode=1003;AND表示兩個(gè)條件都必須滿足,是“且”的意思《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第45頁。SELECT語句——WHERE子句的區(qū)間查詢1SELECT字段列表FROM表名WHERE

查詢條件;

SELECTStudentCode,CourseCode,ScoreFROMcourseenrollWHERECourseCode=‘C001'ANDScore>=70ANDScore<=90;例如:在courseenroll表中查詢選修了課程號(hào)C001、成績?cè)?0~90分之間的所有學(xué)生的學(xué)號(hào)、課程號(hào)及成績信息。查詢條件:確定范圍[NOT]BETWEEN

值1AND

值2[不]在值1和值2之間90>=Score>=70ScoreBETWEEN70AND90等價(jià)于成績?cè)?0~90分之間查詢條件,跟在where字句后查詢的字段(列表),寫在select主句中表名《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第46頁。SELECT語句——WHERE子句的區(qū)間查詢2SELECT字段列表FROM表名WHERE

查詢條件;

SELECTStudentCode,StudentName,BirthdayFROMStudentWHEREBirthdayNOTBETWEEN‘1970-01-01’

AND

‘2004-12-31’;例如:查詢Student表中不在1970—2004出生的學(xué)生學(xué)號(hào)、姓名和生日。查詢條件:確定范圍[NOT]BETWEEN

值1AND

值2[不]在值1和值2之間使用Year()函數(shù)Year(Birthday)NOTBETWEEN1970AND2004不在1970—2004年之間出生《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第47頁。SELECT語句——WHERE子句的集合查詢SELECT字段列表FROM表名WHERE

查詢條件;

SELECTStudentCode,StudentName,LocationFROMStudentWHERE

LocationIN('黑龍江','吉林','遼寧');例如:查詢student表中來自東北三省的學(xué)生,即生源地為黑龍江、吉林、遼寧的學(xué)生信息。查詢條件:IN運(yùn)算確定是否在集合中等價(jià)于關(guān)系運(yùn)算Location='黑龍江'ORLocation='吉林'ORLocation='遼寧'來自東三省《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第48頁。SELECT語句——WHERE子句的模糊查詢SELECT字段列表FROM表名WHERE

查詢條件;查詢條件:LIKE運(yùn)算確定字符串模式是否匹配例如:一個(gè)人的姓名姓“王”:LIKE‘王%’;姓“王”單名:LIKE‘王_’中間字“小”:LIKE‘_小%’不姓“王”:LIKE'[^王]%'通配符說明%匹配0個(gè)或多個(gè)任意字符_匹配1個(gè)任意字符[]匹配集合中任意單個(gè)字符[^]不匹配集合中的任意單個(gè)字符LIKE模式通配符《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第49頁。SELECT語句——WHERE子句的模糊查詢舉例SELECT字段列表FROM表名WHERE

查詢條件;

查詢條件:LIKE運(yùn)算確定字符串模式是否匹配SELECTStudentCode,StudentNameFROMstudentWHEREStudentNameLIKE‘[^劉]%';例如:查詢student表中不姓劉的學(xué)生的學(xué)號(hào)和姓名。例如:查詢course表中課程名中包含“技術(shù)”兩個(gè)字的課程號(hào)及課程名。SELECTCourseCode,CourseNameFROMcourseWHERECourseNameLIKE'%技術(shù)%';名稱包含“技術(shù)”的課程不姓劉的學(xué)生SELECTStudentCode,StudentNameFROMstudentWHEREStudentNameNOTLIKE'劉%';《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第50頁。查詢語句SELECT——GROUPBY子句SELECT字段列表FROM表名GROUPBY分組字段[HAVING分組條件];分類匯總。即按分組字段把具有相同值的記錄匯總計(jì)算合并成一條記錄。用于分組的字段包含分組字段、匯總計(jì)算字段SELECTCourseCode,Count(StudentCode)AS選課人數(shù),AVG(Score)AS平均分FROMcourseenrollGROUPBYCourseCode例如:統(tǒng)計(jì)選課表中每門課程的選課人數(shù)和平均分。HAVINGAVG(Score)>=80;或:HAVING平均分>=80;只顯示平均80分以上的課程。;表名分組字段分組條件查詢的字段(列表)注意:HAVING子句只能跟在GROUPBY子句后,不能單獨(dú)使用。SELECT后查詢的字段列表中必須包含分組字段。比如這里的CourseCode字段?!稊?shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第51頁。查詢語句SELECT——GROUPBY子句與WHERE的區(qū)別SELECT字段列表FROM表名GROUPBY分組字段[HAVING分組條件];WHERE子句和HAVING字句執(zhí)行機(jī)制的區(qū)別:WHERE子句:先篩選再匯總HAVING子句:先匯總再篩選SELECTCourseCode,COUNT(StudentCode)AS選課人數(shù),AVG(Score)AS平均分FROMcourseenrollWHERECourseCode='C001';例如:查詢課程號(hào)為C001的選課人數(shù)。SELECTCourseCode,COUNT(StudentCode)AS選課人數(shù),AVG(Score)AS平均分FROMcourseenrollGROUPBYCourseCodeHAVINGCourseCode='C001';先篩選課程號(hào),再匯總被選出的課程的選課人數(shù)先匯總每門課程的選課人數(shù),再根據(jù)課程號(hào)篩選如果在篩選條件中包含匯總結(jié)果,那么用WHERE子句無法實(shí)現(xiàn),因?yàn)閃HERE子句中不能包含聚合函數(shù),這時(shí)只能用HAVING子句.例如:

HAVING

COUNT(StudentCode)>3《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第52頁。查詢語句SELECT——GROUPBY子句中有多個(gè)分組字段SELECT字段列表FROM表名GROUPBY分組字段[HAVING分組條件];GROUPBY后有多個(gè)分組字段,則表示多次分組。SELECTLocation,Gender,COUNT(StudentCode)AS學(xué)生人數(shù)FROMStudentGROUPBYLocation,Gender;例如:統(tǒng)計(jì)各生源地男、女學(xué)生的人數(shù)。分組字段查詢的字段(列表)《數(shù)據(jù)庫與信息系統(tǒng)》SQL語言全文共59頁,當(dāng)前為第53頁。查詢語句SELECT——使用GROUPBY子句的注意事項(xiàng)SELECT字段列表FROM表名GROUPBY分組字段[HAVING

分組條件];注意:分組字段必須出現(xiàn)在SELECT后的字段列表中(可以是字段,也可在聚合函數(shù)中?。〩AVING字句必須和GROUP

BY字句一起使用,不能單獨(dú)使用。

溫馨提示

  • 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)論