




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 1北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)第第3 3章章 SQLSQL語言語言人腦人腦不是一個(gè)可以灌注知不是一個(gè)可以灌注知識(shí)的識(shí)的容器容器,而是一個(gè)可以點(diǎn)燃,而是一個(gè)可以點(diǎn)燃的的火把火把。古希臘生物學(xué)家、散文家:普多塔戈古希臘生物學(xué)家、散文家:普多塔戈2022-3-172022-3-172 2北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)
2、節(jié)第第3章章 SQL語言語言n 學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)lSQL(Structured Query Language,結(jié)構(gòu)化查詢語言,結(jié)構(gòu)化查詢語言)是關(guān)是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言l幾乎所有的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)均采用幾乎所有的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)均采用SQL語言標(biāo)準(zhǔn)語言標(biāo)準(zhǔn)l教學(xué)目標(biāo)主要有兩個(gè):教學(xué)目標(biāo)主要有兩個(gè):要求讀者掌握對(duì)數(shù)據(jù)庫的基本操作,并了解數(shù)據(jù)庫管理要求讀者掌握對(duì)數(shù)據(jù)庫的基本操作,并了解數(shù)據(jù)庫管理系統(tǒng)的基本功能系統(tǒng)的基本功能要求讀者熟練掌握要求讀者熟練掌握SQL查詢語句,并運(yùn)用查詢語句,并運(yùn)用SQL語句完成語句完成對(duì)數(shù)據(jù)庫的操作對(duì)數(shù)據(jù)庫的操作2022-3-172022-3-
3、173 3北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)第第3章章 SQL語言語言n 學(xué)習(xí)方法學(xué)習(xí)方法l要求讀者結(jié)合課堂講授的知識(shí),強(qiáng)化上機(jī)實(shí)訓(xùn),把課堂要求讀者結(jié)合課堂講授的知識(shí),強(qiáng)化上機(jī)實(shí)訓(xùn),把課堂上學(xué)過的有關(guān)概念進(jìn)行實(shí)訓(xùn),以便加深理解,達(dá)到學(xué)習(xí)上學(xué)過的有關(guān)概念進(jìn)行實(shí)訓(xùn),以便加深理解,達(dá)到學(xué)習(xí)目標(biāo)。目標(biāo)。n 學(xué)習(xí)指南學(xué)習(xí)指南l重點(diǎn):重點(diǎn):3.2、3.3、3.4、3.5、3.8和和3.9節(jié)節(jié)l難點(diǎn):難點(diǎn):3.3、3.4和和3.5節(jié)節(jié)2022-3-172022-3-174
4、 4北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)第第3章章 SQL語言語言n 本章導(dǎo)讀本章導(dǎo)讀l SQL查詢語句對(duì)關(guān)系代數(shù)運(yùn)算做了哪些擴(kuò)展?查詢語句對(duì)關(guān)系代數(shù)運(yùn)算做了哪些擴(kuò)展?l 連接查詢包括哪些?它們分別用于什么地方?連接查詢包括哪些?它們分別用于什么地方?l 相關(guān)子查詢與非相關(guān)子查詢的概念。相關(guān)子查詢與非相關(guān)子查詢的概念。l 在使用分組聚合查詢時(shí)需要注意的地方。在使用分組聚合查詢時(shí)需要注意的地方。l 如何理解存在量詞以及存在量詞在如何理解存在量詞以及存在量詞在SQ
5、L查詢中的重要地位。查詢中的重要地位。l 如何理解查詢表的概念,查詢表與子查詢有何異同點(diǎn)?如何理解查詢表的概念,查詢表與子查詢有何異同點(diǎn)?l 在在SQL的的DDL語句中如何實(shí)現(xiàn)完整性約束?實(shí)現(xiàn)完整性約束的方法語句中如何實(shí)現(xiàn)完整性約束?實(shí)現(xiàn)完整性約束的方法有哪些?有哪些?l 如何將數(shù)據(jù)庫的對(duì)象如何將數(shù)據(jù)庫的對(duì)象(如基本表、索引如基本表、索引)建立在特定的物理文件上?建立在特定的物理文件上?l 將數(shù)據(jù)庫對(duì)象建立在特定的物理文件上,其目的是什么?將數(shù)據(jù)庫對(duì)象建立在特定的物理文件上,其目的是什么?l 建立視圖的目的是什么?視圖主要用于什么操作?建立視圖的目的是什么?視圖主要用于什么操作?2022-3-
6、172022-3-175 5北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)目目 錄錄嵌套子查詢嵌套子查詢 3.7SQL概述概述 3.1簡(jiǎn)單查詢簡(jiǎn)單查詢 3.3連接查詢連接查詢 3.53.8聚合查詢聚合查詢 集合運(yùn)算集合運(yùn)算 SQL查詢一般格式查詢一般格式 SQL數(shù)據(jù)定義語言數(shù)據(jù)定義語言 SQL數(shù)據(jù)更新語言數(shù)據(jù)更新語言 視圖視圖 3.23.43.63.93.102022-3-172022-3-176 6北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫
7、原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1 SQL概述概述 n SQL語言于語言于1974年由年由Boyce等提出,并于等提出,并于19751979年在年在IBM公司研制的公司研制的System R數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)上實(shí)現(xiàn),現(xiàn)已成為國(guó)際標(biāo)準(zhǔn)。上實(shí)現(xiàn),現(xiàn)已成為國(guó)際標(biāo)準(zhǔn)。n 很多數(shù)據(jù)庫廠商都對(duì)很多數(shù)據(jù)庫廠商都對(duì)SQL語句進(jìn)行了再開發(fā)和擴(kuò)展語句進(jìn)行了再開發(fā)和擴(kuò)展n 標(biāo)準(zhǔn)標(biāo)準(zhǔn)SQL命令包括命令包括l查詢查詢SELECTl插入插入INSERTl更新更新UPDATEl刪除刪除DELETEl創(chuàng)建創(chuàng)建CREATEl對(duì)象刪除對(duì)象刪除DR
8、OPn 可被用來完成幾乎所有的數(shù)據(jù)庫操作可被用來完成幾乎所有的數(shù)據(jù)庫操作2022-3-172022-3-177 7北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1 SQL概述概述n 3.1.1 SQL發(fā)展發(fā)展 n 3.1.2 SQL特點(diǎn)特點(diǎn)n 3.1.3 SQL查詢基本概念查詢基本概念 2022-3-172022-3-178 8北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL S
9、QL語言語言_1-4_1-4節(jié)節(jié)3.1.1 SQL發(fā)展發(fā)展 n SQL-86:第一個(gè):第一個(gè)SQL標(biāo)準(zhǔn),由美國(guó)國(guó)家標(biāo)準(zhǔn)局標(biāo)準(zhǔn),由美國(guó)國(guó)家標(biāo)準(zhǔn)局(American National Standard Institute,簡(jiǎn)稱,簡(jiǎn)稱ANSI)公布,公布,1987年國(guó)際標(biāo)準(zhǔn)化組織年國(guó)際標(biāo)準(zhǔn)化組織(International Organization for Standardization,簡(jiǎn)稱,簡(jiǎn)稱ISO)通過。通過。該標(biāo)準(zhǔn)也稱為該標(biāo)準(zhǔn)也稱為SQL-1n SQL-92:在:在1992年,由年,由ISO和和ANSI對(duì)對(duì)SQL-86進(jìn)行進(jìn)行重新修訂,該標(biāo)準(zhǔn)也稱為重新修訂,該標(biāo)準(zhǔn)也稱為SQL-2n SQL
10、-99:在:在1999年,該版本在年,該版本在SQL-2的基礎(chǔ)上,擴(kuò)的基礎(chǔ)上,擴(kuò)展了諸多功能,包括遞歸、觸發(fā)、面向?qū)ο蠹夹g(shù)等展了諸多功能,包括遞歸、觸發(fā)、面向?qū)ο蠹夹g(shù)等。該標(biāo)準(zhǔn)也稱為。該標(biāo)準(zhǔn)也稱為SQL-3 n SQL-2003:該標(biāo)準(zhǔn)是最新的標(biāo)準(zhǔn),也稱:該標(biāo)準(zhǔn)是最新的標(biāo)準(zhǔn),也稱SQL-4,于,于2003年發(fā)布年發(fā)布 2022-3-172022-3-179 9北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1.1 SQL發(fā)展發(fā)展n SQL語言由語言由4部分組成部分組成
11、l數(shù)據(jù)定義語言數(shù)據(jù)定義語言DDL(Data Definition Language)定義數(shù)據(jù)庫的邏輯結(jié)構(gòu)定義數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括數(shù)據(jù)庫、基本表、視圖和索引等,包括數(shù)據(jù)庫、基本表、視圖和索引等,擴(kuò)展擴(kuò)展DDL還支持存儲(chǔ)過程、函數(shù)、對(duì)象、觸發(fā)器等的定義還支持存儲(chǔ)過程、函數(shù)、對(duì)象、觸發(fā)器等的定義DDL包括包括3類語言,即定義、修改和刪除類語言,即定義、修改和刪除l數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言DML(Data Manipuplation Language)對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行檢索和更新對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行檢索和更新,其中更新操作包括插入、刪除,其中更新操作包括插入、刪除和修改數(shù)據(jù)和修改數(shù)據(jù)l數(shù)據(jù)控制語言數(shù)據(jù)
12、控制語言DCL(Data Control Language)對(duì)數(shù)據(jù)庫的對(duì)象進(jìn)行授權(quán)、用戶維護(hù)對(duì)數(shù)據(jù)庫的對(duì)象進(jìn)行授權(quán)、用戶維護(hù)(包括創(chuàng)建、修改和刪除包括創(chuàng)建、修改和刪除)、完整性規(guī)則定義和事務(wù)定義完整性規(guī)則定義和事務(wù)定義等等l其它其它主要是主要是嵌入式嵌入式SQL語言和動(dòng)態(tài)語言和動(dòng)態(tài)SQL語言的定義語言的定義,規(guī)定了,規(guī)定了SQL語言語言在宿主語言中使用的規(guī)則在宿主語言中使用的規(guī)則擴(kuò)展擴(kuò)展SQL還包括數(shù)據(jù)庫數(shù)據(jù)的還包括數(shù)據(jù)庫數(shù)據(jù)的重新組織、備份與恢復(fù)重新組織、備份與恢復(fù)等功能等功能2022-3-172022-3-171010北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原
13、理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1.2 SQL特點(diǎn)特點(diǎn) n 綜合統(tǒng)一綜合統(tǒng)一 l 集數(shù)據(jù)定義語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言、數(shù)據(jù)控制語言DCL的功的功能于一體能于一體 n 高度非過程化:高度非過程化:描述做什么,不涉及怎么做。描述做什么,不涉及怎么做。 n 面向集合的操作方式面向集合的操作方式l 采用集合操作方式,其操作對(duì)象、操作結(jié)果都是元組的集合采用集合操作方式,其操作對(duì)象、操作結(jié)果都是元組的集合 n 同一種語法結(jié)構(gòu)提供兩種使用方式同一種語法結(jié)構(gòu)提供兩種使用方式l SQL語言既是
14、自含式語言,又是嵌入式語言。在兩種不同的使用方語言既是自含式語言,又是嵌入式語言。在兩種不同的使用方式下,其語法結(jié)構(gòu)基本上是一致的式下,其語法結(jié)構(gòu)基本上是一致的 n 語言簡(jiǎn)潔,易學(xué)易用語言簡(jiǎn)潔,易學(xué)易用l SQL語言的動(dòng)詞非常少,主要包括:語言的動(dòng)詞非常少,主要包括: 數(shù)據(jù)查詢數(shù)據(jù)查詢 SELECT; 數(shù)據(jù)定義數(shù)據(jù)定義 CREATE、DROP、ALTER; 數(shù)據(jù)操縱數(shù)據(jù)操縱 INSERT、UPDATE、DELETE; 數(shù)據(jù)控制數(shù)據(jù)控制 GRANT、REVOKE 2022-3-172022-3-171111北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理
15、與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1.3 SQL查詢基本概念查詢基本概念 n SQL語言支持三級(jí)模式結(jié)構(gòu),外模式對(duì)應(yīng)視圖和部語言支持三級(jí)模式結(jié)構(gòu),外模式對(duì)應(yīng)視圖和部分基本表,模式對(duì)應(yīng)基本表,內(nèi)模式對(duì)應(yīng)存儲(chǔ)文件分基本表,模式對(duì)應(yīng)基本表,內(nèi)模式對(duì)應(yīng)存儲(chǔ)文件 SQL視圖視圖1視圖視圖2基本表基本表1基本表基本表2基本表基本表3基本表基本表4存儲(chǔ)文件存儲(chǔ)文件1存儲(chǔ)文件存儲(chǔ)文件2 外模式外模式 模式模式 內(nèi)模式內(nèi)模式2022-3-172022-3-171212北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)
16、計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.1.3 SQL查詢基本概念查詢基本概念n 基本表基本表l 數(shù)據(jù)庫中獨(dú)立存在的表稱為基本表數(shù)據(jù)庫中獨(dú)立存在的表稱為基本表l 在在SQL中一個(gè)關(guān)系對(duì)應(yīng)一個(gè)基本表中一個(gè)關(guān)系對(duì)應(yīng)一個(gè)基本表l 一個(gè)一個(gè)(或多個(gè)或多個(gè))基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件l 一個(gè)表可以帶若干索引一個(gè)表可以帶若干索引l 索引存放在存儲(chǔ)文件中索引存放在存儲(chǔ)文件中n 視圖視圖l 指從一個(gè)或幾個(gè)基本表指從一個(gè)或幾個(gè)基本表(或視圖或視圖)導(dǎo)出的表,是虛表導(dǎo)出的表,是虛表l 只存放視圖的定義而不存放對(duì)應(yīng)數(shù)據(jù)只存放視圖的定義而不存放對(duì)應(yīng)數(shù)據(jù)n 查
17、詢表查詢表l 指查詢結(jié)果對(duì)應(yīng)的表指查詢結(jié)果對(duì)應(yīng)的表n 存儲(chǔ)文件存儲(chǔ)文件l 指數(shù)據(jù)庫中存放關(guān)系的物理文件指數(shù)據(jù)庫中存放關(guān)系的物理文件2022-3-172022-3-171313北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)目目 錄錄嵌套子查詢嵌套子查詢 3.73.1簡(jiǎn)單查詢簡(jiǎn)單查詢 3.33.53.8聚合查詢聚合查詢 集合運(yùn)算集合運(yùn)算 SQL查詢一般格式查詢一般格式 SQL數(shù)據(jù)定義語言數(shù)據(jù)定義語言 SQL數(shù)據(jù)更新語言數(shù)據(jù)更新語言 視圖視圖 3.23.43.63.93.10
18、SQL概述概述 連接查詢連接查詢 2022-3-172022-3-171414北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2簡(jiǎn)單查詢簡(jiǎn)單查詢n 本章所用的數(shù)據(jù)庫為學(xué)生成績(jī)管理數(shù)據(jù)庫本章所用的數(shù)據(jù)庫為學(xué)生成績(jī)管理數(shù)據(jù)庫ScoreDB,其數(shù)據(jù),其數(shù)據(jù)庫模式如圖庫模式如圖3-2、3-3、3-4、3-5所示所示2022-3-172022-3-171515北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3
19、3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2簡(jiǎn)單查詢簡(jiǎn)單查詢2022-3-172022-3-171616北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2簡(jiǎn)單查詢簡(jiǎn)單查詢2022-3-172022-3-171717北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2簡(jiǎn)單查詢簡(jiǎn)單查詢2022-3-172022-3-171818北京理
20、工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2簡(jiǎn)單查詢簡(jiǎn)單查詢 n 3.2.1 投影運(yùn)算投影運(yùn)算n 3.2.2 選擇運(yùn)算選擇運(yùn)算 n 3.2.3 排序運(yùn)算排序運(yùn)算n 3.2.4 查詢表查詢表2022-3-172022-3-171919北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n SQL基本結(jié)構(gòu)包括基本結(jié)構(gòu)包括3個(gè)子
21、句:個(gè)子句:lSELECT子句子句對(duì)應(yīng)對(duì)應(yīng)投影運(yùn)算投影運(yùn)算,指定查詢結(jié)果中所需要的屬性或表達(dá)式,指定查詢結(jié)果中所需要的屬性或表達(dá)式lFROM子句子句 對(duì)應(yīng)對(duì)應(yīng)笛卡爾積笛卡爾積,給出查詢所涉及的表,表可以是基本表、,給出查詢所涉及的表,表可以是基本表、視圖或查詢表視圖或查詢表lWHERE子句子句 對(duì)應(yīng)對(duì)應(yīng)選擇運(yùn)算選擇運(yùn)算(包括連接運(yùn)算所轉(zhuǎn)化的選擇運(yùn)算)(包括連接運(yùn)算所轉(zhuǎn)化的選擇運(yùn)算),指定,指定查詢結(jié)果元組所需要滿足的選擇條件查詢結(jié)果元組所需要滿足的選擇條件n SELECT和和FROM是必須的,其他是可選的是必須的,其他是可選的2022-3-172022-3-172020北京理工大學(xué)珠海學(xué)院北京
22、理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 基本語法為:基本語法為: SELECT A1, A2, ., An FROM R1, R2, ., Rm WHERE PA1, A2, ., An代表需要查找的屬性或表達(dá)式代表需要查找的屬性或表達(dá)式R1, R2, ., Rm代表查詢所涉及的表代表查詢所涉及的表P代表謂詞代表謂詞(即選擇條件即選擇條件),如果省略,如果省略WHERE子句,表示子句,表示P為真為真SQL的查詢結(jié)果中允許包含重復(fù)元組的查詢結(jié)果中允許包含重復(fù)
23、元組n SQL執(zhí)行過程執(zhí)行過程(邏輯上的理解)(邏輯上的理解):l首先對(duì)首先對(duì)R1, R2, ., Rm執(zhí)行笛卡爾積執(zhí)行笛卡爾積l然后在笛卡爾積中選擇使得謂詞然后在笛卡爾積中選擇使得謂詞P為真的記錄為真的記錄l再在再在A1, A2, ., An屬性列中進(jìn)行投影運(yùn)算,不消除重復(fù)元組屬性列中進(jìn)行投影運(yùn)算,不消除重復(fù)元組如需消除重復(fù)元組,必須使用關(guān)鍵字如需消除重復(fù)元組,必須使用關(guān)鍵字DISTINCTn 剛才描述的剛才描述的SQL查詢執(zhí)行過程只是查詢執(zhí)行過程只是邏輯上邏輯上的,在具體執(zhí)行時(shí)的,在具體執(zhí)行時(shí)會(huì)進(jìn)行會(huì)進(jìn)行優(yōu)化處理優(yōu)化處理,查詢優(yōu)化的內(nèi)容詳見第,查詢優(yōu)化的內(nèi)容詳見第7章。章。2022-3-1
24、72022-3-172121北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 查詢指定列查詢指定列l(wèi)選取表中的全部列或指定列,通過選取表中的全部列或指定列,通過SELECT確定要查詢的確定要查詢的屬性屬性l例例3.1 查詢所有班級(jí)的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院查詢所有班級(jí)的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院 SELECT classNo, className, institute FROM Class該查詢的執(zhí)行過程是:該查詢的執(zhí)行過程是:從從Cl
25、ass表中依次取出每個(gè)元組表中依次取出每個(gè)元組對(duì)每個(gè)元組僅選取對(duì)每個(gè)元組僅選取classNo、className和和institute三個(gè)屬性的三個(gè)屬性的值,形成一個(gè)新元組值,形成一個(gè)新元組最后將這些新元組組織為一個(gè)結(jié)果關(guān)系輸出最后將這些新元組組織為一個(gè)結(jié)果關(guān)系輸出該查詢的結(jié)果如圖該查詢的結(jié)果如圖3-10所示所示2022-3-172022-3-172222北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 消除重復(fù)元組消除重復(fù)元組l需要消除重復(fù)
26、元組,使用需要消除重復(fù)元組,使用DISTINCT關(guān)鍵字關(guān)鍵字l例例3.2 查詢所有學(xué)院的名稱。查詢所有學(xué)院的名稱。 SELECT institute FROM Class上述查詢不消除重復(fù)元組,其查詢結(jié)果如圖上述查詢不消除重復(fù)元組,其查詢結(jié)果如圖3-11所示所示l消除重復(fù)元組,查詢結(jié)果如圖消除重復(fù)元組,查詢結(jié)果如圖3-12所示所示 SELECT DISTINCT institute FROM Class圖圖 3-11圖圖 3-122022-3-172022-3-172323北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3
27、 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 查詢所有列查詢所有列l(wèi)可使用兩種方法:可使用兩種方法:將所有的列在將所有的列在SELECT子句中列出子句中列出(可以改變列的顯示順序可以改變列的顯示順序);使用使用*符號(hào),符號(hào),*表示所有屬性,按照表定義時(shí)的順序顯示所有屬性表示所有屬性,按照表定義時(shí)的順序顯示所有屬性l 例例3.3 查詢所有班級(jí)的全部信息。查詢所有班級(jí)的全部信息。 SELECT classNo, className, classNum, grade, institute FROM Classl或或 SELECT * FROM Class2022-
28、3-172022-3-172424北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 給屬性列取別名給屬性列取別名l可為屬性列取一個(gè)便于理解的列名,如用中文來顯示列名可為屬性列取一個(gè)便于理解的列名,如用中文來顯示列名l為屬性列取別名特別適合經(jīng)過計(jì)算的列為屬性列取別名特別適合經(jīng)過計(jì)算的列l(wèi)例例3.4 查詢所有班級(jí)的所屬學(xué)院、班級(jí)編號(hào)和班級(jí)名稱,查詢所有班級(jí)的所屬學(xué)院、班級(jí)編號(hào)和班級(jí)名稱,要求用中文顯示列名要求用中文顯示列名 SELECT inst
29、itute 所屬學(xué)院所屬學(xué)院, classNo 班級(jí)編號(hào)班級(jí)編號(hào), className 班級(jí)名稱班級(jí)名稱 FROM Classl查詢結(jié)果如圖查詢結(jié)果如圖3-13所示。該查詢可使用所示。該查詢可使用AS關(guān)鍵字取別名:關(guān)鍵字取別名: SELECT institute AS 所屬學(xué)院所屬學(xué)院, classNo AS 班級(jí)編號(hào)班級(jí)編號(hào), className AS 班級(jí)名稱班級(jí)名稱 FROM Class2022-3-172022-3-172525北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4
30、_1-4節(jié)節(jié)3.2.1 投影運(yùn)算投影運(yùn)算n 查詢經(jīng)過計(jì)算的列查詢經(jīng)過計(jì)算的列l(wèi)可使用屬性、常數(shù)、函數(shù)和表達(dá)式可使用屬性、常數(shù)、函數(shù)和表達(dá)式 l例例3.5 查詢每個(gè)班級(jí)編號(hào)、班級(jí)名稱以及該班級(jí)現(xiàn)在為查詢每個(gè)班級(jí)編號(hào)、班級(jí)名稱以及該班級(jí)現(xiàn)在為幾年級(jí)幾年級(jí),并將班級(jí)編號(hào)中大寫字母改為小寫字母輸出,并將班級(jí)編號(hào)中大寫字母改為小寫字母輸出 SELECT lower(classNo) 班級(jí)編號(hào)班級(jí)編號(hào), className, year(getdate() - grade AS 年級(jí)年級(jí) FROM Classl函數(shù)函數(shù)lower()將大寫字母改為小寫字母將大寫字母改為小寫字母l函數(shù)函數(shù)getdate()獲取
31、當(dāng)前系統(tǒng)的日期獲取當(dāng)前系統(tǒng)的日期l函數(shù)函數(shù)year()提取日期中的年份提取日期中的年份l查詢結(jié)果如圖查詢結(jié)果如圖3-14所示所示2022-3-172022-3-172626北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n WHERE子句可實(shí)現(xiàn)關(guān)系代數(shù)中的選擇運(yùn)算子句可實(shí)現(xiàn)關(guān)系代數(shù)中的選擇運(yùn)算n WHERE常用的查詢條件有:常用的查詢條件有:l比較運(yùn)算:比較運(yùn)算:、=、=、=、(或或!=)l范圍查詢:范圍查詢:NOT BETWEEN AND l
32、集合查詢:集合查詢: NOT IN l空值查詢:空值查詢:IS NOT nulll字符匹配查詢:字符匹配查詢: NOT LIKE l邏輯查詢:邏輯查詢:AND、OR、NOT2022-3-172022-3-172727北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 比較運(yùn)算比較運(yùn)算l使用比較運(yùn)算符使用比較運(yùn)算符、=、=、=、(或或!=) l例例3.6 查詢查詢2007級(jí)的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院。級(jí)的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院。 SEL
33、ECT classNo, className, institute FROM Class WHERE grade=2007l其查詢結(jié)果如圖其查詢結(jié)果如圖3-15所示所示2022-3-172022-3-172828北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l該查詢的執(zhí)行過程可能有多種方法:該查詢的執(zhí)行過程可能有多種方法:全表掃描法全表掃描法依次取出依次取出Class表中的每個(gè)元組表中的每個(gè)元組判斷該元組的判斷該元組的grade屬性值是否等于
34、屬性值是否等于2007若是則將該元組的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院屬性取出,若是則將該元組的班級(jí)編號(hào)、班級(jí)名稱和所屬學(xué)院屬性取出,形成一個(gè)新元組形成一個(gè)新元組最后將所有新元組組織為一個(gè)結(jié)果關(guān)系輸出最后將所有新元組組織為一個(gè)結(jié)果關(guān)系輸出該方法適用于小表,或者該表未在該方法適用于小表,或者該表未在grade屬性列上建索引屬性列上建索引索引搜索法索引搜索法如果該表在如果該表在grade屬性列上建有索引,且滿足條件的記錄不多屬性列上建有索引,且滿足條件的記錄不多,則可使用索引搜索法來檢索數(shù)據(jù),則可使用索引搜索法來檢索數(shù)據(jù)具體使用何種方法由數(shù)據(jù)庫管理系統(tǒng)的查詢優(yōu)化器來選擇,具體使用何種方法由數(shù)據(jù)庫管理系
35、統(tǒng)的查詢優(yōu)化器來選擇,詳見第詳見第8章內(nèi)容章內(nèi)容2022-3-172022-3-172929北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.7 在學(xué)生在學(xué)生Student表中查詢年齡大于或等于表中查詢年齡大于或等于19歲的同歲的同學(xué)學(xué)號(hào)、姓名和出生日期。學(xué)學(xué)號(hào)、姓名和出生日期。 SELECT studentNo, studentName, birthday FROM Student WHERE year(getdate() - yea
36、r(birthday)=192022-3-172022-3-173030北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 范圍查詢范圍查詢lBETWEEN.AND用于查詢屬性值在某一個(gè)范圍內(nèi)的元組用于查詢屬性值在某一個(gè)范圍內(nèi)的元組lNOT BETWEEN.AND用于查詢屬性值不在某一個(gè)范圍用于查詢屬性值不在某一個(gè)范圍內(nèi)的元組內(nèi)的元組lBETWEEN后是屬性的下限值,后是屬性的下限值,AND后是屬性的上限值后是屬性的上限值l例例3.8 在選課在
37、選課Score表中查詢成績(jī)?cè)诒碇胁樵兂煽?jī)?cè)?090分之間的同學(xué)分之間的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī) SELECT studentNo, courseNo, score FROM Score WHERE score BETWEEN 80 AND 90該查詢也可以使用該查詢也可以使用邏輯運(yùn)算邏輯運(yùn)算AND實(shí)現(xiàn),見例實(shí)現(xiàn),見例3.222022-3-172022-3-173131北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例
38、3.9 在選課在選課Score表中查詢成績(jī)不在表中查詢成績(jī)不在8090分之間的同分之間的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。 SELECT studentNo, courseNo, score FROM Score WHERE score NOT BETWEEN 80 AND 90該查詢也可以使用該查詢也可以使用邏輯運(yùn)算邏輯運(yùn)算OR實(shí)現(xiàn),見例實(shí)現(xiàn),見例3.232022-3-172022-3-173232北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.
39、2.2 選擇運(yùn)算選擇運(yùn)算n 集合查詢集合查詢lIN用于查詢屬性值在某個(gè)集合內(nèi)的元組用于查詢屬性值在某個(gè)集合內(nèi)的元組lNOT IN用于查詢屬性值不在某個(gè)集合內(nèi)的元組用于查詢屬性值不在某個(gè)集合內(nèi)的元組l IN后面是集合,可以是具體的集合,也可以是后面是集合,可以是具體的集合,也可以是查詢出來查詢出來的元組集合的元組集合(該部分內(nèi)容詳見該部分內(nèi)容詳見3.4節(jié)的內(nèi)容節(jié)的內(nèi)容)。l例例3.10 在選課在選課Score表中查詢選修了表中查詢選修了“001”、“005”或或“003”課程的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。課程的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。 SELECT studentNo, courseNo,
40、score FROM Score WHERE courseNo IN (001, 005, 003)該查詢也可以使用該查詢也可以使用邏輯運(yùn)算邏輯運(yùn)算OR實(shí)現(xiàn),見例實(shí)現(xiàn),見例3.192022-3-172022-3-173333北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.11 在學(xué)生在學(xué)生 Student表中查詢籍貫不是表中查詢籍貫不是“南昌南昌”或或“上上海海”的同學(xué)姓名、籍貫和所屬班級(jí)編號(hào)。的同學(xué)姓名、籍貫和所屬班級(jí)編號(hào)。 SEL
41、ECT studentName, native, classNo FROM Student WHERE native NOT IN (南昌南昌, 上海上海)該查詢也可以使用該查詢也可以使用邏輯運(yùn)算邏輯運(yùn)算AND實(shí)現(xiàn),見例實(shí)現(xiàn),見例3.212022-3-172022-3-173434北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 空值查詢空值查詢l空值表示未知或不確定的值,空值表示為空值表示未知或不確定的值,空值表示為nulllIS null
42、用于查詢屬性值為空值用于查詢屬性值為空值lIS NOT null用于查詢屬性值不為空值用于查詢屬性值不為空值lIS不能用不能用“=”替代替代l例例3.12 在課程在課程Course表中查詢先修課程為空值的課程信表中查詢先修課程為空值的課程信息。息。 SELECT * FROM Course WHERE priorCourse IS NULL查詢結(jié)果如圖查詢結(jié)果如圖3-16所示所示2022-3-172022-3-173535北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3
43、.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.13 在課程在課程Course表中查詢有先修課程的課程信息。表中查詢有先修課程的課程信息。 SELECT * FROM Course WHERE priorCourse IS NOT NULL2022-3-172022-3-173636北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 字符匹配查詢字符匹配查詢l LIKE用于字符匹配查詢,語法格式為:用于字符匹配查詢,語法格式為: NOT LIKE ESCA
44、PE l 查詢的含義是:查詢的含義是: 如果在如果在LIKE前沒有前沒有NOT,則查詢指定的屬性列值與,則查詢指定的屬性列值與相匹相匹配的元組;配的元組; 如果在如果在LIKE前有前有NOT,則查詢指定的屬性列值不與,則查詢指定的屬性列值不與相匹相匹配的元組。配的元組。 可以是一個(gè)具體的字符串,也可以包括通配符可以是一個(gè)具體的字符串,也可以包括通配符%和和_%表示任意長(zhǎng)度的字符串表示任意長(zhǎng)度的字符串 ab%,表示所有以,表示所有以ab開頭的任意長(zhǎng)度的字符串;開頭的任意長(zhǎng)度的字符串; zhang%ab,表示以,表示以zhang開頭,以開頭,以ab結(jié)束,中間可以是結(jié)束,中間可以是任意個(gè)字符的字符串
45、。任意個(gè)字符的字符串。符號(hào)符號(hào)_(下劃線下劃線)表示任意一個(gè)字符表示任意一個(gè)字符 ab_,表示所有以,表示所有以 ab開頭的開頭的3個(gè)字符的字符串,其中第個(gè)字符的字符串,其中第3個(gè)字符為任意字符;個(gè)字符為任意字符; a_b表示所有以表示所有以a開頭,以開頭,以b 結(jié)束的結(jié)束的4個(gè)字符的字符串,個(gè)字符的字符串,且第且第2、3個(gè)字符為任意字符。個(gè)字符為任意字符。2022-3-172022-3-173737北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇
46、運(yùn)算l例例3.14 在班級(jí)在班級(jí)Class表中查詢班級(jí)名稱中含有會(huì)計(jì)的班級(jí)表中查詢班級(jí)名稱中含有會(huì)計(jì)的班級(jí)信息信息 SELECT * FROM Class WHERE className LIKE %會(huì)計(jì)會(huì)計(jì)%注意:注意:匹配字符串必須用一對(duì)引號(hào)括起來匹配字符串必須用一對(duì)引號(hào)括起來l例例3.15 在學(xué)生在學(xué)生Student表中查詢所有姓王且全名為表中查詢所有姓王且全名為3個(gè)漢個(gè)漢字的同學(xué)學(xué)號(hào)和姓名字的同學(xué)學(xué)號(hào)和姓名 SELECT studentNo, studentName FROM Student WHERE studentName LIKE 王王_注意:注意:在中文在中文SQL-Serve
47、r中,如果匹配字符串為漢字,則中,如果匹配字符串為漢字,則一個(gè)下劃線代表一個(gè)漢字;如果是西文,則一個(gè)下劃線代一個(gè)下劃線代表一個(gè)漢字;如果是西文,則一個(gè)下劃線代表一個(gè)字符。表一個(gè)字符。2022-3-172022-3-173838北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.16 在學(xué)生在學(xué)生Student表中查詢名字中不含有表中查詢名字中不含有“福?!钡牡耐瑢W(xué)學(xué)號(hào)和姓名。同學(xué)學(xué)號(hào)和姓名。 SELECT studentNo, stude
48、ntName FROM Student WHERE studentName NOT LIKE %福福%2022-3-172022-3-173939北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.17 在學(xué)生在學(xué)生Student表中查詢蒙古族的同學(xué)學(xué)號(hào)和姓名表中查詢蒙古族的同學(xué)學(xué)號(hào)和姓名 SELECT studentNo, studentName FROM Student WHERE nation LIKE 蒙古族蒙古族注意:注意:如果
49、匹配字符串中如果匹配字符串中不含有不含有%和和_,則,則LIKE與比較運(yùn)算與比較運(yùn)算符符“=”的查詢結(jié)果一樣的查詢結(jié)果一樣該查詢等價(jià)于下面的查詢:該查詢等價(jià)于下面的查詢: SELECT studentNo, studentName FROM Student WHERE nation=蒙古族蒙古族2022-3-172022-3-174040北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 如果查詢字串中本身要包含如果查詢字串中本身要包含%和和_
50、,必須使用,必須使用“ESCAPE ”短語,短語,對(duì)通配符進(jìn)行轉(zhuǎn)義處理對(duì)通配符進(jìn)行轉(zhuǎn)義處理。l例例3.18 在班級(jí)在班級(jí)Class表中查詢班級(jí)名稱中含有表中查詢班級(jí)名稱中含有“08_”符號(hào)符號(hào)的班級(jí)名稱的班級(jí)名稱 SELECT className FROM Class WHERE className LIKE %08_% ESCAPE “ESCAPE ”表示表示為換碼字符為換碼字符緊跟在緊跟在符號(hào)后的符號(hào)后的_不是通配符不是通配符,而是,而是普通的用戶要查詢的符號(hào)普通的用戶要查詢的符號(hào)查詢結(jié)果如圖查詢結(jié)果如圖3-17所示所示2022-3-172022-3-174141北京理工大學(xué)珠海學(xué)院北京理
51、工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算如果將如果將#字符作為換碼字符,則該查詢可改寫為:字符作為換碼字符,則該查詢可改寫為: SELECT className FROM Class WHERE className LIKE %08#_% ESCAPE #2022-3-172022-3-174242北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-
52、4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算n 邏輯查詢邏輯查詢lSQL提供提供AND、OR和和NOT邏輯運(yùn)算符分別實(shí)現(xiàn)邏輯與、邏輯運(yùn)算符分別實(shí)現(xiàn)邏輯與、邏輯或和邏輯非運(yùn)算邏輯或和邏輯非運(yùn)算l例例3.19 在選課在選課Score表中查詢選修了表中查詢選修了“001”、“005”或或“003”課程的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)課程的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)SELECT studentNo, courseNo, scoreFROM ScoreWHERE courseNo=001 OR courseNo=005 OR courseNo=003l在例在例3.10中使用的是集合運(yùn)算,本例中采用邏輯中使用的是集合運(yùn)
53、算,本例中采用邏輯“或或”運(yùn)運(yùn)算算2022-3-172022-3-174343北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.20 在在Student表中查詢表中查詢1991年出生且籍貫為年出生且籍貫為“漢族漢族”的同學(xué)學(xué)號(hào)、姓名、出生日期。的同學(xué)學(xué)號(hào)、姓名、出生日期。 SELECT studentNo, studentName, birthday FROM Student WHERE year(birthday)=1991 AND
54、nation=漢族漢族l注意:注意:在邏輯運(yùn)算中,不可以對(duì)同一個(gè)屬性進(jìn)行邏輯在邏輯運(yùn)算中,不可以對(duì)同一個(gè)屬性進(jìn)行邏輯“與與”的等值運(yùn)算的等值運(yùn)算如在選課如在選課Score表中查詢同時(shí)選修了表中查詢同時(shí)選修了“001”和和“002”課程的同學(xué)的課程的同學(xué)的選課信息,選課信息,如下查詢是錯(cuò)誤的,得不到結(jié)果如下查詢是錯(cuò)誤的,得不到結(jié)果: SELECT * FROM Score WHERE courseNo=001 AND courseNo=002要實(shí)現(xiàn)該查詢,需要使用連接運(yùn)算或嵌套子查詢要實(shí)現(xiàn)該查詢,需要使用連接運(yùn)算或嵌套子查詢通過連接運(yùn)算表示該查詢,參見例通過連接運(yùn)算表示該查詢,參見例3.29、例
55、、例3.31通過嵌套子查詢,參見例通過嵌套子查詢,參見例3.39、例、例3.40 2022-3-172022-3-174444北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3.21 在在Student表中查詢籍貫不是表中查詢籍貫不是“南昌南昌”或或“上海上?!钡耐瑢W(xué)姓名、籍貫和所屬班級(jí)編號(hào)。的同學(xué)姓名、籍貫和所屬班級(jí)編號(hào)。 SELECT studentName, native, classNo FROM Student WHERE na
56、tive!=南昌南昌 AND native!=上海上海l例例3.22 在選課在選課Score表中查詢成績(jī)?cè)诒碇胁樵兂煽?jī)?cè)?090分之間的同分之間的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。 SELECT studentNo, courseNo, score FROM Score WHERE score= 80 AND score=902022-3-172022-3-174545北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.2 選擇運(yùn)算選擇運(yùn)算l例例3
57、.23 在選課在選課Score表中查詢成績(jī)不在表中查詢成績(jī)不在8090分之間的同學(xué)分之間的同學(xué)學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。學(xué)號(hào)、課程號(hào)和相應(yīng)成績(jī)。 SELECT studentNo, courseNo, score FROM Score WHERE score902022-3-172022-3-174646北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.3 排序運(yùn)算排序運(yùn)算n 使用使用ORDER BY 子句實(shí)現(xiàn)排序運(yùn)算,其語法為:子句實(shí)現(xiàn)排序運(yùn)算,其語法為: ORDE
58、R BY ASC | DESC , ASC | DESC, . l其中:其中:, , .可以是屬性、函數(shù)或表達(dá)式可以是屬性、函數(shù)或表達(dá)式缺省按升序缺省按升序(ASC)排序排序按降序排序,必須指明按降序排序,必須指明DESC選項(xiàng)選項(xiàng)l該運(yùn)算含義是:該運(yùn)算含義是:在查詢結(jié)果中首先按在查詢結(jié)果中首先按的值進(jìn)行排序的值進(jìn)行排序在在值相等的情況下再按值相等的情況下再按值排序值排序依此類推依此類推2022-3-172022-3-174747北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4
59、節(jié)節(jié)3.2.3 排序運(yùn)算排序運(yùn)算l例例3.24 在學(xué)生在學(xué)生 Student表中查詢籍貫不是表中查詢籍貫不是“南昌南昌”或或“上上海?!钡耐瑢W(xué)姓名、籍貫和所屬班級(jí)編號(hào),的同學(xué)姓名、籍貫和所屬班級(jí)編號(hào),并按籍貫的降序并按籍貫的降序排序輸出排序輸出。 SELECT studentName, native, classNo FROM Student WHERE native!=南昌南昌 AND native!=上海上海 ORDER BY native DESC查詢結(jié)果如圖查詢結(jié)果如圖3-18所示所示2022-3-172022-3-174848北京理工大學(xué)珠海學(xué)院北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院計(jì)算機(jī)
60、學(xué)院 數(shù)據(jù)庫原理與設(shè)計(jì)數(shù)據(jù)庫原理與設(shè)計(jì) 張申勇張申勇第第 3 3 章章 SQL SQL語言語言_1-4_1-4節(jié)節(jié)3.2.3 排序運(yùn)算排序運(yùn)算l例例3.25 在學(xué)生在學(xué)生Student表中查詢表中查詢“女女”學(xué)生的學(xué)號(hào)、姓名學(xué)生的學(xué)號(hào)、姓名、所屬班級(jí)編號(hào)和出生日期,、所屬班級(jí)編號(hào)和出生日期,并按班級(jí)編號(hào)的升序、出生并按班級(jí)編號(hào)的升序、出生日期的月份降序排序輸出日期的月份降序排序輸出。 SELECT studentNo, studentName, classNo, birthday FROM Student WHERE sex=女女 ORDER BY classNo, month(birthda
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品采購合同范本簡(jiǎn)易
- 公司與法人借款合同范本
- 會(huì)展展位費(fèi)合同范本
- 單位購房合同范本
- 南京車位轉(zhuǎn)讓合同范本
- 買電車銷售合同范本
- 南山果蔬配送合同范本
- 包材軟管采購合同范本
- 科學(xué)課堂上的學(xué)生中心教學(xué)建構(gòu)性教學(xué)方法的實(shí)踐
- 電子商務(wù)與實(shí)體店的協(xié)同發(fā)展
- 實(shí)驗(yàn)經(jīng)濟(jì)學(xué)實(shí)驗(yàn)設(shè)計(jì)案例
- 東軟入職合同
- 護(hù)理責(zé)任組長(zhǎng)競(jìng)聘
- 絕緣技術(shù)監(jiān)督上崗員:廠用電設(shè)備技術(shù)監(jiān)督考試資料一
- 衛(wèi)生監(jiān)督村醫(yī)培訓(xùn)課件
- 動(dòng)物的感覺器官
- 獵頭項(xiàng)目方案
- 2024年新青島版(六三制)四年級(jí)下冊(cè)科學(xué)全冊(cè)精編復(fù)習(xí)資料
- 2024年家庭教育指導(dǎo)師考試(重點(diǎn))題庫及答案(含各題型)
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(創(chuàng)新創(chuàng)業(yè)課程)全套教學(xué)課件
- 礦山開工第一課
評(píng)論
0/150
提交評(píng)論