




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
ORACLE結構化查詢語言SQL培訓介紹演示文稿第1頁,共64頁。優(yōu)選ORACLE結構化查詢語言SQL培訓介紹第2頁,共64頁。3一.結構化查詢語言概述
SQL的全稱為StructuredQueryLangauge(結構化查詢語言)。它是數(shù)據(jù)庫系統(tǒng)的通用語言,利用它,用戶可以用幾乎同樣的語句在不同的數(shù)據(jù)庫系統(tǒng)上執(zhí)行同樣的操作。
SQL語言是一個綜合的,功能強大又簡單易學的語言,它集數(shù)據(jù)查詢、數(shù)據(jù)操縱、數(shù)據(jù)定義和數(shù)據(jù)控制于一體。SQL語言按照功能可以分為4大類。第3頁,共64頁。4按照指定的組合、條件表達式或排序檢索已存在的數(shù)據(jù)庫中的數(shù)據(jù),但并不改變數(shù)據(jù)庫中數(shù)據(jù)。命令動詞有SELECT。1.數(shù)據(jù)查詢語言(DataQueryLanguage,DQL)
創(chuàng)建、修改或刪除數(shù)據(jù)庫中各種對象,包括表、視圖、索引等。命令動詞有CREATE、ALTER、DROP。2.數(shù)據(jù)定義語言(DDL:DataDefinitionLanguage)3.數(shù)據(jù)操縱語言(DataManipulationLanguage,DML)對已經(jīng)存在的數(shù)據(jù)庫進行記錄的插入、刪除、修改等操作。命令動詞有INSERT、UPADATE、DELETE。第4頁,共64頁。5用來授予或收回訪問數(shù)據(jù)庫的某種特權、控制數(shù)據(jù)操縱事務的發(fā)生時間及效果、對數(shù)據(jù)庫進行監(jiān)視。命令動詞有GRANT、REMOVE等。5.數(shù)據(jù)控制語言(DataControlLanguage,DCL)4.事務控制語言(TransactionControlLanguage,TCL)事務是對數(shù)據(jù)庫操作的邏輯單位,在一個事務中可以包含一條或多條DML(數(shù)據(jù)操縱語言)、DDL(數(shù)據(jù)定義語言)和DCL(數(shù)據(jù)控制語言)語句,這些語句組成一個邏輯整體。事務的執(zhí)行只有兩種結果:要么全部執(zhí)行,把數(shù)據(jù)庫帶入一個新的狀態(tài);要么全部不執(zhí)行,對數(shù)據(jù)庫不做任何修改。事務是一個或多個SQL語句序列,在程序更新數(shù)據(jù)庫時事務至關重要,因為必須維護數(shù)據(jù)的完整性,命令動詞有SAVEPOINT,ROLLBACK,COMMIT。第5頁,共64頁。6二.SELECT查詢所謂查詢,就是針對數(shù)據(jù)庫中的數(shù)據(jù)按指定的條件和特定的組合進行對數(shù)據(jù)表的檢索。SELECT<字段列表>FROM〈表名〉[WHERE〈查詢條件〉]
含義是:根據(jù)WHERE子句的查詢條件,從FROM子句指定的表中找出滿足條件記錄,再按SELECT語句中指定的字段次序,篩選出記錄中的指定字段值。若不設置查詢條件,則表示被查詢的表中所有記錄都滿足條件。SELECT語句格式SELECT查詢語句基本格式是:第6頁,共64頁。7SELECT[ALL|DISTINCT]<字段列表>[INTO新表名]FROM<表名列表>[WHERE<查詢條件>][GROUPBY<字段名>[HAVING<條件表達式>]][ORDERBY<字段名>[ASC|DESC]]SELECT查詢語句完整格式是:參數(shù)說明:(1)ALL|DISTINCT其中ALL表示查詢滿足條件的所有行;DISTINCT表示在查詢的結果集中,消除重復的記錄。(2)<字段列表>:由被查詢的表中的字段或表達式組成,指明要查詢的字段信息。第7頁,共64頁。8(3)INTO新表名表示在查詢的時候同時建立一個新的表,新表中存放的數(shù)據(jù)來源于查詢的結果。(4)FROM<表名列表>指出針對那些表進行查詢操作,可以是單個表,也可以是多個表,表名與表名之間用逗號隔開。(5)WHERE<查詢條件>用于指定查詢的條件。該項是可選項,即可以不設置查詢條件,但也可以設置一個或多個查詢條件。(6)GROUPBY<字段名>對查詢的結果按照指定的字段進行分組。(7)HAVING<條件表達式>:對分組后的查詢結果再次設置篩選條件,最后的結果集中只包含滿足條件的分組。必須與GROUPBY子句一起使用。(8)ORDERBY<字段名>[ASC|DESC]對查詢的結果按照指定的字段進行排序,其中[ASC|DESC]用來指明排序的方式。ASC為升序;DESC為降序。第8頁,共64頁。9整個SELECT語句的含義:
根據(jù)WHERE子句的篩選條件,從FROM子句指定的表中找出滿足條件記錄,再按SELECT語句中指定的字段次序,篩選出記錄中的字段值構造一個顯示結果表。如果有GROUPBY子句,則將結果按groupby后面的“字段名”的值進行分組,該字段中值相等的元組為一個組;如果GROUPBY子句帶有短語HAVING,則只有滿足短語指定條件的分組才會輸出。如果有ORDERBY子句,則結果表要按照orderby后面的<字段名>的值進行升序和降序排列。SELECT[ALL|DISTINCT]<目標列表達式>實現(xiàn)的是對表的投影操作,WHERE<條件表達式>中實現(xiàn)的是選擇操作。第9頁,共64頁。10
三.針對單表的查詢1.查詢指定的字段【例1】查詢student表中學生的學號、姓名以及家庭住址。用戶往往需要了解表中部分字段信息或者全部字段信息,通過對SELECT語句中“字段列表”的控制即可滿足用戶的需求。SELECTstudent_id,student_name,addressFROMstudent1.1查詢部分字段第10頁,共64頁。11方法一:列舉法,即把表中所有字段在SELECT子句中的“字段列表”中列舉出來;方法二:通配符法,即使用通配符“*”來代替表中所有的字段。1.2查詢?nèi)孔侄巍纠?】查詢student表中所有學生的所有字段信息。SELECTstudent_id,student_name,class_id,sex,born_date,address,tel,resumeFROMstudent方法一:列舉法SELECT*
FROMstudent方法二:通配符法第11頁,共64頁。12當用戶只需要了解表中部分記錄的信息時,這就應該在查詢的時候使用WHERE子句設置篩選條件,把滿足篩選條件的記錄查詢出來。設置查詢條件的SELECT查詢語句基本格式是:1.3查詢滿足條件的記錄SELECT<字段列表>FROM〈表名〉WHERE〈查詢條件〉查詢條件可以是關系表達式、邏輯表達式和特殊表達式。第12頁,共64頁。13用關系運算符號將兩個表達式連接在一起的式子稱為關系表達式,其返回值為邏輯真(TRUE)或邏輯假(FALSE),關系表達式的格式為:<表達式1><關系運算符><表達式2>常用的關系運算符如下表所示。運算符號含義=等于<小于<=小于或等于>大于>=大于或等于!=或<>不等于關系表達式第13頁,共64頁。14【例3】查詢所有男學生的學號、姓名、性別和出生日期。SELECTstudent_id,student_name,sex,born_dateFROMstudentWHEREsex=’男’第14頁,共64頁。15用邏輯運算符號將兩個表達式連接在一起的式子稱為邏輯表達式,其返回值為邏輯真(TRUE)或邏輯假(FALSE),邏輯表達式的格式為:[<關系表達式1>]<邏輯運算符><關系表達式2>常用的邏輯運算符下圖所示。運算符號含義OR邏輯或AND邏輯與NOT邏輯否
邏輯表達式第15頁,共64頁。16(1)邏輯與運算——AND所有條件都成立時,返回結果才為真。【例4】查詢所有1989年以后出生所有女學生的基本信息。SELECT*FROMstudentWHEREborn_date>’1989-12-31’ANDsex=’女’【例5】查詢課程表中非公共課的課程信息。(2)邏輯否運算——NOTSELECT*FROMcourseWHERENOT(c_type=’公共課’)第16頁,共64頁。17(3)邏輯或運算——OR所有條件中只要有一個條件成立,返回結果即為真?!纠?】查詢學生表中來自廣州市的學生或來自其他地方的女學生的學號、姓名、班級編號、家庭住址和備注信息SELECTstudent_id,student_name,class_id,address,resumeFROMstudentWHEREaddress=’廣州市’ORsex=’女’第17頁,共64頁。18特殊表達式在比較運算中有一些特殊的作用。常用的特殊運算符號如下圖所示。特殊表達式運算符號含義%通配符,包含0個或多個字符的任意字符串—通配符,表示任意單個字符[]指定范圍或集合中的任意單個字符BETWEEN...AND定義一個區(qū)間范圍IS[NOT]NULL檢測字段值為空或不為空LIKE字符匹配操作符[NOT]IN檢查一個字段值屬于或不屬于一個集合EXISTS檢查某一字段是否存在值第18頁,共64頁。19LIKE關鍵字的作用是用于指出一個字符串是否與指定的字符串相匹配,其運算對象可以是char、text、datetime等數(shù)據(jù)類型,返回邏輯值。LIKE表達式的格式為:字符表達式1[NOT]LIKE字符表達式2若省略NOT,則表示字符表達式1與字符表達式2相匹配時才返回邏輯真。若選擇NOT,則表示字符表達式1與字符表達式2不匹配時才返回邏輯真。(1)字符匹配操作符——LIKE第19頁,共64頁。20【例6】查詢姓劉的學生的基本情況。SELECT*FROMstudentWHEREstudent_nameLIKE‘劉%’【例7】查詢所有姓張和姓劉學生的基本情況。SELECT*
FROMstudentWHEREstudent_nameLIKE‘[張,劉]%’說明:在使用通配符“%”或“_”時,就只能用字符匹配操作符LIKE,不能使用‘=’運算符第20頁,共64頁。21判斷所指定的值是否在給定的區(qū)間,返回邏輯值。格式為:表達式[NOT]BETWEEN表達式1AND表達式2“表達式1”是區(qū)間的下限,“表達式2”是區(qū)間的上限。若省略NOT,則表示表達式的值在指定的區(qū)間內(nèi)即返回邏輯真。若選擇NOT,則表示表達式的值不在指定的區(qū)間內(nèi)即返回邏輯真。(2)區(qū)間控制運算符——BETWEEN...AND【例8】查詢出1990年1月1日至1991年12月31日出生的學生的學號、姓名、出生日期。SELECTstudent_id,student_name,born_dateFROMstudentWHEREborn_dateBETWEEN'1990-1-1'AND'1991-12-31'第21頁,共64頁。22ISNULL用來測試字段值是否為空值,返回邏輯值,格式為:
表達式IS[NOT]NULL若省略NOT,則表示表達式的值為空時即返回邏輯真。若選擇NOT,則表示表達式的值不為空時即返回邏輯真。(3)空值判斷運算符——ISNULL【例9】查詢備注內(nèi)容為空的學生的學號、姓名與備注。SELECTstudent_id,student_name,resumeFROMstudentWHEREresumeisnull第22頁,共64頁。23判斷表達式的值是否屬于某一個給定的集合。返回邏輯值,格式為:
表達式[NOT]IN(表達式1[,...n])若省略NOT,則表示表達式的值屬于給定集合時即返回邏輯真。若選擇NOT,則表示表達式的值不屬于給定的集合時即返回邏輯真。(4)集合判斷運算符——IN【例10】查詢來自長沙和廣州市學生的姓名、班級編號和來自的城市。SELECTstudent_name,class_id,addressFROMstudentWHEREaddressin(‘長沙市’,’廣州市’)第23頁,共64頁。24四.對查詢結果進行編輯
1.對查詢的字段進行說明【例11】查詢學生表中學生的姓名和來自的城市,并分別用中文對其進行說明。在SELECT語句中,可以在一個字段的前面加上一個單引號字符串,對后面的字段起說明作用。SELECT'姓名',student_name,'城市',addressFROMstudent第24頁,共64頁。25為了能讓人更容易了解字段的內(nèi)容,可以為字段指定別名,并顯示在結果集中,方法有3種:方法一:字段名AS別名;方法二:字段名別名方法三:別名=字段名2.對查詢的字段使用別名【例12】查詢學生表中的學生的student_name和born_date信息,并用中文“姓名”和“出生日期”來顯示字段名。SELECTstudent_nameAS姓名,born_dateAS出生日期FROMstudent第25頁,共64頁。26SELECT子句后面可以是字段名,也可以是表達式。3.顯示表達式的值【例13】查詢學生表中所有女學生的姓名和年齡。SELECTstudent_name,year(getdate())-year(born_date)年齡FROMstudentWHEREsex='女'第26頁,共64頁。27SELECT子句中有一個可選項:ALL|DISTINCT,其中DISTINCT的作用就是用來消除結果集中重復的記錄,內(nèi)容相同的記錄只顯示一條。4.消除結果集中重復的記錄【例14】查詢學生表學生所來自的城市。SELECTDINSTINCTaddressFROMstudent第27頁,共64頁。28查詢語句中還可以指定表中返回的行數(shù),格式如下:SELECT[TOPn]字段列表FROM<表名>
其中,TOPn用于指定查詢結果返回的行數(shù),其返回的結果一定從上往下的n行信息。5.返回指定的行數(shù)【例15】查詢學生表前3位學生的學號和姓名。SELECTTOP3student_id,student_name,class_idFROMstudent第28頁,共64頁。296.聚合函數(shù)SQLSERVER提供的聚合函數(shù),用來完成一定的統(tǒng)計功能.能對集合中的一組數(shù)據(jù)進行計算,并返回單個計算結果.常與SELECT和GROUPBY子句一起使用.常用聚合函數(shù)函數(shù)功能含義說明COUNT統(tǒng)計統(tǒng)計滿足條件的記錄數(shù)MAX求最大值求某一集合中的最大值MIN求最小值求某一集合中的最小值AVG求平均值計算某一數(shù)值集合中的平均值SUM求和計算某一數(shù)值集合中的總和第29頁,共64頁。30MAX和MIN函數(shù)分別用于查找指定集合中的最大值和最小值。格式為:MAX/MIN([ALL|DISTINCT]表達式)其中,ALL表示對所有值進行聚合函數(shù)運算,DISTINCT表示如果有多個重復的值,則這些重復值只計算一次,默認為ALL。表達式可以是涉及一個列或多個列的算術表達式。6.1
MAX和MIN函數(shù)【例16】查找成績表中1001號課程的最高分和最低分。SELECTmax(grade)'最高分',min(grade)'最低分'FROMscoreWHEREcourse_id='1001'第30頁,共64頁。31該函數(shù)用于計算查詢到的數(shù)據(jù)值的總和。語法格式為:
SUM([ALL|DISTINCT]表達式)【例17】計算0801101號學生總成績。6.2SUM函數(shù)SELECTsum(grade)'總分'FROMscoreWHEREstudent_id='0801101'第31頁,共64頁。32用于計算查詢結果的平均值。語法格式為:AVG([ALL|DISTINCT]表達式)6.3AVG函數(shù)【例18】計算0801101號學生平均成績。SELECTAVG(grade)'平均分'FROMscoreWHEREstudent_id='0801101'第32頁,共64頁。33用于統(tǒng)計查詢結果集中記錄的數(shù)目。語法格式為:COUNT([ALL|DISTINCT]表達式)如果COUNT函數(shù)使用字段名做為參數(shù),則只統(tǒng)計內(nèi)容不為空的行的數(shù)目。如果執(zhí)行COUNT(*),即使用“*”作為參數(shù),則統(tǒng)計所有行(包括空值的行)。6.4COUNT函數(shù)【例19】統(tǒng)計學生表中學生的總數(shù)。SELECTCOUNT(student_id)’學生總數(shù)’FROMstudent第33頁,共64頁。34GROUPBY子句將查詢結果表按某一列或多列值分組,值相等的為一組。一般與SQL的聚合函數(shù)一起使用,對分組后的每一組數(shù)據(jù)分別進行統(tǒng)計。格式:SELECT<[字段列表],[聚合函數(shù)(字段名)]>FROM<表名>GROUPBY<字段列表>[HAVING<條件表達式>]6.5對查詢結果進行分組和篩選【例20】統(tǒng)計各個班學生的總人數(shù)。SELECTclass_id,count(student_id)FROMstudentGROUPBYclass_id第34頁,共64頁。35【例21】統(tǒng)計成績表中每個學生的總分和平均分。SELECTstudent_id,sum(grade)'總分',avg(grade)'平均分'FROMscoreGROUPBYstudent_id第35頁,共64頁。366.6對分組后還要求按一定的條件對這些分組進行篩選,最終只輸出滿足指定條件的分組,則用HAVING短語指定篩選條件?!纠?2】在例21中,只輸出總分大于150的學生的學號、總分和平均分。SELECTstudent_id,sum(grade)‘總分’,avg(grade)‘平均分'FROMgradeGROUPBYstudent_idHAVINGsum(grade)>150第36頁,共64頁。376.7對查詢結果集進行排序在SELECT查詢語句中。使用ORDERBY子句對查詢輸出結果進行排序。排序的方式有兩種:ASC(升序)和DESC(降序)?!纠?3】統(tǒng)計成績表中每個學生的總分和平均分,把查詢結果按總分的降序排列輸出。SELECTstudent_id,sum(grade)'總分',avg(grade)'平均分'FROMgradeGROUPBYstudent_idORDERBY總分DESC第37頁,共64頁。38通過INTO子句,可以創(chuàng)建一個新表并將查詢到的結果插入到新表中。6.8把查詢結果插入新的表【例24】查詢學生表中學生的學號、姓名和班級編號,并把查詢結果插入到新的表student_class中。然后針對student_class表進行查詢操作,驗證新表student_class是否建立成功且被插入了記錄。SELECTstudent_id,student_name,class_idINTOstudent_classFROMstudent說明:新表的所包含的字段與數(shù)據(jù)類型與SELECT語句的字段列表一致。如果要創(chuàng)建的臨時表,則只要在表名前加上“#或##”即可第38頁,共64頁。39
五.多連接表查詢連接查詢分兩大類,一是使用連接謂詞進行連接;二是使用關鍵字JHON進行連接。使用連接謂詞連接表的基本格式為:SELECT<輸出字段列表>FROM表1,表2[,...n]WHERE<表1.字段名1><連接謂詞><表2.字段名2>連接謂詞連接字段:必須是可比較的連接謂詞包括:=、<、<=、>、>=、!=、<>等,當比較符是=時稱為等值連接。第39頁,共64頁。40當連接謂詞是“=”時的連接,稱為等值連接。當連接謂詞是不等運算符時的連接,稱為不等連接。【25】查詢學生的基本信息和成績信息。SELECTstudent.*,score.*FROMstudent,scoreWHEREstudent.student_id=score.student_id1.等值連接和不等連接第40頁,共64頁。412.自然連接在針對多表進行查詢時。如果所引用的列為被查詢的表所共有,則引用列時必須用表名來指定列是來源于哪個表,指定方法為:表名.列名。反之,不一定需要表名來指定來源?!纠?6】查詢學生的基本信息和成績信息,在輸出結果中相同的字段只保留一個。SELECTstudent.student_id,student_name,class_id,sex,born_date,address,tel,resume,course_id,gradeFROMstudent,scoreWHEREstudent.student_id=score.student_id若在等值連接中把輸出字段列表中重復的字段只保留一個的連接稱為自然連接。第41頁,共64頁。423.復合條件連接含有多個連接條件稱為復合條件連接?!纠?7】查詢學生的學號、姓名、所學課程的名稱和成績信息。SELECTstudent.student_id,student_name,course_name,gradeFROMstudent,score,courseWHEREstudent.student_id=score.student_idANDscore.course_id=course.course_id第42頁,共64頁。43一個表與自身進行連接稱為自連接。在同一個表中查找具有相同字段值的行,則可以使用自連接。在使用自連接時需要為表指定兩個別名,且對所有引用的列均要用別名來指定其來源。4.自連接【例28】查找同一課程成績相同的學生的學號、課程號和成績。SELECTa.student_id,b.student_id,a.course_id,a.gradeFROMscorea,scorebWHEREa.grade=b.gradeANDa.student_id<>b.student_id ANDa.course_id=b.course_id
第43頁,共64頁。44以JOIN關鍵字連接以JOIN關鍵字來連接表的方式,增強了表的連接能力和連接的靈活性。使用JOIN關鍵字連接表的的基本格式為:SELECT<輸出字段列表>FROM表名1<連接類型>表名2ON<連接條件>[<連接類型>表名3ON<連接條件>]......參數(shù)說明:1)表名1,表名2,表名3等用來指明需要連接的表。2)連接類型有:[INNER|{LEFT|RIGHE|FULL}OUTER]JOIN。其中INNERJOIN表示內(nèi)連接;OUTERJOIN表示外連接,外連接又分:左外連接(LEFTOUTERJOIN)、右外連接(RIGHTOUTERJOIN)和全外連接(FULLOUTERJOIN)。3)ON:用來指明連接條件。第44頁,共64頁。45等值連接、不等連接和自然連接屬于內(nèi)連接。以JOIN關鍵字來實現(xiàn)內(nèi)連接——按照ON所指定的連接條件合并兩個表,返回滿足條件的行。1.內(nèi)連接(INNERJOIN)【例29】查詢學生的基本信息和成績信息SELECTstudent.*,score.*FROMstudentINNERJOINscoreONstudent.student_id=score.student_id第45頁,共64頁。46在內(nèi)連接中,INNER可以省略,使用內(nèi)連接后仍然可以使用WHERE子句對連接后的記錄進行篩選。【例30】查詢學號為0801101學生的基本信息和成績信息。SELECTstudent.student_id,student_name,class_id,sex,born_date,address,tel,resume,course_id,gradeFROMstudentINNERJOINscoreONstudent.student_id=score.student_idWHERE
student.student_id='0801101'第46頁,共64頁。47外連接返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數(shù)據(jù)行。2.外連接(OUTERJOIN)(1)左外連接查詢輸出結果中顯示符合條件的數(shù)據(jù)行及左邊數(shù)據(jù)表中不符合條件的數(shù)據(jù)行。左外連接的連接格式為:【例31】查找所有學生的學號、姓名以及他們所學的課程編號和成績,沒有課程成績的學生信息也要顯示。FROM左表名LEFT[OUTER]JOIN右表名ON連接條件SELECTstudent.student_id,student_name,course_id,gradeFROMstudentLEFTOUTERJOINscoreONstudent.student_id=score.student_id第47頁,共64頁。48查詢輸出結果中顯示符合條件的數(shù)據(jù)行及右邊數(shù)據(jù)表中不符合條件的數(shù)據(jù)行。右外連接的連接格式為:(2)右外連接FROM左表名RIGHT[OUTER]JOIN右表名ON連接條件【例32】查詢學生的學號、所在的班級編號和班級名稱,班級表中沒有連接成功的記錄也要顯示。SELECTstudent.student_id,class.class_id,class_nameFROMstudentRIGHTOUTERJOINclassONstudent.class_id=class.class_id第48頁,共64頁。49(3)全外連接查詢輸出結果中顯示符合條件的數(shù)據(jù)行右邊及左邊數(shù)據(jù)表中不符合條件的數(shù)據(jù)行。全外連接的格式為:FROM左表名FULL[OUTER]JOIN右表名ON連接條件【例33】查詢學生的學號、所學課程名稱及成績,兩表中沒有連接成功的記錄均要顯示(采用全外連接)。SELECTstudent_id,course_name,gradeFROMscoreFULLOUTERJOINcourseONscore.course_id=course.course_id第49頁,共64頁。503.交叉連接交叉連接也叫非限制連接,它將兩個表不加任何約束地組合起來。在數(shù)學上,就是兩個表的笛卡爾積。交叉連接后得到的結果集的行數(shù)是兩個被連接表的行數(shù)的乘積?!纠?4】查詢學生的基本信息及其成績信息(使用交叉連接)。SELECT*FROMstudentCROSSJOINscore第50頁,共64頁。51六.子查詢子查詢是一個嵌套在SELECT、INSERT、UPDATE或DELETE語句中的WHERE或HAVING子句內(nèi),或嵌套在其他子查詢中的SELECT查詢。
子查詢可以嵌套,它能將比較復雜的查詢分解為幾個簡單的查詢。一個SELECT—FROM—WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。第51頁,共64頁。52
SELECTclass_name外部查詢FROMclassWHEREclass_idIN(SELECTclass_id
內(nèi)部查詢FROMstudent
(子查詢)WHEREstudent_name=‘張小云’)嵌套查詢的執(zhí)行順序是:首先執(zhí)行最底層的內(nèi)部查詢(即子查詢),它的查詢結果并不顯示,而是傳遞給外層查詢,用來做外外部查詢的查詢條件。即按照由里向外的順序執(zhí)行。第52頁,共64頁。53可以使用子查詢的地方有:●在使用IN或NOTIN的集合查詢中?!裨赨PDATE、DELETE和INSERT語句中?!裨谑褂帽容^運算符時●使用ANY或ALL時?!袷褂肊XISTS或NOTEXISTS引入的存在測試時。●在有表達式的地方。子查詢的使用第53頁,共64頁。54
IN子查詢是把子查詢的結果做為外部查詢的條件。判斷外部查詢中的某個值是否屬于子查詢的結果集合。帶謂詞IN或NOTIN的子查詢【例35】查找選修了1002號課程的學生的學號、姓名和班級編號。格式:<表達式>[NOT]IN(子查詢)SELECTstudent_id,student_name,class_idFROMstudentWHEREstudent_idIN(SELECTstudent_idFROMscore
WHEREcourse_id=‘1002)第54頁,共64頁。55當子查詢返回的是單值時,子查詢可以由一個比較運算符(=、<、<=、>、>=、!=或<>)引入。當子查詢可能返回多個值時則應把比較運算符與ALL和ANY結合使用。格式為:表達式{比較運算符}{ALL|ANY}(子查詢)ALL:表示表達式要與子查詢的結果集中的所以值進行比較,當表達式與每個值都滿足比較關系時,才返回TRUE,否則返回FALSE。
ANY:表示表達式只要與子查詢的結果集中的某個值滿足比較關系時,就返回TRUE,否則返回FALSE。帶有比較運算符的子查詢第55頁,共64頁。56第56頁,共64頁。57【例36】查詢選修了1001號課程且成績比0801103號學生1001號課程成績高的學生的學號、課程編號和成績。SELECTstudent_id,course_id,gradeFROMscoreWHEREcourse_id='1001'ANDgrade>(SELECTgradeFROMscoreWHEREstudent_id='0801103'ANDcourse_id='1001')第57頁,共64頁。58INSERT、DELETE和UPDATE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冠心病患者合并甲狀腺功能異常的患病情況及危險因素分析
- 重難點解析人教版八年級上冊物理物態(tài)變化《升華和凝華》專項訓練練習題(含答案詳解)
- 多源市政污泥熱解碳化工藝中能量利用與能效提升研究
- “雅俗”觀與南宋詞風演進研究
- 消防設施施工質(zhì)量檢測與驗收方案
- 水庫壩前水流動力學分析與研究
- 難點解析-人教版八年級上冊物理聲現(xiàn)象《噪聲的危害和控制》定向測試試題(含答案解析版)
- 建筑拆除前期風險評估方案
- 重難點解析人教版八年級上冊物理物態(tài)變化《熔化和凝固》定向攻克試卷(含答案詳解)
- 基于哈佛分析框架下泡泡瑪特成長性的研究
- 【MOOC】創(chuàng)新思維與創(chuàng)業(yè)實驗-東南大學 中國大學慕課MOOC答案
- 高爾夫主題酒店項目方案及設計要求
- 蘇寧易購財務報表分析報告
- DB13-T 5997-2024 公路橋梁混凝土結構裂縫處治施工技術規(guī)范
- TSG ZF001-2006《安全閥安全技術監(jiān)察規(guī)程》
- 12D401-3 爆炸危險環(huán)境電氣線路和電氣設備安裝
- 急診科骨髓腔穿刺及輸液技術
- 明至清中葉的經(jīng)濟與文化 同步練 高三統(tǒng)編版(2019)必修中外歷史綱要上一輪復習
- 科研誠信承諾書
- 2023年全國乙卷語文高考真題(含答案)
- MOOC 數(shù)學文化十講-南開大學 中國大學慕課答案
評論
0/150
提交評論