資源描述:
《SQL Server數(shù)據(jù)庫基礎(chǔ)教程 教學(xué)課件 作者 劉麗 第4章.ppt》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章數(shù)據(jù)的查詢主要內(nèi)容:SELECT語句查詢4.1基本子句查詢4.2數(shù)據(jù)匯總4.3聯(lián)接查詢4.4嵌套查詢4.5索引4.6本章小結(jié)4.7總體要求:掌握查詢的作用和分類熟練掌握查詢的每個(gè)子句掌握數(shù)據(jù)匯總掌握聯(lián)接查詢掌握嵌套查詢掌握索引的概念及索引操作4.1SELECT語句查詢:SQL語言提供SELECT語句,通過查詢操作可得到所需的信息。查詢的結(jié)果仍是一個(gè)表。SELECT語句的基本格式是由SELECT語句、FROM子句和WHERE子句組成的SQL查詢語句。SELECT用于指定查詢結(jié)果集中的列,F(xiàn)ROM指定了數(shù)據(jù)的來源,WHE
2、RE指定了查詢的條件。SELECT語句的完整語法比較復(fù)雜,其主要語法格式如下。SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC
3、DESC]]SELECT語句的執(zhí)行過程是:根據(jù)WHERE子句的檢索條件,從FROM子句指定的基本表或視圖中選取滿足條件的元組,再按照SELECT子
4、句中指定的列,投影得到結(jié)果表。如果有GROUPBY子句,則將查詢結(jié)果按照group_by_list相同的值進(jìn)行分組。如果GROUPBY子句后有HAVING短語,則只輸出滿足HAVING條件的元組。如果有ORDERBY子句,查詢結(jié)果還要按照其后指定列的值進(jìn)行排序。4.2基本子句查詢:SELECT子句4.2.1FROM子句4.2.2WHERE子句4.2.3ORDERBY子句4.2.4INTO子句4.2.5合并結(jié)果集4.2.64.2.1SELECT子句SELECT子句用于定義查詢結(jié)果集中的列。常將SELECT后面的內(nèi)容稱作選擇列
5、表。選擇列表是一系列以逗號分隔的表達(dá)式。每個(gè)表達(dá)式定義結(jié)果集中的一列。結(jié)果集中列的排列順序與選擇列表中表達(dá)式的排列順序相同。選擇列表可以有如下不同的表達(dá)方式。1.使用星號(*)輸出所有列【例4-1】查詢“學(xué)生”表的所有信息。SELECT*FROMXs2.輸出特定列選擇列表中的表達(dá)式是多個(gè)以逗號分隔的列名。結(jié)果集中列的排列順序與選擇列表中表達(dá)式的排列順序相同?!纠?-2】查詢“學(xué)生”表中學(xué)生的學(xué)號、姓名和出生日期。SELECTXh,Xm,CsrqFROMXs3.計(jì)算列【例4-3】查詢“學(xué)生”表中學(xué)生的學(xué)號、姓名和年齡。SEL
6、ECTXh,Xm,Year(GETDATE())-YEAR(csrq)FROMXs注意:GETDATE()函數(shù)用于獲取系統(tǒng)日期,Year()函數(shù)用于獲取日期中的年份。4.給列起別名可以給列起別名,尤其是當(dāng)表中的一個(gè)或多個(gè)列是計(jì)算列的時(shí)候,別名將顯示在字段列表中。給列起別名有三種表達(dá)方式。1)計(jì)算表達(dá)式AS別名2)計(jì)算表達(dá)式別名3)別名=計(jì)算表達(dá)式?!纠?-4】查詢“學(xué)生”表中學(xué)生的學(xué)號、姓名和年齡,要求字段列表用中文名字。SELECTXhas學(xué)號,Xm姓名,年齡=Year(GETDATE())-YEAR(csrq)FROM
7、Xs5.去掉重復(fù)元組當(dāng)選擇表中部分列的時(shí)候,可能在結(jié)果集中出現(xiàn)相同的記錄,可以在字段列表前加關(guān)鍵字DISTINCT來去掉重復(fù)的記錄。【4-5】查詢“成績”表中已學(xué)過課程的學(xué)生學(xué)號。SELECTDISTINCTXhFROMCj6.顯示前n條記錄在字段列表前加關(guān)鍵字TOPn,則查詢結(jié)果集中只顯示表中前n條記錄;如果在字段列表前加關(guān)鍵字TOPnPERCENT,則查詢結(jié)果集中只顯示表中前面n%條記錄。【例4-6】查詢“成績”表前5條記錄。SELECTTOP5*FROMCj4.2.2FROM子句FROM子句指定了數(shù)據(jù)的來源,它是可以
8、用逗號分隔的表名和JOIN子句的列表。其中JOIN子句用于兩個(gè)或多個(gè)表之間的聯(lián)接還可以在FROM子句中為表指定別名來提高可讀性。如果為表分配了別名,那么T-SQL語句中對該表的所有顯式引用都必須使用別名,而不能使用表名。給表起別名有兩種表達(dá)方式:1)表名AS別名2)表名?別名4.2.3WHERE子句WHERE是篩選器。它指定一系列查詢條件,只有那些滿足條件的行才能包含在結(jié)果集中。WHERE子句中的限定條件可包括下面幾種形式:1.比較搜索條件使用比較運(yùn)算符用于比較兩個(gè)表達(dá)式的大小,例如:=(等于)、<>(不等于)、<(小于)
9、和>(大于)運(yùn)算符?!纠?-7】從成績表中查詢學(xué)號為09101001的學(xué)生的考試成績。SELECT*FROMCjWHEREXh='09101001'2.范圍搜索條件使用BETWEEN…AND(或NOTBETWEEN…AND)查找屬性值在(或不在)指定范圍內(nèi)的所有記錄,該范圍包含下限和上限的值?!纠?-8