




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL ServerSQL Server數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)技術(shù)研究解決計(jì)算機(jī)信息處理數(shù)據(jù)庫(kù)技術(shù)研究解決計(jì)算機(jī)信息處理過(guò)程中大量數(shù)據(jù)有效地組織和存儲(chǔ)的問(wèn)題,過(guò)程中大量數(shù)據(jù)有效地組織和存儲(chǔ)的問(wèn)題,在數(shù)據(jù)庫(kù)系統(tǒng)中減少數(shù)據(jù)存儲(chǔ)冗余,實(shí)現(xiàn)在數(shù)據(jù)庫(kù)系統(tǒng)中減少數(shù)據(jù)存儲(chǔ)冗余,實(shí)現(xiàn)數(shù)據(jù)共享,保障數(shù)據(jù)安全以及高效地檢索數(shù)據(jù)共享,保障數(shù)據(jù)安全以及高效地檢索數(shù)據(jù)和處理數(shù)據(jù)。數(shù)據(jù)和處理數(shù)據(jù)。數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是孤立的,數(shù)據(jù)與數(shù)據(jù)之?dāng)?shù)據(jù)庫(kù)中的數(shù)據(jù)不是孤立的,數(shù)據(jù)與數(shù)據(jù)之間是相互關(guān)聯(lián)的。也就是說(shuō),在數(shù)據(jù)庫(kù)中不間是相互關(guān)聯(lián)的。也就是說(shuō),在數(shù)據(jù)庫(kù)中不僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)僅要能夠表示數(shù)據(jù)本身,還要能夠表示數(shù)據(jù)與
2、數(shù)據(jù)之間的聯(lián)系與數(shù)據(jù)之間的聯(lián)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以共享數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以共享但是是可控制、受約束的但是是可控制、受約束的教務(wù)文件后勤文件學(xué)生基本情況冗余!冗余帶來(lái)什么問(wèn)題?學(xué)生基本情況冗余!冗余帶來(lái)什么問(wèn)題?數(shù)據(jù)庫(kù)技數(shù)據(jù)庫(kù)技術(shù)要能夠術(shù)要能夠保證數(shù)據(jù)保證數(shù)據(jù)庫(kù)中的數(shù)庫(kù)中的數(shù)據(jù)是安全、據(jù)是安全、可靠的??煽康摹?有效地防止數(shù)有效地防止數(shù)據(jù)庫(kù)中的數(shù)據(jù)被據(jù)庫(kù)中的數(shù)據(jù)被非法使用或非法非法使用或非法修改修改 數(shù)據(jù)遭到破壞數(shù)據(jù)遭到破壞時(shí)能立刻將數(shù)據(jù)時(shí)能立刻將數(shù)據(jù)完全恢復(fù)完全恢復(fù)保證數(shù)據(jù)正保證數(shù)據(jù)正確的特性在確的特性在數(shù)據(jù)庫(kù)中稱數(shù)據(jù)庫(kù)中稱之為數(shù)據(jù)完之為數(shù)據(jù)完整性。整性。899在多個(gè)用戶同時(shí)使用數(shù)據(jù)庫(kù)時(shí),能夠保證
3、在多個(gè)用戶同時(shí)使用數(shù)據(jù)庫(kù)時(shí),能夠保證不產(chǎn)生沖突和矛盾,保證數(shù)據(jù)的一致性和不產(chǎn)生沖突和矛盾,保證數(shù)據(jù)的一致性和正確性。正確性。數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)存儲(chǔ)設(shè)備上、相互關(guān)聯(lián)的、可以被用數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)存儲(chǔ)設(shè)備上、相互關(guān)聯(lián)的、可以被用戶共享的數(shù)據(jù)集合戶共享的數(shù)據(jù)集合:是相互關(guān)聯(lián)的數(shù)據(jù)的集合是相互關(guān)聯(lián)的數(shù)據(jù)的集合 用綜合的方法組織數(shù)據(jù),保證盡可能高的訪問(wèn)效率用綜合的方法組織數(shù)據(jù),保證盡可能高的訪問(wèn)效率具有較高的數(shù)據(jù)獨(dú)立性具有較高的數(shù)據(jù)獨(dú)立性 具有較小的數(shù)據(jù)冗余,可供多個(gè)用戶共享具有較小的數(shù)據(jù)冗余,可供多個(gè)用戶共享 具有安全控制機(jī)制,能夠保證數(shù)據(jù)的安全、可靠具有安全控制機(jī)制,能夠保證數(shù)據(jù)的安全、
4、可靠 最大限度地保證數(shù)據(jù)的正確性最大限度地保證數(shù)據(jù)的正確性 允許并發(fā)地使用,能有效、及時(shí)地處理數(shù)據(jù),并能保證數(shù)據(jù)的一允許并發(fā)地使用,能有效、及時(shí)地處理數(shù)據(jù),并能保證數(shù)據(jù)的一致性和完整性致性和完整性 數(shù)據(jù)管理是指對(duì)數(shù)據(jù)的組織、存儲(chǔ)、數(shù)據(jù)管理是指對(duì)數(shù)據(jù)的組織、存儲(chǔ)、維護(hù)和使用等。維護(hù)和使用等。 數(shù)據(jù)管理的方法分為三個(gè)階段:人工數(shù)據(jù)管理的方法分為三個(gè)階段:人工管理階段、文件管理階段和數(shù)據(jù)庫(kù)系統(tǒng)階管理階段、文件管理階段和數(shù)據(jù)庫(kù)系統(tǒng)階段。段。 一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)(一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)(Database System)一般是由數(shù)據(jù)庫(kù)(一般是由數(shù)據(jù)庫(kù)(Database)、數(shù)據(jù)庫(kù)管)、數(shù)據(jù)庫(kù)管理系統(tǒng)(理系統(tǒng)(Datab
5、ase Management System,DBMS)以及數(shù)據(jù)庫(kù)用戶組成。廣義地說(shuō),)以及數(shù)據(jù)庫(kù)用戶組成。廣義地說(shuō),數(shù)據(jù)庫(kù)系統(tǒng)是由計(jì)算機(jī)硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)是由計(jì)算機(jī)硬件、操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)以及在它支持下建立起來(lái)數(shù)據(jù)庫(kù)管理系統(tǒng)以及在它支持下建立起來(lái)的數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)應(yīng)用程序、用戶和維護(hù)的數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)應(yīng)用程序、用戶和維護(hù)人員組成的一個(gè)整體。人員組成的一個(gè)整體。1數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)的基本概念 數(shù)據(jù)庫(kù)是存儲(chǔ)在計(jì)算機(jī)系統(tǒng)內(nèi)的有結(jié)數(shù)據(jù)庫(kù)是存儲(chǔ)在計(jì)算機(jī)系統(tǒng)內(nèi)的有結(jié)構(gòu)的數(shù)據(jù)的集合。構(gòu)的數(shù)據(jù)的集合。 這些數(shù)據(jù)是被數(shù)據(jù)庫(kù)管理系統(tǒng)按一定這些數(shù)據(jù)是被數(shù)據(jù)庫(kù)管理系統(tǒng)按一定的組織形式存放在各個(gè)數(shù)據(jù)庫(kù)文件
6、中的。的組織形式存放在各個(gè)數(shù)據(jù)庫(kù)文件中的。 數(shù)據(jù)庫(kù)是由很多數(shù)據(jù)庫(kù)文件以及若干數(shù)據(jù)庫(kù)是由很多數(shù)據(jù)庫(kù)文件以及若干輔助操作文件組成的。輔助操作文件組成的。 基本的數(shù)據(jù)庫(kù)模型有三種:網(wǎng)狀數(shù)據(jù)基本的數(shù)據(jù)庫(kù)模型有三種:網(wǎng)狀數(shù)據(jù)庫(kù)模型、層次數(shù)據(jù)庫(kù)模型和關(guān)系型數(shù)據(jù)庫(kù)庫(kù)模型、層次數(shù)據(jù)庫(kù)模型和關(guān)系型數(shù)據(jù)庫(kù)模型。模型。 關(guān)系型數(shù)據(jù)庫(kù)模型是以二維矩陣來(lái)存關(guān)系型數(shù)據(jù)庫(kù)模型是以二維矩陣來(lái)存儲(chǔ)數(shù)據(jù)的,行和列形成一個(gè)關(guān)聯(lián)的數(shù)儲(chǔ)數(shù)據(jù)的,行和列形成一個(gè)關(guān)聯(lián)的數(shù) 據(jù)據(jù)表。表。 數(shù)據(jù)庫(kù)管理系統(tǒng)是指在操作系統(tǒng)的支數(shù)據(jù)庫(kù)管理系統(tǒng)是指在操作系統(tǒng)的支持下幫助用戶建立、使用和管理數(shù)據(jù)庫(kù)的持下幫助用戶建立、使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng)。通常包含數(shù)
7、據(jù)描述語(yǔ)言、數(shù)據(jù)軟件系統(tǒng)。通常包含數(shù)據(jù)描述語(yǔ)言、數(shù)據(jù)操作語(yǔ)言以及管理和控制程序三個(gè)組成部操作語(yǔ)言以及管理和控制程序三個(gè)組成部分。分。 用來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu),供用戶建立用來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu),供用戶建立數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)。 供用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的查詢(數(shù)供用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的查詢(數(shù)據(jù)的檢索和統(tǒng)計(jì)等)和處理(數(shù)據(jù)的增加、據(jù)的檢索和統(tǒng)計(jì)等)和處理(數(shù)據(jù)的增加、刪除和修改等)等操作。刪除和修改等)等操作。 包括安全、通信控制和工作日志等。包括安全、通信控制和工作日志等。1系統(tǒng)程序員系統(tǒng)程序員2數(shù)據(jù)庫(kù)管理員數(shù)據(jù)庫(kù)管理員3應(yīng)用程序員應(yīng)用程序員4操作員操作員1Main Frame大型數(shù)據(jù)庫(kù)大型數(shù)據(jù)庫(kù)2本地小
8、型數(shù)據(jù)庫(kù)本地小型數(shù)據(jù)庫(kù)3分布式數(shù)據(jù)庫(kù)分布式數(shù)據(jù)庫(kù)4客戶機(jī)客戶機(jī)/服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器數(shù)據(jù)庫(kù) 發(fā)送命令處理命令后請(qǐng)求數(shù)據(jù)返回?cái)?shù)據(jù)處理數(shù)據(jù)后返回結(jié)果ClientApplicationServerDatabaseServer表示服務(wù)的最小商業(yè)邏輯商業(yè)邏輯數(shù)據(jù)訪問(wèn)和管理 關(guān)系型數(shù)據(jù)庫(kù)是指一些相關(guān)的表和其關(guān)系型數(shù)據(jù)庫(kù)是指一些相關(guān)的表和其他數(shù)據(jù)庫(kù)對(duì)象的集合。在關(guān)系型數(shù)據(jù)庫(kù)中,他數(shù)據(jù)庫(kù)對(duì)象的集合。在關(guān)系型數(shù)據(jù)庫(kù)中,信息存放在二維表格結(jié)構(gòu)的表中,一個(gè)關(guān)信息存放在二維表格結(jié)構(gòu)的表中,一個(gè)關(guān)系型數(shù)據(jù)庫(kù)包含多個(gè)數(shù)據(jù)表,每一個(gè)表包系型數(shù)據(jù)庫(kù)包含多個(gè)數(shù)據(jù)表,每一個(gè)表包含行(記錄)和列(字段)。含行(記錄)和列(字段)。
9、關(guān)系型數(shù)據(jù)庫(kù)都有多個(gè)表。關(guān)系型數(shù)關(guān)系型數(shù)據(jù)庫(kù)都有多個(gè)表。關(guān)系型數(shù)據(jù)庫(kù)所包含的表之間是有關(guān)聯(lián)的,關(guān)聯(lián)性據(jù)庫(kù)所包含的表之間是有關(guān)聯(lián)的,關(guān)聯(lián)性由主鍵、外鍵所體現(xiàn)的參照關(guān)系實(shí)現(xiàn)。關(guān)由主鍵、外鍵所體現(xiàn)的參照關(guān)系實(shí)現(xiàn)。關(guān)系型數(shù)據(jù)庫(kù)不僅包含表,還包含其他數(shù)據(jù)系型數(shù)據(jù)庫(kù)不僅包含表,還包含其他數(shù)據(jù)庫(kù)對(duì)象,例如關(guān)系圖、視圖、存儲(chǔ)過(guò)程和庫(kù)對(duì)象,例如關(guān)系圖、視圖、存儲(chǔ)過(guò)程和索引等。索引等。1、表、表 表是存放數(shù)據(jù)對(duì)象的二維表格,按列和行存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)庫(kù)的大部分工作室處理表,表是存放數(shù)據(jù)對(duì)象的二維表格,按列和行存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)庫(kù)的大部分工作室處理表,每個(gè)表支持每個(gè)表支持4中操作:查詢、插入、更新、刪除。中操作:查詢、插入
10、、更新、刪除。2、視圖、視圖 視圖是瀏覽數(shù)據(jù)的方式,并不表明數(shù)據(jù)的存儲(chǔ)。視圖和表很相似,可以用來(lái)檢索視圖是瀏覽數(shù)據(jù)的方式,并不表明數(shù)據(jù)的存儲(chǔ)。視圖和表很相似,可以用來(lái)檢索特定的數(shù)據(jù),但是不存儲(chǔ)數(shù)據(jù),只是存放特定的數(shù)據(jù),但是不存儲(chǔ)數(shù)據(jù),只是存放SQL命令,記錄如何檢索表中的數(shù)據(jù),打開(kāi)命令,記錄如何檢索表中的數(shù)據(jù),打開(kāi)視圖時(shí),視圖時(shí),SQL執(zhí)行執(zhí)行這些這些命令,形成虛擬表。虛擬表只在使用時(shí)存在,使用完畢后撤命令,形成虛擬表。虛擬表只在使用時(shí)存在,使用完畢后撤銷。銷。3、存儲(chǔ)過(guò)程、存儲(chǔ)過(guò)程 存儲(chǔ)過(guò)程和視圖很相似,也是存放存儲(chǔ)過(guò)程和視圖很相似,也是存放SQL命令。但存儲(chǔ)過(guò)程的主要目的不是為了瀏命令。但
11、存儲(chǔ)過(guò)程的主要目的不是為了瀏覽數(shù)據(jù),而是對(duì)數(shù)據(jù)進(jìn)行處理。如果經(jīng)常要對(duì)表中的數(shù)據(jù)做相同的處理,并且處理過(guò)覽數(shù)據(jù),而是對(duì)數(shù)據(jù)進(jìn)行處理。如果經(jīng)常要對(duì)表中的數(shù)據(jù)做相同的處理,并且處理過(guò)程比較復(fù)雜,則可以考慮將處理數(shù)據(jù)的命令組織成存儲(chǔ)過(guò)程,以后每次只需要執(zhí)行存程比較復(fù)雜,則可以考慮將處理數(shù)據(jù)的命令組織成存儲(chǔ)過(guò)程,以后每次只需要執(zhí)行存儲(chǔ)過(guò)程即可。(存儲(chǔ)過(guò)程的命令,系統(tǒng)會(huì)經(jīng)過(guò)編譯,提高執(zhí)行效率。)儲(chǔ)過(guò)程即可。(存儲(chǔ)過(guò)程的命令,系統(tǒng)會(huì)經(jīng)過(guò)編譯,提高執(zhí)行效率。)4、觸發(fā)器、觸發(fā)器 觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程。觸發(fā)器可以自動(dòng)響應(yīng)用戶的操作,也可以強(qiáng)制復(fù)觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程。觸發(fā)器可以自動(dòng)響應(yīng)用戶的操作,也可
12、以強(qiáng)制復(fù)雜的業(yè)務(wù)規(guī)則或要求。雜的業(yè)務(wù)規(guī)則或要求。UPDATE、INSERT和和DELETE等操作可以觸發(fā)觸發(fā)器。等操作可以觸發(fā)觸發(fā)器。 關(guān)系型數(shù)據(jù)庫(kù)是由多個(gè)表和其他數(shù)據(jù)關(guān)系型數(shù)據(jù)庫(kù)是由多個(gè)表和其他數(shù)據(jù)庫(kù)對(duì)象組成的。表是一種最基本的數(shù)據(jù)庫(kù)庫(kù)對(duì)象組成的。表是一種最基本的數(shù)據(jù)庫(kù)對(duì)象,是由行和列組成的,表中的每一行對(duì)象,是由行和列組成的,表中的每一行通常稱為一條記錄,表中的每一列稱為一通常稱為一條記錄,表中的每一列稱為一個(gè)字段,表頭的各列給出了各個(gè)字段的名個(gè)字段,表頭的各列給出了各個(gè)字段的名稱。稱。 橫的 一行 稱為 一個(gè) 記錄 縱的一列稱為一個(gè)字段 表頭 給出 字段 名 圖圖1-1 1-1 學(xué)生信息
13、表學(xué)生信息表在在SQL Server 中,根據(jù)數(shù)據(jù)完整措施所作中,根據(jù)數(shù)據(jù)完整措施所作用的數(shù)據(jù)庫(kù)對(duì)象和范圍不同,可以將數(shù)據(jù)用的數(shù)據(jù)庫(kù)對(duì)象和范圍不同,可以將數(shù)據(jù)完整性分為以下幾種:完整性分為以下幾種:1、實(shí)體完整性(主鍵、唯一性約束)、實(shí)體完整性(主鍵、唯一性約束)2、參照完整性(外鍵約束)、參照完整性(外鍵約束)3、域完整性(、域完整性(check、默認(rèn)值約束)、默認(rèn)值約束)4、用戶定義的完整性、用戶定義的完整性 主鍵約束使用數(shù)據(jù)表中的一列數(shù)據(jù)或者多列數(shù)據(jù)來(lái)唯一的主鍵約束使用數(shù)據(jù)表中的一列數(shù)據(jù)或者多列數(shù)據(jù)來(lái)唯一的標(biāo)識(shí)一行數(shù)據(jù)。也就是說(shuō),在數(shù)據(jù)表中不能存在主鍵相同的兩標(biāo)識(shí)一行數(shù)據(jù)。也就是說(shuō),在數(shù)
14、據(jù)表中不能存在主鍵相同的兩行數(shù)據(jù),而且主鍵約束下的列不能為空(行數(shù)據(jù),而且主鍵約束下的列不能為空(NULL),在創(chuàng)建表時(shí),),在創(chuàng)建表時(shí),最好每個(gè)數(shù)據(jù)表都擁有自己唯一的主鍵,主鍵也可以由幾個(gè)列最好每個(gè)數(shù)據(jù)表都擁有自己唯一的主鍵,主鍵也可以由幾個(gè)列組合成。每個(gè)表只能有一個(gè)主鍵。組合成。每個(gè)表只能有一個(gè)主鍵。 不能定義不能定義TEXT或或IMAGE數(shù)據(jù)類型的字段列為主鍵。數(shù)據(jù)類型的字段列為主鍵。 在創(chuàng)建表結(jié)構(gòu)的時(shí)候,在創(chuàng)建表結(jié)構(gòu)的時(shí)候,選定列名或列名組合選定列名或列名組合(shift鍵)鍵),在所選列上在所選列上右擊彈出相應(yīng)菜單,如右擊彈出相應(yīng)菜單,如右圖所示。右圖所示。 單擊有鑰匙圖標(biāo)的菜單擊有
15、鑰匙圖標(biāo)的菜單項(xiàng)。單項(xiàng)。創(chuàng)建成功后該列名前創(chuàng)建成功后該列名前出現(xiàn)一個(gè)小鑰匙形狀的出現(xiàn)一個(gè)小鑰匙形狀的圖標(biāo)如右圖所示。圖標(biāo)如右圖所示。 外鍵約束定義了表之間的關(guān)系,主要用來(lái)維護(hù)兩個(gè)表之間的一致性。出于某種關(guān)聯(lián)的需要,當(dāng)一個(gè)表需要引用另一個(gè)表的主鍵主鍵作為自己的一個(gè)字段時(shí),我們稱這個(gè)引用來(lái)的字段為外鍵外鍵。 這樣,當(dāng)主鍵更新或刪除時(shí),其它所有表中與這個(gè)主鍵關(guān)聯(lián)的外鍵關(guān)聯(lián)的外鍵也將被相應(yīng)的更新或刪除。當(dāng)向外鍵所在的表插入或更新數(shù)據(jù)(外鍵字段)時(shí),如果與外鍵表相關(guān)聯(lián)的主鍵表的主鍵主鍵中無(wú)與插入或更新的外外鍵鍵有相同的值時(shí),系統(tǒng)會(huì)報(bào)錯(cuò)并拒絕插入或更新數(shù)據(jù)。 不能定義TEXT或IMAGE數(shù)據(jù)類型的列為外鍵
16、。例如,例如,“班級(jí)班級(jí)”表中的列表中的列“班號(hào)班號(hào)”是是“班級(jí)班級(jí)”表的主鍵,表的主鍵,而而“學(xué)生學(xué)生”表中的表中的“班號(hào)班號(hào)”是是“學(xué)生學(xué)生”表的外鍵,學(xué)生必表的外鍵,學(xué)生必須屬于一個(gè)特定的班級(jí),一旦在設(shè)計(jì)數(shù)據(jù)庫(kù)表時(shí),確定了須屬于一個(gè)特定的班級(jí),一旦在設(shè)計(jì)數(shù)據(jù)庫(kù)表時(shí),確定了“班級(jí)班級(jí)”表和表和“學(xué)生學(xué)生”表的主鍵與外鍵的這種關(guān)系,在給表的主鍵與外鍵的這種關(guān)系,在給 “學(xué)生學(xué)生”表輸入數(shù)據(jù)時(shí),學(xué)生所在的表輸入數(shù)據(jù)時(shí),學(xué)生所在的“班號(hào)班號(hào)”必須存在于必須存在于“班級(jí)班級(jí)”表中,否則,該學(xué)生的數(shù)據(jù)無(wú)法輸入到系統(tǒng)中,表中,否則,該學(xué)生的數(shù)據(jù)無(wú)法輸入到系統(tǒng)中,這有效地避免了無(wú)意間數(shù)據(jù)錄入的錯(cuò)誤,保證
17、了數(shù)據(jù)庫(kù)中這有效地避免了無(wú)意間數(shù)據(jù)錄入的錯(cuò)誤,保證了數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性。數(shù)據(jù)的完整性。 學(xué)號(hào)姓名性別籍貫出生日期班號(hào)學(xué)生表學(xué)生表1. 1. 用用Enterprise ManagerEnterprise Manager建表的步驟如下:建表的步驟如下: 創(chuàng)建了創(chuàng)建了“班級(jí)班級(jí)”表和表和“學(xué)生學(xué)生”表之間的一個(gè)關(guān)系。保存表之間的一個(gè)關(guān)系。保存建立表之間的引用關(guān)系:建立表之間的引用關(guān)系: 建立表之間關(guān)系圖步驟如下:建立表之間關(guān)系圖步驟如下: 1 1)啟動(dòng)啟動(dòng)“企業(yè)管理器企業(yè)管理器”,展開(kāi),展開(kāi)“數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)”文件夾,選中要為其創(chuàng)文件夾,選中要為其創(chuàng)建表之間關(guān)系的數(shù)據(jù)庫(kù),并將該數(shù)據(jù)庫(kù)展開(kāi),用鼠標(biāo)右鍵單
18、擊建表之間關(guān)系的數(shù)據(jù)庫(kù),并將該數(shù)據(jù)庫(kù)展開(kāi),用鼠標(biāo)右鍵單擊“關(guān)系圖關(guān)系圖”“新建數(shù)據(jù)庫(kù)關(guān)系圖新建數(shù)據(jù)庫(kù)關(guān)系圖” 。單擊單擊“下一步下一步”。建立表之間關(guān)系圖步驟如下:建立表之間關(guān)系圖步驟如下: 2 2)選擇要添加的表,選擇要添加的表,單擊單擊“下一步下一步”。單擊。單擊“完成完成”。建立表之間關(guān)系圖步驟如下:建立表之間關(guān)系圖步驟如下: 3 3)整理,保存)整理,保存,完成完成“教學(xué)管理教學(xué)管理”表之間的關(guān)系圖。表之間的關(guān)系圖。可以使用可以使用 UNIQUE 約束確保在非主鍵列中不輸入重約束確保在非主鍵列中不輸入重復(fù)的值。盡管復(fù)的值。盡管 UNIQUE 約束和約束和 PRIMARY KEY 約約束
19、都強(qiáng)制唯一性,但想要強(qiáng)制一列或多列組合(不束都強(qiáng)制唯一性,但想要強(qiáng)制一列或多列組合(不是主鍵)的唯一性時(shí)應(yīng)使用是主鍵)的唯一性時(shí)應(yīng)使用 UNIQUE 約束而不是約束而不是 PRIMARY KEY 約束。約束。 可以對(duì)一個(gè)表定義多個(gè)可以對(duì)一個(gè)表定義多個(gè) UNIQUE 約束,但只能定義約束,但只能定義一個(gè)一個(gè) PRIMARY KEY 約束。約束。而且,而且,UNIQUE 約束允許約束允許 NULL 值,這一點(diǎn)與值,這一點(diǎn)與 PRIMARY KEY 約束不同。不過(guò),當(dāng)與參與約束不同。不過(guò),當(dāng)與參與 UNIQUE 約束的任何值一起使用時(shí),每列只允許一約束的任何值一起使用時(shí),每列只允許一個(gè)空值。個(gè)空值。
20、 FOREIGN KEY 約束可以引用約束可以引用 UNIQUE 約束。約束。右擊表名稱,選擇快捷菜單中的,選擇快捷菜單中的“設(shè)計(jì)”,進(jìn)入表結(jié)構(gòu)修改,進(jìn)入表結(jié)構(gòu)修改狀態(tài)。單擊狀態(tài)。單擊工具欄處“管理索引和鍵”按鈕,進(jìn)入惟一約束,進(jìn)入惟一約束設(shè)置界面,單擊添加按鈕,定義類型為設(shè)置界面,單擊添加按鈕,定義類型為“唯一鍵唯一鍵”選定惟一選定惟一約束的列,為惟一約束定義標(biāo)識(shí)名,完成后關(guān)閉窗體。約束的列,為惟一約束定義標(biāo)識(shí)名,完成后關(guān)閉窗體。 如果插入行時(shí)沒(méi)有為列指定值,默認(rèn)值則指定列中如果插入行時(shí)沒(méi)有為列指定值,默認(rèn)值則指定列中使用什么值。默認(rèn)值可以是計(jì)算結(jié)果為常量的任何使用什么值。默認(rèn)值可以是計(jì)算結(jié)
21、果為常量的任何值,例如常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。值,例如常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。若要應(yīng)用默認(rèn)值,可以通過(guò)在若要應(yīng)用默認(rèn)值,可以通過(guò)在 CREATE TABLE 中中使用使用 DEFAULT 關(guān)鍵字來(lái)創(chuàng)建默認(rèn)值定義。這將為關(guān)鍵字來(lái)創(chuàng)建默認(rèn)值定義。這將為每一列分配一個(gè)常量表達(dá)式作為默認(rèn)值。每一列分配一個(gè)常量表達(dá)式作為默認(rèn)值。默認(rèn)值必須與要應(yīng)用默認(rèn)值必須與要應(yīng)用 DEFAULT 定義的列的數(shù)據(jù)類定義的列的數(shù)據(jù)類型相配。例如,型相配。例如,int 列的默認(rèn)值必須是整數(shù),而不能列的默認(rèn)值必須是整數(shù),而不能是字符串。是字符串。 后續(xù)版本的后續(xù)版本的 Microsoft SQL Server 將刪除該
22、功能。將刪除該功能。請(qǐng)避免在新的開(kāi)發(fā)工作中使用該功能,并應(yīng)著手修請(qǐng)避免在新的開(kāi)發(fā)工作中使用該功能,并應(yīng)著手修改當(dāng)前還在使用該功能的應(yīng)用程序。改當(dāng)前還在使用該功能的應(yīng)用程序。 通過(guò)限制列可接受的值,通過(guò)限制列可接受的值,CHECK 約束可以強(qiáng)制域的完整性。約束可以強(qiáng)制域的完整性。此類約束類似于此類約束類似于 FOREIGN KEY 約束,因?yàn)榭梢钥刂品湃爰s束,因?yàn)榭梢钥刂品湃肓兄械闹?。但是,它們?cè)诖_定有效值的方式上有所不同:列中的值。但是,它們?cè)诖_定有效值的方式上有所不同:FOREIGN KEY 約束從其他表獲得有效值列表,而約束從其他表獲得有效值列表,而 CHECK 約束通過(guò)不基于其他列中的數(shù)
23、據(jù)的邏輯表達(dá)式確定有效值。約束通過(guò)不基于其他列中的數(shù)據(jù)的邏輯表達(dá)式確定有效值。例如,可以通過(guò)創(chuàng)建例如,可以通過(guò)創(chuàng)建 CHECK 約束將約束將 成績(jī)列中值的范圍限成績(jī)列中值的范圍限制為從制為從 0 到到 100 之間的數(shù)據(jù)。這將防止輸入的成績(jī)值超出正之間的數(shù)據(jù)。這將防止輸入的成績(jī)值超出正常的成績(jī)范圍。常的成績(jī)范圍??梢酝ㄟ^(guò)任何基于邏輯運(yùn)算符返回可以通過(guò)任何基于邏輯運(yùn)算符返回 TRUE 或或 FALSE 的邏輯的邏輯(布爾)表達(dá)式創(chuàng)建(布爾)表達(dá)式創(chuàng)建 CHECK 約束。對(duì)于上面的示例,邏輯約束。對(duì)于上面的示例,邏輯表達(dá)式為:表達(dá)式為:grade= 0 AND grade = 100。 可以將多個(gè)
24、可以將多個(gè) CHECK 約束應(yīng)用于單個(gè)列。還可以通過(guò)在表級(jí)約束應(yīng)用于單個(gè)列。還可以通過(guò)在表級(jí)創(chuàng)建創(chuàng)建 CHECK 約束,將一個(gè)約束,將一個(gè) CHECK 約束應(yīng)用于多個(gè)列。約束應(yīng)用于多個(gè)列。 1、在對(duì)象資源管理器中,右鍵單擊具有、在對(duì)象資源管理器中,右鍵單擊具有 CHECK 約束的表,再單擊約束的表,再單擊“修改修改”。此時(shí),將在表設(shè)。此時(shí),將在表設(shè)計(jì)器中打開(kāi)該表。計(jì)器中打開(kāi)該表。2、在、在“表設(shè)計(jì)器”菜單中,單擊中,單擊“CHECK 約束約束”。3、在、在“CHECK 約束約束”對(duì)話框中,從對(duì)話框中,從“選定的選定的 CHECK 約束約束”列表中選擇約束。列表中選擇約束。4、單擊、單擊“刪除刪
25、除”按鈕。按鈕。 限制輸入到一列或多列中的可能值限制輸入到一列或多列中的可能值,只有符合條件與只有符合條件與格式的數(shù)據(jù)才能存放字段,通過(guò)檢查輸入表列的數(shù)格式的數(shù)據(jù)才能存放字段,通過(guò)檢查輸入表列的數(shù)據(jù)的值來(lái)維護(hù)值域的完整性。檢查約束通過(guò)對(duì)一個(gè)據(jù)的值來(lái)維護(hù)值域的完整性。檢查約束通過(guò)對(duì)一個(gè)邏輯表達(dá)式的結(jié)果進(jìn)行判斷來(lái)對(duì)數(shù)據(jù)進(jìn)行檢查,對(duì)邏輯表達(dá)式的結(jié)果進(jìn)行判斷來(lái)對(duì)數(shù)據(jù)進(jìn)行檢查,對(duì)于單獨(dú)一列可使用多個(gè)于單獨(dú)一列可使用多個(gè)CHECK約束,按約束創(chuàng)建約束,按約束創(chuàng)建的順序?qū)ζ錂z查。的順序?qū)ζ錂z查。 一個(gè)表可以定義多個(gè)檢查約束,但每個(gè)一個(gè)表可以定義多個(gè)檢查約束,但每個(gè)CREATE TABLE語(yǔ)句只能為每列定義一
26、個(gè)檢查約束;在每次語(yǔ)句只能為每列定義一個(gè)檢查約束;在每次插入記錄或修改記錄時(shí),檢查約束會(huì)做相應(yīng)檢查;插入記錄或修改記錄時(shí),檢查約束會(huì)做相應(yīng)檢查;自動(dòng)編號(hào)字段不能應(yīng)用檢查約束。自動(dòng)編號(hào)字段不能應(yīng)用檢查約束。 表之間的關(guān)聯(lián)方式分為以下表之間的關(guān)聯(lián)方式分為以下3種類型。種類型。1一對(duì)一關(guān)聯(lián)(一對(duì)一關(guān)聯(lián)(one-to-one) 設(shè)在一個(gè)數(shù)據(jù)庫(kù)中有設(shè)在一個(gè)數(shù)據(jù)庫(kù)中有A、B兩個(gè)表,對(duì)兩個(gè)表,對(duì)于表于表A中的任何一條記錄,表中的任何一條記錄,表B中只能有一中只能有一條記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表?xiàng)l記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表B中的中的任何一條記錄,表任何一條記錄,表A中也只能有一條記錄中也只能有一條記錄與之
27、對(duì)應(yīng),則稱這兩個(gè)表是一對(duì)一關(guān)聯(lián)的。與之對(duì)應(yīng),則稱這兩個(gè)表是一對(duì)一關(guān)聯(lián)的。 設(shè)在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中有設(shè)在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中有A、B兩個(gè)兩個(gè)表,對(duì)于表表,對(duì)于表A中的任何一條記錄,表中的任何一條記錄,表B中可中可能有多條記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表能有多條記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表B中的任何一條記錄,表中的任何一條記錄,表A中卻只能有一條中卻只能有一條記錄與之對(duì)應(yīng),則稱這兩個(gè)表是一對(duì)多的記錄與之對(duì)應(yīng),則稱這兩個(gè)表是一對(duì)多的關(guān)聯(lián)。關(guān)聯(lián)。 (a a)學(xué)生表一)學(xué)生表一(b b)學(xué)生表二)學(xué)生表二(c c)成績(jī)表)成績(jī)表(d d)課程表)課程表圖圖1-3 1-3 關(guān)系型數(shù)據(jù)庫(kù)表的關(guān)聯(lián)關(guān)系型數(shù)據(jù)庫(kù)表的關(guān)
28、聯(lián) 設(shè)一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中有設(shè)一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中有A、B兩個(gè)表,兩個(gè)表,對(duì)于表對(duì)于表A中的任何一條記錄,表中的任何一條記錄,表B中可能有中可能有多條記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表多條記錄與之對(duì)應(yīng);反過(guò)來(lái),對(duì)于表B中中的任何一條記錄,表的任何一條記錄,表A中也有多條記錄與中也有多條記錄與之對(duì)應(yīng),則稱這兩個(gè)表是多對(duì)多關(guān)聯(lián)的。之對(duì)應(yīng),則稱這兩個(gè)表是多對(duì)多關(guān)聯(lián)的。 CREATE TABLE ( , , ););:所要定義的基本表的名字:所要定義的基本表的名字:組成該表的各個(gè)屬性(列):組成該表的各個(gè)屬性(列):涉及相應(yīng)屬性列的完:涉及相應(yīng)屬性列的完整性約束條件整性約束條件:涉及一個(gè)或多個(gè)屬性:涉及一個(gè)或多
29、個(gè)屬性列的完整性約束條件列的完整性約束條件 例例1 建立一個(gè)建立一個(gè)“學(xué)生學(xué)生”表表Student,它由學(xué)號(hào),它由學(xué)號(hào)Sno、姓名、姓名Sname、性別、性別Ssex、年齡、年齡Sage、所在系、所在系Sdept五個(gè)屬性組五個(gè)屬性組成。其中學(xué)號(hào)不能為空,值是唯一的,并且姓名取值也成。其中學(xué)號(hào)不能為空,值是唯一的,并且姓名取值也唯一。唯一。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(1) , Sage INT, Sdept CHAR(15); SnoSnameSsexSa
30、geSdept 字字符符型型 字字符符型型 字字符符型型 整整數(shù)數(shù) 字字符符型型 長(zhǎng)長(zhǎng)度度為為5 5 長(zhǎng)長(zhǎng)度度為為2 20 0 長(zhǎng)長(zhǎng)度度為為1 1 長(zhǎng)長(zhǎng)度度為為1 15 5 不不能能為為空空值值常用完整性約束常用完整性約束主碼約束:主碼約束: PRIMARY KEY唯一性約束:唯一性約束:UNIQUE非空值約束:非空值約束:NOT NULL參照完整性約束參照完整性約束例例2 建立一個(gè)建立一個(gè)“學(xué)生選課學(xué)生選課”表表SC,它由學(xué)號(hào),它由學(xué)號(hào)Sno、課程、課程號(hào)號(hào)Cno,修課成績(jī),修課成績(jī)Grade組成,其中組成,其中(Sno, Cno)為主碼。為主碼。CREATE TABLE SC( Sno C
31、HAR(5) , Cno CHAR(3) , Grade int, Primary key (Sno, Cno);ALTER TABLE ADD 完整性約束完整性約束 DROP MODIFY ;:要修改的基本表:要修改的基本表ADD子句子句:增加新列和新的完整性約束條件:增加新列和新的完整性約束條件DROP子句子句:刪除指定的完整性約束條件:刪除指定的完整性約束條件MODIFY子句子句:用于修改列名和數(shù)據(jù)類型:用于修改列名和數(shù)據(jù)類型例例 向向Student表增加表增加“入學(xué)時(shí)間入學(xué)時(shí)間”列,其數(shù)據(jù)列,其數(shù)據(jù)類型為日期時(shí)間型。類型為日期時(shí)間型。 ALTER TABLE Student ADD S
32、come DATETIME;不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值。一律為空值。 刪除屬性列刪除屬性列 直接直接/間接刪除間接刪除把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中刪除原表刪除原表再將新表重命名為原表名再將新表重命名為原表名直接刪除屬性列直接刪除屬性列:例:例:ALTER TABLE Student Drop Scome;例例3 將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。 ALTER TABLE Student MODIFY Sage SMALLINT;注:修改原有的列定義有
33、可能會(huì)破壞注:修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù)已有數(shù)據(jù)例例4 刪除學(xué)生姓名必須取唯一值的約束。刪除學(xué)生姓名必須取唯一值的約束。ALTER TABLE Student DROP UNIQUE(Sname); DROP TABLE ; 基本表刪除基本表刪除 數(shù)據(jù)、表上的索引都刪除數(shù)據(jù)、表上的索引都刪除表上的視圖往往仍然保留,但無(wú)法引用表上的視圖往往仍然保留,但無(wú)法引用刪除基本表時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該刪除基本表時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該基本表及其索引的描述基本表及其索引的描述 例例5 刪除刪除Student表表 DROP TABLE Student ;建立索引是加快查詢速度的有效
34、手段建立索引是加快查詢速度的有效手段建立索引建立索引DBA或表的屬主(即建立表的人)根據(jù)需要建或表的屬主(即建立表的人)根據(jù)需要建立立有些有些DBMS自動(dòng)建立以下列上的索引自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUE維護(hù)索引維護(hù)索引 DBMS自動(dòng)完成自動(dòng)完成 使用索引使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索自動(dòng)選擇是否使用索引以及使用哪些索引引語(yǔ)句格式語(yǔ)句格式CREATE UNIQUE CLUSTER INDEX ON (, );用用指定要建索引的基本表名字指定要建索引的基本表名字索引可以建立在該表的一索引可以建立在該表的一列列或多列上,各列名之間用逗或多列上,各列
35、名之間用逗號(hào)分隔號(hào)分隔用用指定索引值的排列次序,升序:指定索引值的排列次序,升序:ASC,降序:,降序:DESC。缺省值:。缺省值:ASCUNIQUE表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄記錄CLUSTER表示要建立的索引是聚簇索引表示要建立的索引是聚簇索引 例例6 為學(xué)生為學(xué)生-課程數(shù)據(jù)庫(kù)中的課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建立索引。其中三個(gè)表建立索引。其中Student表按學(xué)號(hào)升序表按學(xué)號(hào)升序建唯一索引,建唯一索引,Course表按課程號(hào)升序建唯一索引,表按課程號(hào)升序建唯一索引,SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。表按
36、學(xué)號(hào)升序和課程號(hào)降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 2.3.1 概述概述2.3.2 單表查詢單表查詢2.3.3 連接查詢連接查詢2.3.4 嵌套查詢嵌套查詢2.3.5 集合查詢集合查詢語(yǔ)句格式語(yǔ)句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; SELE
37、CT子句子句:指定要顯示的屬性列:指定要顯示的屬性列FROM子句子句:指定查詢對(duì)象:指定查詢對(duì)象(基本表或視圖基本表或視圖)WHERE子句子句:指定查詢條件:指定查詢條件 GROUP BY子句子句:對(duì)查詢結(jié)果按指定列的值分:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中作用集函數(shù)。在每組中作用集函數(shù)。HAVING短語(yǔ)短語(yǔ):篩選出只有滿足指定條件的組:篩選出只有滿足指定條件的組ORDER BY子句子句:對(duì)查詢結(jié)果表按指定列值的:對(duì)查詢結(jié)果表按指定列值的升序或降序排序升序或降序排序 學(xué)生學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù)學(xué)生表:學(xué)生表:St
38、udent(Sno,Sname,Ssex,Sage,Sdept)課程表:課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:學(xué)生選課表:SC(Sno,Cno,Grade) 查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作查詢僅涉及一個(gè)表,是一種最簡(jiǎn)單的查詢操作一、選擇表中的若干列一、選擇表中的若干列二、選擇表中的若干元組二、選擇表中的若干元組三、對(duì)查詢結(jié)果排序三、對(duì)查詢結(jié)果排序四、使用集函數(shù)四、使用集函數(shù)五、對(duì)查詢結(jié)果分組五、對(duì)查詢結(jié)果分組 例例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT Sno,SnameFROM Student; 例例2 查詢
39、全體學(xué)生的姓名、學(xué)號(hào)、所在系。查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。SELECT Sname,Sno,SdeptFROM Student;例例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECT Sno , Sname , Ssex , Sage , Sdept FROM Student; 或或SELECT *FROM Student; SELECT子句的子句的為表達(dá)式為表達(dá)式算術(shù)表達(dá)式算術(shù)表達(dá)式字符串常量字符串常量函數(shù)函數(shù)列別名列別名等等 例例4 查全體學(xué)生的姓名及其出生年份。查全體學(xué)生的姓名及其出生年份。SELECT Sname , 2006-SageFROM Student; 輸
40、出結(jié)果:輸出結(jié)果: Sname 2006-Sage - - 李勇李勇 1976 劉晨劉晨 1977 王名王名 1978 張立張立 1978 例例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫(xiě)字母表示所有系名。要求用小寫(xiě)字母表示所有系名。SELECT Sname , Year of Birth: , 2000-Sage , ISLOWER(Sdept)FROM Student; 輸出結(jié)果:輸出結(jié)果: Sname Year of Birth: 2000-Sage ISLOWER(Sdept) - - - - 李勇李勇 Year of Birth: 197
41、6 cs 劉晨劉晨 Year of Birth: 1977 is 王名王名 Year of Birth: 1978 ma 張立張立 Year of Birth: 1977 is 消除取值重復(fù)的行消除取值重復(fù)的行查詢滿足條件的元組查詢滿足條件的元組 在在SELECT子句中使用子句中使用DISTINCT短語(yǔ)短語(yǔ)假設(shè)假設(shè)SC表中有下列數(shù)據(jù)表中有下列數(shù)據(jù) Sno Cno Grade - - - 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80例例6 查詢選修了課程的學(xué)生學(xué)號(hào)。查詢選修了課程的學(xué)生學(xué)號(hào)。(1) SELECT Sno FROM S
42、C;或或(默認(rèn)默認(rèn) ALL) SELECT ALL Sno FROM SC; 結(jié)果:結(jié)果: Sno - 95001 95001 95001 95002 95002 (2) SELECT DISTINCT Sno FROM SC; 結(jié)果:結(jié)果: Sno - 95001 95002 注意注意 DISTINCT短語(yǔ)的作用范圍是所有目標(biāo)列短語(yǔ)的作用范圍是所有目標(biāo)列例:查詢選修課程的各種成績(jī)例:查詢選修課程的各種成績(jī)錯(cuò)誤的寫(xiě)法錯(cuò)誤的寫(xiě)法SELECT DISTINCT Cno,DISTINCT GradeFROM SC;正確的寫(xiě)法正確的寫(xiě)法 SELECT DISTINCT Cno,Grade FROM S
43、C; 表表3.3 常常 用用 的的 查查 詢?cè)?條條 件件查查 詢?cè)?條條 件件謂謂 詞詞比比 較較=, ,= , = , != , , ! , ! ;N OT + 上上 述述 比比 較較 運(yùn)運(yùn) 算算 符符確確 定定 范范 圍圍BETW E EN A N D ,N O T BETW EEN A N D確確 定定 集集 合合IN ,N OT IN字字 符符 匹匹 配配LIKE ,N OT LIKE空空 值值IS N U LL , IS N O T N U LL多多 重重 條條 件件A N D ,ORWHERE子句常用的查詢條件子句常用的查詢條件在在WHERE子句的子句的中使用比較運(yùn)算符中使用比較
44、運(yùn)算符=,=,=,!= 或或 ,!,!, 邏輯運(yùn)算符邏輯運(yùn)算符NOT + 比較運(yùn)算符比較運(yùn)算符例例8 查詢所有年齡在查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; 使用謂詞使用謂詞 BETWEEN AND NOT BETWEEN AND 例例10 查詢年齡在查詢年齡在2023歲(包括歲(包括20歲和歲和23歲)之間的學(xué)歲)之間的學(xué)生的姓名、系別和年齡。生的姓名、系別和年齡。 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWE
45、EN 20 AND 23; 例例11 查詢年齡不在查詢年齡不在2023歲之間的學(xué)生姓名、系別和年歲之間的學(xué)生姓名、系別和年齡。齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23; 使用謂詞使用謂詞 IN , NOT IN :用逗號(hào)分隔的一組取值:用逗號(hào)分隔的一組取值例例12查詢信息系(查詢信息系(IS)、數(shù)學(xué)系()、數(shù)學(xué)系(MA)和計(jì))和計(jì) 算機(jī)科學(xué)系(算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,M
46、A,CS );例例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算 機(jī)科學(xué)系的學(xué)生的姓名和性別。機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS ); NOT LIKE ESCAPE :指定匹配模板:指定匹配模板 匹配模板:固定字符串或含通配符的字符串匹配模板:固定字符串或含通配符的字符串 當(dāng)匹配模板為固定字符串時(shí),當(dāng)匹配模板為固定字符串時(shí), 可以用可以用 = 運(yùn)算符取代運(yùn)算符取代 LIKE 謂詞謂詞 用用 != 或或 運(yùn)算符取代運(yùn)算符取代 NOT LIKE 謂詞謂詞%
47、 (百分號(hào)百分號(hào)) 代表任意長(zhǎng)度(長(zhǎng)度可以為代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串)的字符串例:例:a%b表示以表示以a開(kāi)頭,以開(kāi)頭,以b結(jié)尾的任意長(zhǎng)度的字符串。結(jié)尾的任意長(zhǎng)度的字符串。如如acb,addgb,ab 等都滿足該匹配串等都滿足該匹配串_ (下橫線下橫線) 代表任意單個(gè)字符代表任意單個(gè)字符例:例:a_b表示以表示以a開(kāi)頭,以開(kāi)頭,以b結(jié)尾的長(zhǎng)度為結(jié)尾的長(zhǎng)度為3的任意字符串。的任意字符串。如如acb,afb等都滿足該匹配串等都滿足該匹配串當(dāng)用戶要查詢的字符串本身就當(dāng)用戶要查詢的字符串本身就含有含有 % 或或 _ 時(shí),要使用時(shí),要使用ESCAPE 短語(yǔ)對(duì)短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義。通配符進(jìn)行轉(zhuǎn)
48、義。1) 匹配模板為固定字符串匹配模板為固定字符串 例例14 查詢學(xué)號(hào)為查詢學(xué)號(hào)為95001的學(xué)生的詳細(xì)情況。的學(xué)生的詳細(xì)情況。 SELECT * FROM Student WHERE Sno LIKE 95001;等價(jià)于:等價(jià)于: SELECT * FROM Student WHERE Sno = 95001;2) 匹配模板為含通配符的字符串匹配模板為含通配符的字符串例例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉劉%;匹配模板為含通配符的字符串(續(xù))
49、匹配模板為含通配符的字符串(續(xù))例例16 查詢姓查詢姓歐陽(yáng)歐陽(yáng)且全名為三個(gè)漢字的學(xué)生且全名為三個(gè)漢字的學(xué)生的姓名。的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽(yáng)歐陽(yáng)_;匹配模板為含通配符的字符串(續(xù))匹配模板為含通配符的字符串(續(xù))例例17 查詢名字中第查詢名字中第2個(gè)字為個(gè)字為陽(yáng)陽(yáng)字的學(xué)生的姓字的學(xué)生的姓名和學(xué)號(hào)。名和學(xué)號(hào)。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽(yáng)陽(yáng)%;匹配模板為含通配符的字符串(續(xù))匹配模板為含通配符的字符串(續(xù))例例18 查詢所有不姓劉的學(xué)生姓名。查詢所有不姓
50、劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉劉%; 使用謂詞使用謂詞 IS NULL 或或 IS NOT NULL “IS NULL” 不能用不能用 “= NULL” 代替代替例例21 某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi)有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和記錄,但沒(méi)有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL; 例例22 查所有有成績(jī)的學(xué)生學(xué)
51、號(hào)和課程號(hào)。查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;用邏輯運(yùn)算符用邏輯運(yùn)算符AND和和 OR來(lái)聯(lián)結(jié)多個(gè)查詢條件來(lái)聯(lián)結(jié)多個(gè)查詢條件 AND的優(yōu)先級(jí)高于的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)可以用括號(hào)改變優(yōu)先級(jí)可用來(lái)實(shí)現(xiàn)多種其他謂詞可用來(lái)實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 例例23 查詢計(jì)算機(jī)系年齡在查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;使用使用ORDER BY子句子句 可以按一個(gè)或多個(gè)屬性列排序可以按一個(gè)或多個(gè)屬性列排序 升序:升序:ASC;降序:;降序:DESC;缺省值為升序;缺省值為升序當(dāng)排序列含空值時(shí)當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示:排序
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CCS 039-2023煤炭聯(lián)運(yùn)集裝箱智能定量裝載系統(tǒng)技術(shù)條件
- T/GXAS 831-2024慢性穩(wěn)定性心力衰竭增強(qiáng)型體外反搏治療操作技術(shù)規(guī)范
- T/CMES 37007-2024陸上載人演藝巡游設(shè)備安全規(guī)范
- T/CPFIA 0005-2022含聚合態(tài)磷復(fù)合肥料
- T/SHDPA 001-2022產(chǎn)業(yè)園區(qū)專業(yè)服務(wù)體系建設(shè)規(guī)范
- 個(gè)人設(shè)備維修標(biāo)準(zhǔn)合同7篇
- 上海安全員證報(bào)名題庫(kù)及答案
- 代理人房屋出租合同3篇
- 耳朵常見(jiàn)疾病診療與防護(hù)
- 渠道設(shè)計(jì)流程七步法
- 2023年普通高等學(xué)校招生全國(guó)統(tǒng)一考試(全國(guó)甲卷)物理試題含答案
- 構(gòu)建素養(yǎng)導(dǎo)向的小學(xué)數(shù)學(xué)“套餐式”作業(yè)設(shè)計(jì)的實(shí)踐與研究
- 華佗古本五禽戲知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋安徽中醫(yī)藥大學(xué)
- 2025年管理類聯(lián)考《英語(yǔ)二》真題復(fù)盤卷(帶解析)
- 2025年嚴(yán)紀(jì)律轉(zhuǎn)作風(fēng)樹(shù)形象心得體會(huì)樣本(3篇)
- 六年級(jí)下冊(cè)科學(xué)復(fù)習(xí)心得分享會(huì)
- 嬰幼兒喂養(yǎng)的正確方法
- 水泥道路路面修復(fù)施工方案
- 2025年廣東省普通高中生物學(xué)業(yè)水平合格性考試綜合測(cè)評(píng)卷(二)(含解析)
- 心臟康復(fù)基層指南
- 高考數(shù)學(xué)專項(xiàng)復(fù)習(xí):極值點(diǎn)偏移與拐點(diǎn)偏移問(wèn)題【七大題型】解析版
評(píng)論
0/150
提交評(píng)論