版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、021世紀(jì)高職高專創(chuàng)新精品規(guī)劃教材 SQL Server 數(shù)據(jù)庫(kù)開(kāi)發(fā)經(jīng)典案例教程 1第1章 數(shù)據(jù)庫(kù)基礎(chǔ)2本章目標(biāo)數(shù)據(jù)庫(kù)存在的必要性和數(shù)據(jù)庫(kù)的發(fā)展SQL Server2008數(shù)據(jù)庫(kù)以及它所支持的操作系統(tǒng)平臺(tái)SQL Server2008的安裝方法服務(wù)器上的后臺(tái)服務(wù)SQL Server2008服務(wù)端組件和客戶端工具學(xué)會(huì)使用SSMS創(chuàng)建登錄 3數(shù)據(jù)庫(kù)存在的必要數(shù)據(jù)存在的必要性可以存儲(chǔ)大量的數(shù)據(jù),便于用戶進(jìn)行檢索和管理 可以保持?jǐn)?shù)據(jù)的一致性、完整性,降低數(shù)據(jù)冗余 實(shí)現(xiàn)應(yīng)用程序的數(shù)據(jù)共享和安全 利用數(shù)據(jù)庫(kù)可以智能的對(duì)數(shù)據(jù)進(jìn)行分析和統(tǒng)計(jì) 數(shù)據(jù)庫(kù)的發(fā)展史 第一代數(shù)據(jù)庫(kù)層次模型和網(wǎng)狀模型 各種DBMS 軟件都是
2、基于某種數(shù)據(jù)模型的 IBM 公司在1969 年推出了世界上第一個(gè)層次數(shù)據(jù)庫(kù)系統(tǒng)IMS 第二代數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù) 關(guān)系數(shù)據(jù)庫(kù)是建立在關(guān)系模型之上的數(shù)據(jù)庫(kù) 第三代數(shù)據(jù)庫(kù)面向?qū)ο髷?shù)據(jù)庫(kù) 處于發(fā)展階段,未來(lái)趨勢(shì)4數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)和信息數(shù)據(jù)中所包含的意義就是信息 數(shù)據(jù)庫(kù)保存有組織的數(shù)據(jù)的容器關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是基于關(guān)系模型建立的,由一系列二維表格組成,將數(shù)據(jù)分類存儲(chǔ)在多個(gè)二維表中,用關(guān)系(外鍵)來(lái)體現(xiàn)各個(gè)表之間的關(guān)系。 訂單 客戶 產(chǎn)品 產(chǎn)品數(shù)據(jù)庫(kù)表數(shù) 據(jù) 表存儲(chǔ)過(guò)程視 圖.5數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)的基本概念表、實(shí)體和記錄 實(shí)體是客觀存在的事物,比如:桌子,椅子,電腦行(記錄)6數(shù)
3、據(jù)庫(kù)的基本概念數(shù)據(jù)庫(kù)的基本概念數(shù)據(jù)冗余和數(shù)據(jù)完整性 數(shù)據(jù)冗余即相同的數(shù)據(jù)存在了多個(gè)地方 數(shù)據(jù)完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的有效性和相容性編號(hào)姓名年齡民族部門1王濤33漢族人事管理部2李梅27漢族人事管理部市場(chǎng)營(yíng)銷部回族27李梅2財(cái)務(wù)管理部漢族33王濤1部門民族年齡姓名編號(hào)7SQL Server2008簡(jiǎn)介SQL Server2008簡(jiǎn)介 SQLServer是微軟公司開(kāi)發(fā)的一款關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品,具有成本低,易上手,工具全等優(yōu)點(diǎn)。適用于大型或超大型數(shù)據(jù)庫(kù)服務(wù)器端。微軟的軟件的特點(diǎn)是版本分得細(xì),可適合各種使用者不同的需要 SQL Server2008的體系結(jié)構(gòu) SQL Server2008系統(tǒng)由4個(gè)部分組
4、成:數(shù)據(jù)庫(kù)引擎Analysis ServicesReporting ServicesIntegration Services數(shù)據(jù)庫(kù)引擎 數(shù)據(jù)庫(kù)引擎是Microsoft SQL Server2008系統(tǒng)的核心服務(wù),是存儲(chǔ)和處理關(guān)系(表格)類型的數(shù)據(jù)或XML文檔數(shù)據(jù)的服務(wù),負(fù)責(zé)完成數(shù)據(jù)的存儲(chǔ)、處理和安全管理。例如:創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、創(chuàng)建視圖、查詢數(shù)據(jù)和訪問(wèn)數(shù)據(jù)庫(kù)等操作,都是由數(shù)據(jù)庫(kù)引擎完成的 8SQL Server2008的安裝和版本 安裝:下載軟件并參照書(shū)步驟進(jìn)行安裝版本企業(yè)版(SQL Server2008 Enterprise Edition) 標(biāo)準(zhǔn)版 (SQL Server2008 Sta
5、ndard Edition) 工作組版(SQL Server2008 Workgroup Edition)開(kāi)發(fā)版(SQL Server2008 Developer Edition) 簡(jiǎn)易版(SQL Server2008 Express Edition) 9SQL Server2008后臺(tái)服務(wù)服務(wù)器上的后臺(tái)服務(wù) 在控制面板上選擇【管理工具】- 【服務(wù)】選項(xiàng)。SQL Server服務(wù) SQL Server Agent服務(wù) SQL Server Browser SQL Server Integration Services服務(wù) SQL Server Reporting Services服務(wù) 客戶端管
6、理工具 SQL Server Management StudioSQL Server Configuration Manager Reporting Services配置SQL Server錯(cuò)誤和使用情況報(bào)告 SQL Server Profiler 數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn)10SQL Server2008的工作模式客戶端應(yīng)用程序SQL Server服務(wù)器批處理語(yǔ)句:語(yǔ)句1語(yǔ)句2GOSQL Server2008支持C/S工作模式,C/S模式即客戶機(jī)/服務(wù)器(Client/Server)模式的簡(jiǎn)稱,在該種模式下,服務(wù)器通常是在硬件配置和性能比較高、安裝了服務(wù)器軟件的計(jì)算機(jī),客戶機(jī)就是安裝了客戶端軟件的一
7、般的計(jì)算機(jī) 11連接與斷開(kāi)數(shù)據(jù)庫(kù)服務(wù)器連接與斷開(kāi)數(shù)據(jù)庫(kù)服務(wù)器身份驗(yàn)證:連接之前,需要選擇身份驗(yàn)證模式,系統(tǒng)提供了兩種身份驗(yàn)證模式:Windows身份驗(yàn)證:用當(dāng)前登錄操作系統(tǒng)的身份去登錄.SQL Server身份驗(yàn)證:用Windows加SQL Server的混合模式進(jìn)行驗(yàn)證,需要用合法的SQL Server登錄用戶去訪問(wèn)默認(rèn)系統(tǒng)在安裝以后會(huì)自動(dòng)產(chǎn)生一個(gè)sa的登錄用戶,具有最高權(quán)限。斷開(kāi)數(shù)據(jù)庫(kù)服務(wù)器 12啟動(dòng)和停止SQL Server服務(wù)啟動(dòng)、停止、暫停和重新啟動(dòng)SQL Server服務(wù) 使用SQL Server配置管理器用SQL Server Management Studio (SSMS) 使
8、用操作系統(tǒng)的服務(wù)管理功能使用命令提示符啟動(dòng)SQL Server默認(rèn)實(shí)例: net start mssqlserver停止SQL Server默認(rèn)實(shí)例: net stop mssqlserver 13SQL Server Management Studio(SSMS)介紹 SSMS簡(jiǎn)介 SQL Server是作為單獨(dú)的Windows進(jìn)程在基于Windows的計(jì)算機(jī)上運(yùn)行的,它可以運(yùn)行在獨(dú)立的桌面計(jì)算機(jī)上,也可以運(yùn)行在服務(wù)器或者網(wǎng)絡(luò)計(jì)算機(jī)上 .SQL Server作為服務(wù)運(yùn)行,該服務(wù)由Windows自身進(jìn)行監(jiān)控 SSMS中的一個(gè)重要的工具就是是查詢編輯器(query editor )SQL Ser
9、ver Management Studio(SSMS)的使用 14創(chuàng)建數(shù)據(jù)庫(kù)登錄賬戶 創(chuàng)建數(shù)據(jù)庫(kù)登錄賬戶在實(shí)際應(yīng)用中,經(jīng)常要根據(jù)不同的用戶設(shè)置不同的訪問(wèn)權(quán)限來(lái)限制對(duì)數(shù)據(jù)庫(kù)的操作 15總結(jié)數(shù)據(jù)庫(kù)存在的必要性和數(shù)據(jù)庫(kù)的發(fā)展使用數(shù)據(jù)庫(kù)可以安全,高效的實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和管理數(shù)據(jù)和信息的概念SQL Server2008數(shù)據(jù)庫(kù)只適合Windows平臺(tái)SQL Server2008的安裝方法服務(wù)器上的后臺(tái)服務(wù)SQL Server2008服務(wù)端組件和客戶端工具創(chuàng)建登錄的方法16使用數(shù)據(jù)庫(kù)可以安全,高效的實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和管理數(shù)據(jù)和信息數(shù)據(jù)庫(kù)文件包括:主數(shù)據(jù)文件,次要數(shù)據(jù)文件和日志文件,每個(gè)數(shù)據(jù)庫(kù)至少要包含一個(gè)數(shù)據(jù)文
10、件和日志文件文件組是邏輯上對(duì)數(shù)據(jù)文件進(jìn)行管理的一種方式通過(guò)分離數(shù)據(jù)庫(kù)可以將數(shù)據(jù)庫(kù)分離成物理的文件附加數(shù)據(jù)庫(kù)可以將物理文件恢復(fù)成數(shù)據(jù)庫(kù)第2章 數(shù)據(jù)庫(kù)管理17本章目標(biāo)學(xué)會(huì)創(chuàng)建和維護(hù)數(shù)據(jù)庫(kù)的方法掌握數(shù)據(jù)庫(kù)的組成及數(shù)據(jù)文件的含義掌握數(shù)據(jù)庫(kù)的分離和附加方法學(xué)會(huì)使用幫助文檔18數(shù)據(jù)庫(kù)組成19數(shù)據(jù)文件(主要/次要)和日志文件數(shù)據(jù)文件包含數(shù)據(jù)和對(duì)象:如表、索引、視圖等日志文件包含恢復(fù)數(shù)據(jù)庫(kù)中的所有事務(wù)所需的信息數(shù)據(jù)庫(kù)主數(shù)據(jù)文件(.mdf)次要數(shù)據(jù)文件(.ndf)日志文件(.ldf)數(shù)據(jù)庫(kù)文件和文件組簡(jiǎn)介主數(shù)據(jù)文件包含數(shù)據(jù)庫(kù)的啟動(dòng)信息,用戶數(shù)據(jù)和對(duì)象存儲(chǔ)在此文件中,每個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)主數(shù)據(jù)文件,建議擴(kuò)展名是
11、.mdf次要數(shù)據(jù)文件次要數(shù)據(jù)文件是可選的,由用戶定義并存儲(chǔ)用戶數(shù)據(jù)。建議擴(kuò)展名.ndf事務(wù)日志文件保存用于恢復(fù)數(shù)據(jù)庫(kù)的日志信息。每個(gè)數(shù)據(jù)庫(kù)必須至少有一個(gè)日志文件,建議擴(kuò)展名.ldf20數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)21mastertempdbmsdbStudentsDBBookShopDB用戶數(shù)據(jù)庫(kù)model4個(gè)系統(tǒng)數(shù)據(jù)庫(kù)用戶自己創(chuàng)建系統(tǒng)數(shù)據(jù)庫(kù)4個(gè)系統(tǒng)數(shù)據(jù)庫(kù)Master它存儲(chǔ) SQL Server 系統(tǒng)的所有系統(tǒng)級(jí)信息 ,它包括:登錄帳戶、鏈接服務(wù)器和系統(tǒng)配置設(shè)置。所有其他數(shù)據(jù)庫(kù)的存在、數(shù)據(jù)庫(kù)文件的位置SQL Server的初始化信息 model在 SQL Server 實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫(kù)的模板 Msd
12、b 由 SQL Server 代理用來(lái)計(jì)劃警報(bào)和作業(yè) tempdb 是連接到 SQL Server 實(shí)例的所有用戶都可用的全局資源,它保存所有臨時(shí)表和臨時(shí)存儲(chǔ)過(guò)程 22文件組BookShopDB的物理文件結(jié)構(gòu)23BookShopDB.ldfE:日志文件 BookInfo Publisher UserInfo 主文件組BookShopDB.mdfC:用戶定義文件組Book1.ndf Book2.ndfD:sys sys sysusers sysobjects 24數(shù)據(jù)庫(kù)的建立-可視化方式數(shù)據(jù)庫(kù)的建立-使用代碼創(chuàng)建代碼創(chuàng)建數(shù)據(jù)庫(kù)25數(shù)據(jù)庫(kù)設(shè)置數(shù)據(jù)庫(kù)的設(shè)置數(shù)據(jù)庫(kù)右鍵-屬性 -選項(xiàng)-只讀 -收縮26數(shù)
13、據(jù)庫(kù)的修改修改數(shù)據(jù)庫(kù):可以在【文件】選項(xiàng)頁(yè)通過(guò)修改數(shù)據(jù)文件修改數(shù)據(jù)庫(kù) 27數(shù)據(jù)庫(kù)刪除可視化方式 代碼方式Drop database test28分離數(shù)據(jù)庫(kù)分離數(shù)據(jù)庫(kù) 分離數(shù)據(jù)庫(kù)是指將數(shù)據(jù)庫(kù)從 SQL Server 實(shí)例中刪除29附加數(shù)據(jù)庫(kù)附加數(shù)據(jù)庫(kù)附加是分離的反操作。就可以使用分離后的數(shù)據(jù)文件和日志文件將數(shù)據(jù)庫(kù)附加到任何 SQL Server 實(shí)例,包括分離該數(shù)據(jù)庫(kù)的服務(wù)器 30總結(jié)數(shù)據(jù)庫(kù)文件包括:主數(shù)據(jù)文件,次要數(shù)據(jù)文件和日志文件,每個(gè)數(shù)據(jù)庫(kù)至少要包含一個(gè)數(shù)據(jù)文件和日志文件文件組是邏輯上對(duì)數(shù)據(jù)文件進(jìn)行管理的一種方式創(chuàng)建數(shù)據(jù)庫(kù)可視化方式創(chuàng)建代碼方式創(chuàng)建維護(hù)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的修改和刪除通過(guò)分離數(shù)據(jù)庫(kù)
14、可以將數(shù)據(jù)庫(kù)分離成物理的文件附加數(shù)據(jù)庫(kù)可以將物理文件恢復(fù)成數(shù)據(jù)庫(kù)使用幫助文檔31第3章-1 SQLServer表管理32本章目標(biāo)掌握數(shù)據(jù)表、數(shù)據(jù)完整性、主鍵和外鍵的基本概念掌握SQLServer數(shù)據(jù)類型創(chuàng)建表的時(shí)候要設(shè)定字段名,選取合適的數(shù)據(jù)類型和約束如果要保證某個(gè)列唯一并且自動(dòng)增長(zhǎng),設(shè)定IDENTITY約束主鍵是保證實(shí)體完整性的約束,建議每個(gè)表有一個(gè)主鍵外鍵保證表之間的引用完整性,從表中的數(shù)據(jù)依賴于主表在建表時(shí)設(shè)置主鍵約束外鍵約束檢查約束默認(rèn)約束空值約束標(biāo)識(shí)列 33數(shù)據(jù)表基本概念表書(shū)數(shù)據(jù)庫(kù)中最重要的數(shù)據(jù)對(duì)象,數(shù)據(jù)存儲(chǔ)在表里數(shù)據(jù)表由行和列組成34數(shù)據(jù)完整性數(shù)據(jù)完整性實(shí)體完整性將行定義為特定表的
15、唯一實(shí)體。即表中的每一行數(shù)據(jù)都代表一個(gè)不同的實(shí)體,不能存在相同的數(shù)據(jù)行 域完整性域完整性指特定列項(xiàng)的有效性 引用完整性用來(lái)限制兩個(gè)有關(guān)聯(lián)關(guān)系的表之間的數(shù)據(jù) 35主鍵和外鍵 主鍵表通常具有包含唯一標(biāo)識(shí)表中每一行值的一個(gè)或一多個(gè)字段 特點(diǎn)一個(gè)表只能有一個(gè)主鍵主鍵中的列不能為空如果一個(gè)表的主鍵由多個(gè)列組成,該主鍵也叫“組合主鍵”外鍵外鍵約束保證了數(shù)據(jù)庫(kù)中兩個(gè)表中數(shù)據(jù)的引用完整性 將一個(gè)表的一列(或列組合)定義為引用其他表的主鍵,則引用表中的這個(gè)列(或列組合)就稱為外鍵 36主鍵和外鍵37主鍵外鍵數(shù)據(jù)表建立數(shù)據(jù)表,建表時(shí)需考慮:字段的名稱數(shù)據(jù)類型是否允許為Null是否自動(dòng)增長(zhǎng)等 38數(shù)據(jù)類型Sqlse
16、rver有以下數(shù)據(jù)類型數(shù)據(jù)類型類別 具體類型 精確數(shù)據(jù) bigint,decimal,int,numeric,smallint,money,tinyint,smallmoney,bit 近似數(shù)字 float ,real字符串 char ,varchar, text Unicode字符串 nchar , nvarchar, ntext 二進(jìn)制字符串 binary ,image, varbinary 日期類型 datetime ,smalldatetime 其他類型 Uniqueidentifier, xml, table等 39創(chuàng)建表創(chuàng)建表的實(shí)質(zhì)就是定義表結(jié)構(gòu)以及約束等屬性。SQL Server
17、2008種提供了兩種方式創(chuàng)建表。一種是通過(guò)SQL Server Management Studio(SSMS)一種是通過(guò)T-SQL代碼。本書(shū)重點(diǎn)介紹使用T-SQL代碼來(lái)創(chuàng)建表 40T-SQL代碼建表通過(guò)執(zhí)行Transact-SQL的CREATE TABLE 語(yǔ)句可以創(chuàng)建表,建表的語(yǔ)法如下:例如: CREATE TABLE mytable ( col1 char(10) primary key, col2 int not null )41CREATE TABLE 表名( 字段1 數(shù)據(jù)類型 列的特征, 字段2 數(shù)據(jù)類型 列的特征, 。 )建表【示例3-1】 :建立用戶表UserInfo, 建表時(shí)設(shè)
18、置主鍵并設(shè)置相應(yīng)字段的not null(非空)屬性 42USE BookShopDb -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為BookShopDb GO CREATE TABLE UserInfo -創(chuàng)建用戶表( UserID char(3) PRIMARY KEY, -UerID為主鍵 UserName char(10) not null, Sex char(2) not null, Age int , hiredate datetime, tele char(15), Addr varchar(100)GO 建表表的IDENTITY 屬性標(biāo)識(shí)列字段的數(shù)據(jù)類型只能是decimal,int,numeric,sma
19、llint,bitint,tinyint每個(gè)表最多有一列具有IDENTITY屬性,且該列不能為空、不允許有默認(rèn)值IDENTITY屬性的語(yǔ)法: IDENTITY(seed,increment),seed稱為種子,表示裝載到表中第一行使用的值;如IDENTITY(1,1),表示該列值從1開(kāi)始,每條記錄增1.IDENTITY屬性與CREATE TABLE和ALTER TABLE一起使用 43建表時(shí)使用標(biāo)識(shí)列【示例3-2】建立圖書(shū)類別表Category 44USE BookShopDb -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為BookShopDb GOCREATE TABLE Publisher( PublisherID
20、 int IDENTITY(1,1) PRIMARY KEY, -自動(dòng)編號(hào)(標(biāo)識(shí)列) PublisherName varchar(50) not null -出版社名稱,必須輸入)GO 建表時(shí)使用約束45USE BookShopDb -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為BookShopDbGO CREATE TABLE BookInfo /*創(chuàng)建BookInfo數(shù)據(jù)表*/( BookID char(15) PRIMARY KEY, -書(shū)號(hào) ,主鍵 BookName varchar(100) not null, -書(shū)名 Author varchar(50) not null, -作者 ISBN char(13)
21、 , -ISBN,null可以省略 PublishDate datetime not null, -出版日期 PublisherID int not null REFERENCES Publisher(PublisherID),-外鍵 CategoryID int not null REFERENCES Category(CategoryID), -外鍵 Price money , -價(jià)格 Content text -介紹)GO 建表時(shí)使用約束46USE BookShopDb -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為BookShopDbGO Drop table userInfoCREATE TABLE User
22、Info -創(chuàng)建用戶表( UserID char(3) PRIMARY KEY CHECK(UserID LIKE 0-90-90-9), UserName char(10) UNIQUE, -用戶名,唯一約束 Sex char(2) CHECK(Sex in (男,女), -性別,Check約束 Age int not null, -年齡,非空約束 hiredate datetime , -入職日期 tele char(15), -電話 Addr varchar(100) DEFAULT 廣東廣州 -地址,默認(rèn)約束 )GO 【示例3-6】重建UserInfo表,演示在建表時(shí)如何設(shè)定約束建表時(shí)
23、使用約束47USE BookShopDb -將當(dāng)前數(shù)據(jù)庫(kù)設(shè)置為BookShopDb,GO CREATE TABLE SalesMaster /*創(chuàng)建SalesMaster銷售主表*/(SalesMasterID int identity primary key, -銷售id,自動(dòng)增長(zhǎng),主鍵 SalesDate datetime not null, -銷售日期 UserID char(3) not null), CONSTRAINT fk_UserID FOREIGN KEY (UserID) REFERENCES UserInfo(UserID) ON DELETE CASCADE 【示例3-
24、7】建立SalesMaster銷售主表,通過(guò)設(shè)定外鍵與UserInfo表之間建立聯(lián)系總結(jié)掌握數(shù)據(jù)表的概念和含義數(shù)據(jù)完整性、主鍵和外鍵的基本概念主鍵是保證實(shí)體完整性的約束,建議每個(gè)表有一個(gè)主鍵外鍵保證表之間的引用完整性,從表中的數(shù)據(jù)依賴于主表創(chuàng)建數(shù)據(jù)表創(chuàng)建表的時(shí)候要設(shè)定字段名,選取合適的數(shù)據(jù)類型和約束如果要保證某個(gè)列唯一并且自動(dòng)增長(zhǎng),設(shè)定IDENTITY約束掌握SQLServer數(shù)據(jù)類型,三大類:數(shù)字、字符和日期在建表時(shí)設(shè)置主鍵約束外鍵約束檢查約束默認(rèn)約束空值約束標(biāo)識(shí)列 48第3章-2 SQLServer表管理49本章目標(biāo)約束的維護(hù)修改表添加約束刪除約束建立數(shù)據(jù)庫(kù)關(guān)系圖 以圖形方式顯示數(shù)據(jù)庫(kù)表之
25、間的關(guān)系SQL Server中的特殊表類型 已分區(qū)表臨時(shí)表系統(tǒng)表修改和刪除表修改表結(jié)構(gòu)、刪除表50約束的維護(hù)添加約束語(yǔ)法51ALTER TABLE 表名ADD CONSTRAINT 約束名約束類型具體的約束說(shuō)明 USE BookShopDb -選擇數(shù)據(jù)庫(kù),以下示例從略GOALTER TABLE UserInfo ADD CONSTRAINT pk_ UserID PRIMARY KEY(UserID)添加主鍵約束添加外鍵約束ALTER TABLE SalesDetails ADD CONSTRAINT fk_BookID FOREIGN KEY(BookID) REFERENCES BookI
26、nfo(BookID) 約束的維護(hù)刪除約束語(yǔ)法52ALTER TABLE 表名DROP CONSTRAINT 約束名 ALTER TABLE UserInfo DROP CONSTRAINT pk_ UserID 數(shù)據(jù)庫(kù)關(guān)系圖 已建立了數(shù)據(jù)庫(kù)中各個(gè)數(shù)據(jù)表之間的關(guān)系,可通過(guò)SQL Server提供的數(shù)據(jù)庫(kù)關(guān)系圖,即可以圖表的形式顯示各個(gè)數(shù)據(jù)表之間的關(guān)系如果表之間的關(guān)系沒(méi)有建立,也可在通過(guò)數(shù)據(jù)庫(kù)關(guān)系圖建立數(shù)據(jù)表之間的關(guān)系 53數(shù)據(jù)庫(kù)關(guān)系圖54SQL Server中的特殊表類型 分區(qū)表當(dāng)表數(shù)據(jù)非常大時(shí)可以將一個(gè)表水平劃分為多個(gè)表單獨(dú)存儲(chǔ),并且可以存儲(chǔ)在多個(gè)不同的物理文件中。這樣的表就是分區(qū)表 臨時(shí)表
27、在操作過(guò)程中系統(tǒng)需要維護(hù)一些臨時(shí)數(shù)據(jù),比如果用戶需要將查詢結(jié)果排序,則會(huì)創(chuàng)建臨時(shí)表并在臨時(shí)表中將數(shù)據(jù)排序后返回給用戶 系統(tǒng)表SQL Server 將定義服務(wù)器配置及其所有表的數(shù)據(jù)存儲(chǔ)在一組特殊的表中,這組表稱為系統(tǒng)表。任何用戶都不應(yīng)該直接更改系統(tǒng)表 55修改表結(jié)構(gòu)修改表結(jié)構(gòu)使用ALTER TABLE語(yǔ)句修改表結(jié)構(gòu)增加列刪除列修改列的數(shù)據(jù)類型改變列的長(zhǎng)度等在表沒(méi)有數(shù)據(jù)的情況下,可以對(duì)列進(jìn)行任意修改或刪除 56修改表結(jié)構(gòu)-增加列和修改列57USE BookShopDbGOALTER TABLE UserInfo ADD email char(20) GO 增加列 給UserInfo表增加列emai
28、l,字符類型長(zhǎng)度是20,非空修改列USE BookShopDbGOALTER TABLE UserInfo ALTER COLUMN addr varchar(150) not null增加UserInfo表的字段addr 長(zhǎng)度,將其增加到150,類型不變 修改表結(jié)構(gòu)-刪除列58刪除列刪除UserInfo表 email列USE BookShopDbGOALTER TABLE UserInfo DROP COLUMN emailGO刪除表刪除表 DROP TABLE UserInfo如果刪除的表和其他表有關(guān)聯(lián)關(guān)系,必須先刪除子表,然后再刪除主表。否則系統(tǒng)會(huì)彈出錯(cuò)誤 59總結(jié)約束的維護(hù)修改表添加約
29、束Alter table add constraint 約束名稱 約束類型刪除約束 alter table drop constraint 約束名稱建立數(shù)據(jù)庫(kù)關(guān)系圖 以圖形方式顯示數(shù)據(jù)庫(kù)表之間的關(guān)系SQL Server中的特殊表類型 已分區(qū)表臨時(shí)表系統(tǒng)表修改和刪除表修改表結(jié)構(gòu):修改添加字段Alter table 表名 add 字段名稱 數(shù)據(jù)類型修改表修改字段 alter table 表名 alter column 字段名稱 數(shù)據(jù)類型修改表刪除字段 alter table 表名 drop 字段名稱刪除表Drop table 表名 60第4章 SQLServer數(shù)據(jù)管理61本章目標(biāo)了解SQL和T-
30、SQLT-SQL實(shí)現(xiàn)數(shù)據(jù)的增加、修改、刪除數(shù)據(jù)操作62SQL和T-SQL SQL(Structure Query Language,結(jié)構(gòu)化查詢語(yǔ)言) 主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通。用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)系統(tǒng) SQL語(yǔ)言主要包括 數(shù)據(jù)操縱語(yǔ)言(DML)用來(lái)操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),包括插入數(shù)據(jù)(INSERT)、修改數(shù)據(jù)(UPDATE)、刪除數(shù)據(jù)(DELETE)、查詢數(shù)據(jù)(SELECT)等操作 數(shù)據(jù)定義語(yǔ)言(DDL)用于創(chuàng)建或修改數(shù)據(jù)庫(kù)里的對(duì)象,如創(chuàng)建Create table、修改Alter table 、刪除Drop table等 數(shù)據(jù)控制語(yǔ)言(DCL) 用來(lái)控制用戶對(duì)
31、數(shù)據(jù)庫(kù)數(shù)據(jù)的訪問(wèn)權(quán)限,如:Grant、Revoke等63T-SQL介紹 T-SQLT-SQL(Transact-SQL)是SQL Server的核心 所有與SQL Server實(shí)例通信的應(yīng)用程序,都是通過(guò)發(fā)送T-SQL語(yǔ)句到服務(wù)器來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作 T-SQL是對(duì)標(biāo)準(zhǔn)SQL的擴(kuò)展 是在標(biāo)準(zhǔn)SQL的基礎(chǔ)上增加了變量定義、函數(shù)、流程控制等編程要素 語(yǔ)法約定 語(yǔ)句不區(qū)分大小寫(xiě) 64插入數(shù)據(jù) 65語(yǔ)法格式 INSERT INTO 表名(列名,n) VALUES (值,n) 【例4-1】 向BookShopDb 數(shù)據(jù)庫(kù)的UserInfo表中插入所有列數(shù)據(jù)USE BookShopDb GO -批處理結(jié)束
32、標(biāo)志,表示執(zhí)行 INSERT INTO UserInfo(UserID,UserName,Sex,Age,hiredate,tele,Addr) VALUES(001,王琳琳,女,26,2005-1-24,07313677867,湖南長(zhǎng)沙)INSERT INTO UserInfo VALUES(002,張家輝,男,27,2004-3-5,02034657654,廣東廣州)INSERT INTO UserInfo(UserID,UserName) VALUES(003,張?zhí)锾?插入部分列時(shí)列名不能省略 插入所有列時(shí)列名可省略 插入數(shù)據(jù)66 【例4-3】向UserInfo表插入數(shù)據(jù),嘗試輸入性別為
33、其他內(nèi)容 INSERT INTO UserInfo(UserID,UserName,Sex,Age,hiredate,tele,Addr)VALUES(004,周晨陽(yáng),中,30,2003-4-2,02734652345,湖北宜昌)標(biāo)識(shí)列字段數(shù)據(jù)的插入 【例4-5】向Category表插入數(shù)據(jù), Category帶有標(biāo)識(shí)列CategoryID INSERT INTO Category(CategoryName) VALUES(計(jì)算機(jī)基礎(chǔ)理論) 使用SELECT INTO 語(yǔ)句拷貝表SELECT INTO 可將幾個(gè)表或視圖中的數(shù)據(jù)組合成一個(gè)表 查看表數(shù)據(jù):select * from copyUse
34、rInfo若只拷貝表結(jié)構(gòu): SELECT * INTO NewUserInfo FROM UserInfo where 1=2 67【例4-9】 使用SELECT . INTO拷貝UserInfo表年齡大于等于30的數(shù)據(jù) 生成一新表CopyUserInfoSELECT * INTO CopyUserInfo FROM UserInfo WHERE Age=30 更新數(shù)據(jù)語(yǔ)法格式68UPDATE 表名 SET WHERE 更新條件【例4-10】修改UserInfo表數(shù)據(jù),把UserID為007的用戶的住址改為甘肅酒泉UPDATE UserInfo SET Addr =甘肅酒泉 WHERE Use
35、rID =007修改數(shù)據(jù)69 【例4-11】如圖完善UserInfo表數(shù)據(jù),把用戶號(hào)003用戶的年齡、參加工作日期分別修改為33,2004-8-30 UPDATE UserInfo SET Age =33, hiredate =2004-8-30 WHERE UserID =003【例4-12】把用戶001的參加工作日期加1天,地址改為湖南湘潭UPDATE UserInfoSET hiredate=hiredate+1, Addr=湖南湘潭WHERE UserID =001 注意:修改數(shù)據(jù)如果只修改一條記錄,一般都按主鍵字段修改。刪除數(shù)據(jù) 語(yǔ)法:70DELETE FROM 表名 WHERE 條
36、件 【例4-14】刪除參加工作日期在2004-1-1之后的用戶信息DELETE FROM UserInfo WHERE hiredate2004-1-1 【例4-15】 刪除BookInfo表中書(shū)號(hào)是B0001的記錄 DELETE FROM BookInfo WHERE BookID=B0001 因?yàn)橐獎(jiǎng)h除BookInfo表的書(shū)號(hào)是B0001的記錄被SalesDetails表引用,所以必須先刪除SalesDetails表的相應(yīng)記錄,才能刪除BookInfo表的記錄 使用TRUNCATE TABLE語(yǔ)句 語(yǔ)法:71 TRUNCATE TABLE 表名【例4-16】 刪除CopyUserInfo表
37、的所有數(shù)據(jù) TRUNCATE TABLE CopyUserInfo總結(jié)增加單行數(shù)據(jù)用INSERT INTOVALUES語(yǔ)句修改數(shù)據(jù)用UPDATE 表名 SET 字段名=新值 WHERE 條件。語(yǔ)句刪除數(shù)據(jù)用DELETE FROM WHERE 語(yǔ)句快速刪除整個(gè)表中的數(shù)據(jù)用TRUNCATE TABLE 語(yǔ)句 TRUNCATE TABLE 表名72第5章 簡(jiǎn)單查詢和函數(shù)73本章目標(biāo)掌握查詢的基本語(yǔ)法掌握各種函數(shù)的應(yīng)用字符串函數(shù)日期函數(shù)數(shù)字函數(shù)掌握函數(shù)在查詢中的應(yīng)用74查詢75查詢請(qǐng)求查詢結(jié)果集結(jié)果集如何查詢查詢性別“男”的所有用戶76查詢 語(yǔ)法:77 SELECT FROM WHERE ORDER
38、BY ASC或DESC查詢數(shù)據(jù)返回所有的行和列查詢表中所有字段時(shí),可以用星號(hào)*來(lái)代替字段名返回部分行和列篩選部分字段,必須明確指定字段名【例5-2】查詢BookInfo表的BookName(書(shū)名),作者(Author),出版日期(publishDate),類別ID(CategoryID),價(jià)格(Price)等字段的數(shù)據(jù) 78 SELECT * FROM BookInfo SELECT BookName,Author,publishDate,CategoryID FROM BookInfo查詢-使用別名79SELECT bookName as 書(shū)名,Author as 作者,publishDat
39、e as 出版日期,CategoryID as 類別,price as 價(jià)格FROM bookInfo 1,用as關(guān)鍵字 【例5-3】 用中文名稱來(lái)顯示書(shū)的信息,3種不同使用別名方法 2,用空格3,用=SELECT bookName 書(shū)名,Author 作者,publishDate 出版日期,CategoryID 類別,price 價(jià)格FROM bookInfoSELECT 書(shū)名= bookName,作者= Author, 出版日期=publishDate,類別=CategoryID , 價(jià)格=price FROM bookInfo查詢-使用where使用WHERE子句篩選滿足條件的數(shù)據(jù)行 8
40、0【例5-4】查詢2007年以后出版的所有書(shū)籍的書(shū)名、作者、出版日期和價(jià)格SELECT bookName,author,publishDate,price FROM BookInfo WHERE PublishDate2007-01-01函數(shù)T-SQL函數(shù)表示可以接受零個(gè)、一個(gè)或多個(gè)輸入值,并返回一個(gè)標(biāo)量值或一組值81 表5-1 常用T-SQL函數(shù)函數(shù)類別 說(shuō)明 字符串函數(shù) 對(duì)字符串(char 或 varchar)輸入值執(zhí)行運(yùn)算,然后返回一個(gè)字符串或數(shù)字值。日期和時(shí)間函數(shù) 對(duì)日期和時(shí)間輸入值執(zhí)行運(yùn)算,然后返回字符串、數(shù)字或日期和時(shí)間值。數(shù)學(xué)函數(shù) 基于作為函數(shù)的參數(shù)提供的輸入值執(zhí)行運(yùn)算,然后返回
41、數(shù)字值。系統(tǒng)函數(shù)返回系統(tǒng)配置信息、返回有關(guān)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的信息、執(zhí)行運(yùn)算后返回 SQL Server 實(shí)例中有關(guān)值、對(duì)象和設(shè)置的信息,返回有關(guān)用戶和角色的信息等。字符串函數(shù) 字符串函數(shù) 字符串函數(shù)用于對(duì)字符串?dāng)?shù)據(jù)進(jìn)行處理,如字符串截取、查找子串、計(jì)算字符串長(zhǎng)度等,并返回一個(gè)字符串或數(shù)值 82字符串函數(shù)83字符串函數(shù)的使用84 SELECT bookName,Author,PATINDEX(%數(shù)據(jù)庫(kù)%,bookName) POSFROM BookInfo WHERE PATINDEX(%數(shù)據(jù)庫(kù)%,bookName)0【例5-8】使用日期函數(shù)獲取今天的日期時(shí)間及明天的日期和時(shí)間【例5-7】使用
42、PATINDEX函數(shù)查詢BookInfo表中包含數(shù)據(jù)庫(kù)的書(shū)名和作者以及數(shù)據(jù)庫(kù)出現(xiàn)的位置 SELECT GETDATE() 今天, DATEADD(DAY,1,GETDATE() 明天日期和時(shí)間函數(shù)85系統(tǒng)函數(shù)86總結(jié)掌握查詢的基本語(yǔ)法從表中篩選記錄的時(shí)候用SELECT語(yǔ)句通過(guò)給列起別名的方式簡(jiǎn)化代碼掌握各種函數(shù)的應(yīng)用字符串函數(shù)日期函數(shù)數(shù)字函數(shù)掌握函數(shù)在查詢中的應(yīng)用87第6章 檢索數(shù)據(jù)88本章目標(biāo)掌握WHERE子句中運(yùn)算符的使用掌握使用Top關(guān)鍵字和使用Distinct消除重復(fù)行掌握模糊查詢Like,between,in的用法89在WHERE子句中使用運(yùn)算符 SELECT通過(guò)WHERE子句構(gòu)造記
43、錄的篩選條件,從而選擇出滿足條件的記錄 記錄的篩選條件:運(yùn)算符 函數(shù)使用 IS NULL條件90運(yùn)算符使用比較運(yùn)算符和邏輯運(yùn)算符 91【例6-1】 查詢BookInfo表中價(jià)格低于的書(shū)名、作者和價(jià)格 SELECT BookName,Author,Price FROM BookInfo WHERE Price 40【例6-2】 查詢BookInfo表中價(jià)格在30到80之間(包括邊界) 的書(shū)名、價(jià)格和說(shuō)明 SELECT BookName,price,Content FROM BookInfo WHERE Price =30 使用 IS NULL條件 使用 IS NULL條件92【例6-3】 查詢U
44、serInfo中電話(tele)為空的用戶信息 SELECT UserID,UserName,Sex,Age,hiredate,tele,Addr FROM UserInfo WHERE tele is null 查詢中使用函數(shù)93【例6-5】 在BookInfo表中,查詢書(shū)名長(zhǎng)度小于10的圖書(shū)書(shū)名、作者和書(shū)名長(zhǎng)度 SELECT bookname,Author ,LEN(bookName) FROM BookInfo WHERE LEN(bookname)10設(shè)置結(jié)果集格式 使用ORDER BY排序數(shù)據(jù) 94【例6-6】 在BookInfo表中,按出版日期的先后順序,查詢價(jià)格低于45的圖書(shū)的書(shū)
45、號(hào)、書(shū)名、價(jià)格、作者和出版日期。 SELECT bookid,bookName,Price,Author,PublishDate FROM BookInfo WHERE Price b.PriceWHERE b.BookID =B0002總結(jié)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)使用SQL內(nèi)置的聚合函數(shù)MaxMinSumAvgCount對(duì)數(shù)據(jù)進(jìn)行分組用GROUP BY,分組條件篩選用Having查詢的數(shù)據(jù)來(lái)自于多個(gè)表用關(guān)聯(lián)查詢關(guān)聯(lián)查詢連接內(nèi)聯(lián)接內(nèi)聯(lián)接篩選多表中完全匹配的行外部聯(lián)接左外聯(lián)接以左表為主篩選數(shù)據(jù)右外聯(lián)接以右表為主篩選數(shù)據(jù)自聯(lián)接自聯(lián)接將表自身通過(guò)別名關(guān)聯(lián)125第8章 子查詢126本章目標(biāo)掌握子查詢的使用子查詢
46、返回單一值子查詢返回值列表子查詢的存在性測(cè)試EXISTS掌握集合運(yùn)算并集(Union)交集(Intersection)減(Except)127子查詢問(wèn)題:顯示價(jià)格最高書(shū)籍的書(shū)號(hào)、書(shū)名和價(jià)格 解決方法:查詢出最高價(jià)格select MAX(price) from BookInfo以價(jià)格為條件查詢出書(shū)號(hào)、書(shū)名和價(jià)格select bookid,bookname,price from BookInfo where Price=(select MAX(price) from BookInfo) 128外部查詢內(nèi)部查詢子查詢子查詢就是一個(gè)嵌套在 SELECT、INSERT、UPDATE 或 DELETE 語(yǔ)
47、句或其他子查詢中的查詢,子查詢也稱為內(nèi)部查詢,而包含子查詢的語(yǔ)句也稱為外部查詢 子查詢的SELECT 查詢總是使用圓括號(hào)括起來(lái)?;菊Z(yǔ)法:129SELECT 列名.FROM 表名WHERE 條件 =(SELECT 列名 FROM 表名 WHERE 條件)返回單個(gè)值的子查詢 當(dāng)子查詢返回單個(gè)值時(shí),外部查詢條件和子查詢之間使用比較運(yùn)算符(、=、(SELECT AVG(price) FROM BookInfo) 比較運(yùn)算符返回單個(gè)值的子查詢查詢書(shū)名為“JavaWeb開(kāi)發(fā)技術(shù)詳解”的出版社ID和出版年限 SELECT publisherID FROM BookInfo WHERE BookName =
48、JavaWeb開(kāi)發(fā)技術(shù)詳解SELECT YEAR(publishDate) FROM BookInfo WHERE BookName =JavaWeb開(kāi)發(fā)技術(shù)詳解 代碼為:SELECT BookID,BookName,publishDate,PublisherID FROM BookInfo WHERE PublisherID =(SELECT publisherID FROM BookInfo WHERE BookName =JavaWeb開(kāi)發(fā)技術(shù)詳解) AND YEAR(PublishDate) = (SELECT YEAR(publishDate) FROM BookInfo WHERE
49、 BookName =JavaWeb開(kāi)發(fā)技術(shù)詳解 )131【例8-2】 查詢具有和“JavaWeb開(kāi)發(fā)技術(shù)詳解”相同出版社和相同出版年限的書(shū)籍的書(shū)號(hào)、書(shū)名和出版日期解決方法:返回值列表的子查詢 子查詢返回值列表即子查詢返回的不是單個(gè)值,外部查詢的檢索條件WHERE和子查詢之間使用以下運(yùn)算符 132返回值列表的子查詢【例8-3】查詢有銷售記錄的人員信息先求子查詢,即在銷售主表SalesMaster中查找銷售人員ID SELECT UserID FROM SalesMaster因?yàn)殇N售人員不止一個(gè),所以外部查詢和子查詢之間使用INSELECT * FROM UserInfo WHERE UserI
50、D IN (SELECT UserID FROM SalesMaster) 133返回值列表的子查詢【例8-3】顯示價(jià)格高于類別JAVA的所有書(shū)籍的書(shū)號(hào)、書(shū)名、作者和價(jià)格。分析:先求出類別是“JAVA“的所有書(shū)籍的價(jià)格列表 SELECT Price,BookID,CategoryID FROM BookInfo WHERE CategoryID = (SELECT categoryid FROM Category WHERE CategoryName =JAVA)外部查詢和子查詢之間應(yīng)該使用ALLSELECT BookID ,BookName ,Author,Price FROM BookIn
51、fo WHERE Price ALL(SELECT Price FROM BookInfo WHERE CategoryID =(SELECT categoryid FROM Category WHERE CategoryName =JAVA) ) 134值列表EXISTS存在性測(cè)試相關(guān)子查詢?cè)谧硬樵冎幸猛獠坎樵兊牧?,即子查詢的?zhí)行與外部查詢有關(guān) 135 【例8-4】顯示同類圖書(shū)中價(jià)格最高的的書(shū)籍信息,顯示內(nèi)容包括書(shū)號(hào)、書(shū)名、價(jià)格和類別。分析:對(duì)BookInfo表的每一條記錄,與同類圖書(shū)的價(jià)格比較,求出最高價(jià)格的書(shū)籍SELECT BookID ,BookName ,Price ,Catego
52、ryID FROM BookInfo a WHERE a.Price =( SELECT max(b.price) FROM BookInfo b WHERE a.CategoryID =b.CategoryID ) EXISTS存在性測(cè)試EXISTS存在性測(cè)試 指定一個(gè)子查詢,測(cè)試行是否存在,也就是對(duì)于外部查詢的每一行,檢查子查詢是否是空集合,如不是空集合,主查詢返回值,否則主查詢沒(méi)有返回值 該題目涉及銷售細(xì)表SalesDetails和書(shū)籍表BookInfo,因?yàn)椴樵兊氖菚?shū)籍信息,所以BookInfo表應(yīng)該放在外部查詢位置,銷售細(xì)表SalesDetails應(yīng)放在子查詢位置 136【例8-5】
53、查詢已銷售的書(shū)籍信息,顯示內(nèi)容包括書(shū)號(hào)、書(shū)名和作者。SELECT BookID,BookName,Author FROM BookInfo WHERE EXISTS(SELECT * FROM SalesDetails WHERE BookID=BookInfo.BookID)NOT Exists子查詢【例8-6】查詢沒(méi)有銷售記錄的用戶信息,顯示內(nèi)容包括用戶ID、用戶名和入職月份。分析:該題目外部查詢是用戶UserInfo表,子查詢是銷售主表SalesMaster,由于查詢的是沒(méi)有銷售記錄的用戶,所以使用NOT EXISTS關(guān)鍵字判斷子查詢是否有記錄返回 137用戶id用戶idSELECT a
54、.UserId,a.UserName,YEAR(a.hiredate) 入職年份FROM UserInfo a WHERE NOT EXISTS (SELECT * FROM SalesMaster b WHERE b.UserID=a.UserID)集合操作 集合操作是一種以兩個(gè)或多個(gè)SELECT 查詢結(jié)果集為操作對(duì)象,通過(guò)對(duì)這些查詢結(jié)果集實(shí)施并、交、差等集合運(yùn)算,獲取新的結(jié)果集的一種查詢方法 集合操作的運(yùn)算符主要包括以下3種 并集(UNION)交集(INTERSECT)差(EXCEPT)138并集(UNION) 并集并集是將兩個(gè)或更多查詢的結(jié)果合并為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有
55、查詢的全部行 UNION的使用限制:集合操作符所涉及的查詢應(yīng)有相同的列數(shù),對(duì)應(yīng)的列必須具有相同的數(shù)據(jù)類型。所顯示的行上面的標(biāo)簽來(lái)自第一個(gè)SELECT語(yǔ)句。UNION和UNION ALLUNION ALL:返回兩個(gè)查詢所選定的所有行,包括重復(fù)行UNION:未指定ALL,返回的結(jié)果集中不包括重復(fù)行 139并集(UNION)【例8-7】 把“機(jī)械工業(yè)出版社”出版的圖書(shū)和“人民郵電出版社”出版社的圖書(shū)一起顯示輸出查詢“機(jī)械工業(yè)出版社”的圖書(shū)的T-SQL如下查詢“人民郵電出版社”的圖書(shū)的T-SQL如下 140SELECT BookID ,BookName,Author,PublisherID FROM
56、BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =機(jī)械工業(yè)出版社)SELECT BookID ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =人民郵電出版社 )SELECT BookID ,BookName,Author,PublisherID FROM BookInfo WHERE Publis
57、hERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =機(jī)械工業(yè)出版社)UNION SELECT BookID ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =人民郵電出版社)并集(UNION)【例8-8】將新數(shù)據(jù)顯示在查詢中141SELECT 009 AS 用戶ID,張三 as 用戶名, 男 as 性別, 20 as 年齡UNION SELE
58、CT UserID ,UserName,Sex,Age FROM UserInfo交集(INTERSECT) 交集(INTERSECT) INTERSECT運(yùn)算符比較兩個(gè)查詢的結(jié)果,返回重復(fù)值,即返回兩個(gè)結(jié)果集中的交集,兩者都包含的記錄 INTERSECT運(yùn)算符的使用限制與UNION運(yùn)算符相同?!纠?-9】查詢有銷售記錄的書(shū)籍142SELECT BookID as 書(shū)ID FROM SalesDetailsINTERSECT SELECT BookID FROM BookInfo 差(EXCEPT) 差(EXCEPT)運(yùn)算符比較兩個(gè)查詢的結(jié)果,返回非重復(fù)值。EXCEPT運(yùn)算符獲取在結(jié)果集A中但
59、不在結(jié)果集B中的記錄,即結(jié)果集A減去結(jié)果集B EXCEPT運(yùn)算符的使用限制與UNION運(yùn)算符相同 143差(EXCEPT)【例8-10】查詢BookInfo表中價(jià)格低于40的書(shū)籍中去掉2006年出版的書(shū)籍信息,顯示內(nèi)容包括書(shū)號(hào)、書(shū)名、價(jià)格和出版日期 144SELECT BookID 書(shū)ID ,BookName 書(shū)名 ,Price 價(jià)格 ,PublishDate 出版日期 FROM BookInfo WHERE Price 40EXCEPTSELECT BookID ,BookName ,Price ,PublishDate FROM BookInfo WHERE YEAR(PublishDat
60、e) =2006總結(jié)子查詢就是嵌套在SELECT,INSERT,UPDATE和DELETE中的查詢。一般子查詢不依賴于外部查詢,執(zhí)行時(shí)先執(zhí)行內(nèi)部查詢?cè)賵?zhí)行外部查詢,通常用比較運(yùn)算符和IN,NOT IN關(guān)鍵字。相關(guān)子查詢即子查詢的條件依賴于外部查詢,執(zhí)行時(shí)先執(zhí)行外 部查詢,然后根據(jù)外部查詢返回的記錄行數(shù)重復(fù)執(zhí)行內(nèi)部查詢通 常用EXISTS,NOT EXISTS關(guān)鍵字。集合運(yùn)算結(jié)果集要進(jìn)行合并時(shí)用UNION運(yùn)算符。結(jié)果集取交集用INTERSECT運(yùn)算符。結(jié)果集相減用EXCEPT運(yùn)算符。145第9章 數(shù)據(jù)庫(kù)的設(shè)計(jì)本章目標(biāo)了解設(shè)計(jì)數(shù)據(jù)庫(kù)的步驟掌握數(shù)據(jù)庫(kù)設(shè)計(jì)模型ER模型掌握使用范式規(guī)范化數(shù)據(jù)庫(kù)為什么需要
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度醫(yī)院醫(yī)技人員技能提升合同4篇
- 打雜工合同范本(2篇)
- 二零二五年度農(nóng)村土地整治項(xiàng)目承包合同書(shū)4篇
- 二零二五年度充電樁充電服務(wù)補(bǔ)貼資金管理合同3篇
- 二零二五版高端鎳氫電池產(chǎn)品定制研發(fā)合同范本4篇
- 二零二五年度農(nóng)場(chǎng)租賃合同農(nóng)業(yè)生態(tài)修復(fù)與保護(hù)協(xié)議4篇
- 2025年度房地產(chǎn)租賃合同房屋質(zhì)量及維修責(zé)任約定4篇
- 2025年互聯(lián)網(wǎng)+內(nèi)資股東股權(quán)投資合同
- 二零二五版智能門禁系統(tǒng)與電梯聯(lián)動(dòng)工程合同3篇
- 2025年度互聯(lián)網(wǎng)企業(yè)程序員聘用合同模板
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫(kù)-中(多選題)
- 《七律二首 送瘟神》教案- 2023-2024學(xué)年高教版(2023)中職語(yǔ)文職業(yè)模塊
- 2024年中考語(yǔ)文滿分作文6篇(含題目)
- 第一節(jié)-貨幣資金資料講解
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問(wèn)題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
評(píng)論
0/150
提交評(píng)論