




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用 了解結(jié)構(gòu)化查詢語言SQL操作原理 學(xué)習(xí)數(shù)據(jù)庫SQL操作語句使用 掌握數(shù)據(jù)庫對象創(chuàng)建 掌握數(shù)據(jù)庫表訪問操縱 掌握多表關(guān)聯(lián)數(shù)據(jù)查詢 掌握數(shù)據(jù)庫對象修改與刪除 掌握數(shù)據(jù)庫視圖使用 掌握SQL Server數(shù)據(jù)庫管理工具使用2 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用一、基本概念一、基本概念3.1 SQL簡介SQL( Structured Query Language,結(jié)構(gòu)化查詢語言 )是一種對數(shù)據(jù)庫進(jìn)行訪問的數(shù)據(jù)操作子語言。其SQL語句執(zhí)行命令完成對數(shù)據(jù)庫訪問操作。二、二、SQL發(fā)展發(fā)展w 20世紀(jì)70年代由IBM公司開發(fā)w 1979年ORACLE公司首先提供商用的SQLw 1
2、986 ANSI的數(shù)據(jù)庫委員會批準(zhǔn)了SQL作為關(guān)系型數(shù)據(jù)庫語言的美國標(biāo)準(zhǔn)。w 1987年國際標(biāo)準(zhǔn)化組織(ISO)將其采納為國際標(biāo)準(zhǔn)SQL86。w 1989年更新成為國際標(biāo)準(zhǔn)SQL-89w 1992年更新成為國際標(biāo)準(zhǔn)SQL-92(或稱SQL2)w 1999年更新成為國際標(biāo)準(zhǔn)SQL-99(或稱SQL3)w 2008年更新成為國際標(biāo)準(zhǔn)SQL:20083 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用三、三、SQL應(yīng)用情況應(yīng)用情況絕大多數(shù)主流的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)采用了SQL標(biāo)準(zhǔn)語言實現(xiàn)數(shù)據(jù)庫操作wOraclewSybasewDB2wMicrosoft SQL ServerwAccesswMySqlw。 其中一些廠商數(shù)
3、據(jù)庫管理系統(tǒng)對SQL語句進(jìn)行了擴(kuò)展開發(fā),如Sybase、 Microsoft SQL Server將操作語言擴(kuò)展為Transaction-SQL;Oracle將操作語言擴(kuò)展為PL/SQL。4 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用四、四、SQL操作機(jī)理操作機(jī)理SQL主要操作功能:w SQL 從數(shù)據(jù)庫存取數(shù)據(jù)w SQL 從數(shù)據(jù)庫刪除數(shù)據(jù)w SQL 創(chuàng)建新數(shù)據(jù)庫w SQL 在數(shù)據(jù)庫中創(chuàng)建新表w SQL 在數(shù)據(jù)庫中創(chuàng)建存儲過程w SQL 在數(shù)據(jù)庫中創(chuàng)建視圖w SQL 可以設(shè)置數(shù)據(jù)庫對象的訪問權(quán)限 數(shù)據(jù)庫DBMS(執(zhí)行SQL)數(shù)據(jù)庫應(yīng)用程序返回結(jié)果提交SQLI/O數(shù)據(jù)5 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用五、五、SQ
4、L語言語句類別語言語句類別1. 數(shù)據(jù)操縱語言數(shù)據(jù)操縱語言(Data Manipulation Language,DML)是SQL語言中用于增添、修改、刪除數(shù)據(jù)的語句,主要語句如下:w INSERT - 向數(shù)據(jù)庫表中插入數(shù)據(jù) w UPDATE - 更新數(shù)據(jù)庫表中的數(shù)據(jù)w DELETE - 從數(shù)據(jù)庫表中刪除數(shù)據(jù) 6 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用2. 數(shù)據(jù)定義語言數(shù)據(jù)定義語言(Data Definition Language,DDL)是SQL語言中用于創(chuàng)建或刪除數(shù)據(jù)庫對象的語句。這類語句也可以定義數(shù)據(jù)表對象的主外鍵、索引、約束等要素。主要語句如下:w CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫
5、w DROP DATABASE 刪除數(shù)據(jù)庫w ALTER DATABASE - 修改數(shù)據(jù)庫屬性 w CREATE TABLE - 創(chuàng)建新表 w ALTER TABLE 修改數(shù)據(jù)庫表結(jié)構(gòu)w DROP TABLE - 刪除表w CREATE INDEX - 創(chuàng)建索引w DROP INDEX - 刪除索引 7 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用3. 數(shù)據(jù)查詢語言數(shù)據(jù)查詢語言(Data Query Language,DQL)是SQL語言中用于對數(shù)據(jù)庫進(jìn)行查詢的語句。該語句只有Select一個語句,但其變化范型較多。4. 數(shù)據(jù)控制語言數(shù)據(jù)控制語言(Data Control Language,DCL)是SQL語
6、言中用于對數(shù)據(jù)訪問權(quán)進(jìn)行控制的語句。主要語句如下:w GRANT 授予用戶對數(shù)據(jù)對象的權(quán)限w DENY 拒絕授予用戶對數(shù)據(jù)對象的權(quán)限w REVOKE 撤消用戶對數(shù)據(jù)對象的權(quán)限8 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用5. 事務(wù)處理語言事務(wù)處理語言(Transaction Process Language,TPL)是SQL語言中用于數(shù)據(jù)庫內(nèi)部事務(wù)處理的語句。主要語句如下:w BEGIN TRANSACTION 開始事務(wù)w COMMIT 提交事務(wù)w ROLLBACK 回滾事務(wù)6. 游標(biāo)控制語言游標(biāo)控制語言(Cursor Control Language,CCL)是SQL語言中用于數(shù)據(jù)庫游標(biāo)操作的語句。主要語
7、句如下:w DECLARE CURSOR 定義游標(biāo)w FETCH INTO 提交游標(biāo)數(shù)據(jù)w CLOSE CURSOR 關(guān)閉游標(biāo)9 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用六、六、SQL語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型1. 基本數(shù)據(jù)類型w 字符:CHAR、VARCHAR、TEXTw 整數(shù):SMALLINT、INTEGERw 浮點數(shù):NUMBER(n,d)、FLOAT(n,d)w 日期:DATE、DATETIMEw 貨幣:MONEY2. 不同數(shù)據(jù)庫所支持?jǐn)?shù)據(jù)類型Access的數(shù)據(jù)類型見表3-1所示SQL Server的數(shù)據(jù)類型見表3-2所示MySQL的數(shù)據(jù)類型見表3-3所示10 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用部門信
8、息雇員信息項目信息任務(wù)信息工程項目管理數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)任務(wù):w 創(chuàng)建項目數(shù)據(jù)庫ProjectDBw 創(chuàng)建數(shù)據(jù)庫表對象及其約束w 完成數(shù)據(jù)庫表的數(shù)據(jù)插入、修改、刪除以及查詢處理某企業(yè)希望通過創(chuàng)建一個工程項目管理數(shù)據(jù)庫,實現(xiàn)對項目信息管理。3.2 數(shù)據(jù)定義語句DDL一、數(shù)據(jù)庫案例一、數(shù)據(jù)庫案例11 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注DepartmentNamechar(35)主鍵是部門名稱DepartIntroVarchar(200)否是部門簡介OfficeNumberchar(15)否是辦公室編號OfficePhonechar(12)否是辦公電話部門(DEPARTMENT)表結(jié)構(gòu)
9、1. 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計列名類型鍵是否非空備注EmployeeNumberInt主鍵是代理鍵,雇員編號NameVarchar(30)否是姓名Departmentchar(35)外鍵是部門Phonechar(12)否是電話EmailVarchar(100)否是郵件雇員(EMPLOYEE)表結(jié)構(gòu)12 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注ProjectIDInt主鍵是項目編號NameVarchar(30)否是項目名稱Departmentchar(35)外鍵是部門MaxHoursNumber否是最長工時StartDateDateTime否否開始日期EndDateDateTime否否結(jié)束日期
10、項目(PROJECT)表結(jié)構(gòu)13 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注ProjectIDInt主鍵,外鍵是復(fù)合鍵,項目編號EmployeeNumberInt主鍵,外鍵是復(fù)合鍵,雇員編號HoursWorkedNumeric(6,2)否否工作時數(shù)任務(wù)(ASSIGNMENT)表結(jié)構(gòu)14 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注DepartmentNamechar(35)主鍵是部門名稱DepartIntroVarchar(200)否是部門簡介OfficeNumberchar(15)否是辦公室編號OfficePhonechar(12)否是辦公電話列名類型鍵是否非空備注Employ
11、eeNumberInt主鍵是代理鍵,雇員編號NameVarchar(30)否是姓名Departmentchar(35)外鍵是部門Phonechar(12)否是電話EmailVarchar(100)否是郵件參照完整性約束DEPARTMENT表EMPLOYEE表2. 數(shù)據(jù)庫表關(guān)聯(lián)設(shè)計15 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注DepartmentNamechar(35)主鍵是部門名稱DepartIntroVarchar(30)否是部門簡介OfficeNumberchar(15)否是辦公室編號OfficePhonechar(12)否是辦公電話DEPARTMENT表結(jié)構(gòu)列名類型鍵是否非空備
12、注ProjectIDInt主鍵是項目編號NameVarchar(30)否是項目名稱Departmentchar(35)外鍵是部門MaxHoursNumeric(6,2)否是最長工期StartDateDateTime否否開始日期EndDateDateTime否否結(jié)束日期PROJECT表結(jié)構(gòu)參照完整性約束16 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注ProjectIDInt主鍵是項目編號NameVarchar(30)否是項目名稱Departmentchar(35)外鍵是部門MaxHoursNumber否是最長工期StartDateDateTime否否開始日期EndDateDateTime
13、否否結(jié)束日期PROJECT表結(jié)構(gòu)列名類型鍵是否非空備注ProjectIDInt主鍵,外鍵是復(fù)合鍵,項目編號EmployeeNumberInt主鍵,外鍵是復(fù)合鍵,雇員編號HoursWorkedNumeric(6,2)否否工作時數(shù)ASSIGNMENT表結(jié)構(gòu)參照完整性約束17 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用3. 業(yè)務(wù)規(guī)則設(shè)計w 如果要刪除EMPLOYEE中的某個行,若該行連接有ASSIGNMENT的外鍵值,則禁止對EMPLOYEE行執(zhí)行刪除操作。在創(chuàng)建表時定義參照完整性約束。w 如果要刪除PROJECT中的某個行,則ASSIGNMENT中連接到PROJECT的對應(yīng)行數(shù)據(jù)也將隨之被刪除。在創(chuàng)建表時定義級
14、聯(lián)刪除約束。w 如果某雇員離職,則企業(yè)將刪除該雇員數(shù)據(jù),但前提是必須先有人接替這個雇員工作,然后才允許刪除該雇員數(shù)據(jù)。w 如果企業(yè)取消某個項目,將刪除該項目數(shù)據(jù)。同時,也將刪除該項目所下屬的任務(wù)數(shù)據(jù)。數(shù)據(jù)庫中如何設(shè)計?問題:上述項目數(shù)據(jù)庫設(shè)計如何通過SQL實現(xiàn)?18 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用二、數(shù)據(jù)庫創(chuàng)建語句二、數(shù)據(jù)庫創(chuàng)建語句1. 語句基本格式例 創(chuàng)建一個人力資源管理數(shù)據(jù)庫HR,其SQL語句如下:CREATE DATABASE HR;CREATE DATABASE 其中CREATE DATABASE 為創(chuàng)建數(shù)據(jù)庫語句的關(guān)鍵詞,為被創(chuàng)建數(shù)據(jù)庫的標(biāo)識符名稱。19 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實
15、踐操作: 在SQL Server中,創(chuàng)建第一個數(shù)據(jù)庫HR。20 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用2. 語句完整格式CREATE DATABASE on primary ( - 默認(rèn)屬于primary文件組name=databasename_data,- 主數(shù)據(jù)文件的邏輯名稱filename=D:databasename_data.mdf, - 主數(shù)據(jù)文件的物理名稱size=數(shù)值MB, -主數(shù)據(jù)文件的初始大小maxsize=數(shù)值MB, - 主數(shù)據(jù)文件增長的最大值filegrowth=數(shù)值%-主數(shù)據(jù)文件的增長率)log on(/*-日志文件的具體描述,各參數(shù)含義同上-*/name=databasena
16、me_log, - 日志文件的邏輯名稱filename=所存目錄:databasename_log.ldf, - 日志文件的物理名稱size=數(shù)值MB, -日志文件的初始大小filegrowth=數(shù)值MB-日志文件的增長值);21 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用CREATE DATABASE ProjectDBon primary( - 默認(rèn)屬于primary文件組name=Project_data,- 主數(shù)據(jù)文件的邏輯名稱filename=d:Project_data.mdf, - 主數(shù)據(jù)文件的物理名稱size=10MB, -主數(shù)據(jù)文件的初始大小maxsize=50MB, - 主數(shù)據(jù)文件增長的
17、最大值filegrowth=10%-主數(shù)據(jù)文件的增長率)log on(name=Project_log,- 日志文件的邏輯名稱filename=d:Project_log.ldf,- 日志文件的物理名稱size=10MB, -日志文件的初始大小filegrowth=1MB-日志文件的增長值);例 創(chuàng)建一個項目信息管理數(shù)據(jù)庫ProjectDB,其SQL語句如下:22 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作: 采用完整參數(shù)SQL語句,創(chuàng)建數(shù)據(jù)庫ProjectDB。23 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用三、數(shù)據(jù)庫刪除語句三、數(shù)據(jù)庫刪除語句1. 語句基本格式例 刪除前面創(chuàng)建的人力資源管理數(shù)據(jù)庫HR,其SQL
18、語句如下:DROP DATABASE HR;DROP DATABASE ;其中DROP DATABASE 為語句命令關(guān)鍵詞,為數(shù)據(jù)庫名稱。24 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作: 刪除數(shù)據(jù)庫HR。25 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 在SQL Server數(shù)據(jù)庫管理系統(tǒng)環(huán)境中,創(chuàng)建一個選課系統(tǒng)數(shù)據(jù)庫Catalog,完成后再刪除它。26 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用四、數(shù)據(jù)庫表創(chuàng)建語句四、數(shù)據(jù)庫表創(chuàng)建語句1.語句基本格式CREATE TABLE ( 列完整性約束, 列完整性約束, 列完整性約束, );其中CREATE TABLE 為創(chuàng)建表語句的關(guān)鍵詞,為將被創(chuàng)建的數(shù)據(jù)庫表名稱。27
19、電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 雇員數(shù)據(jù)庫表EMPLOYEE創(chuàng)建CREATE TABLE EMPLOYEE( EmployeeNumber Int, Name VarChar(30), Department Char(35), Phone Char(12), EmailVarChar(100) );列名類型鍵是否非空備注EmployeeNumberInt主鍵是NameVarChar(30)否是DepartmentChar(35)否是PhoneChar(12)否否EmailVarChar(100)否是28 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用2. 列約束條件CREATE TABLE NewTableNa
20、me( ColumnName DataType OptionalConstraint, ColumnName DataType OptionalConstraint, ColumnName DataType OptionalConstraint, );列約束子句 w PRIMARY KEY主鍵w NOT NULL非空值w NULL空值w UNIQUE值唯一w CHECK有效性檢查w DEFAULT缺省值列約束子句29 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用CREATE TABLE EMPLOYEE( EmployeeNumber Int PRIMARY KEY IDENTITY(1,1), Name V
21、arChar(30) NOT NULL, Department Char(35)NOT NULL DEFAULT 人力資源, Phone Char(12)NULL, EmailVarChar(100)NOT NULL UNIQUE );例 雇員數(shù)據(jù)庫表EMPLOYEE創(chuàng)建列名類型鍵是否非空備注EmployeeNumberInt主鍵是代理鍵NameVarChar(30)否是DepartmentChar(35)否是缺省值“人力資源”PhoneChar(12)否否EmailVarChar(100)否是要求取值唯一30 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用說明:在Sybase或SQL Server,用INDE
22、NTITY標(biāo)識代理鍵在Oracle數(shù)據(jù)庫中用SEQUENCE標(biāo)識代理鍵在MySQL數(shù)據(jù)庫中,用AUTO_INCREMENT標(biāo)識代理鍵31 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作: 在SQL Server中執(zhí)行SQL創(chuàng)建EMPLOYEE表32 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用CREATE TABLE STUDENT( StudentID Char(10) PRIMARY KEY, StudentName VarChar(30)NOT NULL, StudentGender Char(2)NOT NULL CHECK (StudentGender IN(男,女), BirthDay Date NOT N
23、ULL, Major Varchar(30) NULL DEFAULT 軟件工程, StudentPhone Char(11) NULL );實踐練習(xí): 課程目錄數(shù)據(jù)庫表STUDENT創(chuàng)建。列名類型鍵是否非空備注StudentIDChar(10)主鍵是StudentNameVarChar(20)否是StudentGenderChar(2)否是(男,女)BirthDayDate否是MajorVarchar(30)否否缺省值 “軟件工程”StudentPhoneChar(11)否否33 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用3、使用表約束定義主鍵CREATE TABLE DEPARTMENT( Depart
24、mentName Char(35) NOT NULL, DepartIntro VarChar(200)NOT NULL, OfficeNumber Char(15)NOT NULL, OfficePhone Char(12)NOT NULL, CONSTRAINTDEPARTMENT_PKPRIMARY KEY(DepartmentName ) );使用表約束定義主鍵的優(yōu)點:w 便于定義復(fù)合主鍵w 可命名主鍵約束w 便于定義代理鍵34 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 項目數(shù)據(jù)庫表PROJECT創(chuàng)建CREATE TABLE PROJECT( ProjectID Int NOT NULL IDE
25、NTITY(100,10), Name VarChar(30)NOT NULL, Department Char(35)NOT NULL, MaxHours Numeric(6,2) NOT NULL DEFAULT 60.30, StartDate DateTime NULL, EndDate DateTime NULL, CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID) );列名類型鍵是否非空備注ProjectIDInt主鍵是代理鍵100開始,增量10NameChar(30)否是DepartmentChar(35)否是MaxHoursNumeric(6,
26、2)否是缺省值 60.30StartDateDateTime否否EndDateDateTime否否35 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作: 在SQL SERVER中使用SQL表約束語句創(chuàng)建主鍵。36 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用DEPARTMENT表結(jié)構(gòu)列名類型鍵是否非空備注ProjectIDInt主鍵是項目編號NameVarChar(30)否是項目名稱DepartmentChar(35)外鍵是部門MaxHoursNumeric(6,2)否是最長工期StartDateDateTime否否開始日期EndDateDateTime否否結(jié)束日期PROJECT表結(jié)構(gòu)參照完整性約束列名類型鍵是否非空備
27、注DepartmentNameText(35)主鍵是DepartIntroVarChar(200)否是OfficeNumberText(15)否是OfficePhoneText(12)否是4、使用表約束定義外鍵37 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用CREATE TABLE PROJECT( ProjectID Int NOT NULL IDENTITY(1,1), Name VarChar(30)NOT NULL, Department Char(35)NOT NULL, MaxHours Numeric(6,2) NOT NULL DEFAULT 100, StartDate DateTime
28、NULL, EndDate DateTime NULL, CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID), CONSTRAINTPROJ_DEPART_FK FOREIGN KEY(Department)REFERENCES DEPARTMENT (DepartmentName) ON UPDATE CASCADE );例例 創(chuàng)建創(chuàng)建PROJECT表中外鍵及其參照完整性約束38 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:在SQL Server中創(chuàng)建PROJECT表外鍵及其參照完整性約束。39 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否非空備注ProjectID
29、Int主鍵是NameVarChar(30)否是DepartmentChar(35)外鍵是MaxHoursNumber否是StartDateDateTime否否EndDateDateTime否否PROJECT表結(jié)構(gòu)列名類型鍵是否非空備注ProjectIDInt主鍵,外鍵是EmployeeNumberInt主鍵,外鍵是HoursWorkedNumeric(6,2)否否ASSIGNMENT表結(jié)構(gòu)參照完整性約束實踐練習(xí): 創(chuàng)建ASSIGNMENT表中外鍵,及其參照PROJECT和EMPLOYEE表的完整性約束40 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用列名類型鍵是否必需備注ProjectIDInt主鍵,外鍵是E
30、mployeeNumberInt主鍵,外鍵是HoursWorkedNumeric(6,2)否否ASSIGNMENT表結(jié)構(gòu)參照完整性約束列名類型鍵是否必需備注EmployeeNumberInt主鍵是NameVarChar(30)否是DepartmentChar(35)外鍵是PhoneChar(12)否是EmailVarChar(120)否是EMPLOYEE表41 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用CREATE TABLE ASSIGNMENT( ProjectID Int NOT NULL, EmployeeNumberIntNOT NULL, HoursWorked Numeric(6,2) NUL
31、L, CONSTRAINTASSIGNMENT_PK PRIMARY KEY(ProjectID,EmployeeNumber), CONSTRAINTASSIGN_PROJ_FK FOREIGN KEY(ProjectID)REFERENCES PROJECT(ProjectID)ON DELETE CASCADE,CONSTRAINTASSIGN_EMP_FK FOREIGN KEY(EmployeeNumber)REFERENCES EMPLOYEE(EmployeeNumber);42 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用ALTER TABLE Constraint;ALTER TABLE 語
32、句可以用于添加、修改、刪除表結(jié)構(gòu)的列和約束。例 刪除ASSIGNMENT表中外鍵ASSIGN_EMP_FK ,其SQL操作語句如下。ALTER TABLE ASSIGNMENT DROP CONSTRAINT ASSIGN_EMP_FK;五、修改表結(jié)構(gòu)五、修改表結(jié)構(gòu)SQL語句語句2、刪除表中外鍵1、語句基本格式43 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用在ALT TABLE語句中,可以添加CHECK關(guān)鍵字實現(xiàn)數(shù)據(jù)范圍約束添加。例 在定義PROJECT表時,規(guī)定StartDate必須早于EndDate,則可通過如下語句實現(xiàn)。ALTER TABLE PROJECT ADD CONSTRAINT PROJEC
33、T_Check_DatesCHECK (StartDate EndDate);3、在表中添加約束44 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用使用ALT TABLE語句,還可以在現(xiàn)有表結(jié)構(gòu)中添加新的屬性列。例 在PROJECT表中添加一列CurrentTotalHours,以跟蹤在某項目上工作的實際小時數(shù),則可通過如下語句實現(xiàn)。ALTER TABLE PROJECT ADD CurrentTotalHours Numeric(8,2) NULL;4、在表中添加列45 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作: 在PROJECT表中添加新列46 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 在PROJECT表中刪除Curre
34、ntTotalHours列,則可通過如下語句實現(xiàn)。ALTER TABLE PROJECT DROP COLUMN CurrentTotalHours;5、在表中刪除列47 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用六、刪除表結(jié)構(gòu)六、刪除表結(jié)構(gòu)SQL語句語句基本語句格式: DROP TABLE TableName;注意: 該語句將刪除該表的所有數(shù)據(jù)及其結(jié)構(gòu)例 刪除EMPLOYEE表及其數(shù)據(jù),可以使用如下語句。DROP TABLE EMPLOYEE;48 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用注意: 如果某表包含了參照完整性約束,直接執(zhí)行DROP TABLE 語句,將會報錯。說明:刪除EMPLOYEE表前,必須先刪除AS
35、SIGNMENT表或至少刪除外鍵約束ASSIGN_EMP_FK,才能成功。49 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用七、索引對象定義七、索引對象定義索引在數(shù)據(jù)庫中,索引是針對某個表中一列或多列建立的指向表中記錄數(shù)據(jù)頁的邏輯指針清單,其作用類似圖書目錄可支持對數(shù)據(jù)表的快速信息檢索。其中CREATE INDEX 為創(chuàng)建索引語句的關(guān)鍵詞。為在指定表中針對某列創(chuàng)建索引的名稱。該語句執(zhí)行后,在表中為指定列創(chuàng)建其列值的索引,使該列可實現(xiàn)快速查詢。1、索引創(chuàng)建SQL語句基本語句格式:CREATE INDEX ON ;50 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 在學(xué)生信息表STUDENT中,為出生日期Birthday列創(chuàng)建
36、索引,以便可支持按出生日期快速查詢學(xué)生信息,其索引創(chuàng)建SQL語句如下。CREATE INDEX Birthday_Idx ON STUDENT (Birthday);51 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用索引優(yōu)點: 提高數(shù)據(jù)檢索速度 可快速連接關(guān)聯(lián)表 減少分組和排序時間索引開銷: 創(chuàng)建和維護(hù)索引都需要較大開銷 索引會占用額外存儲空間 數(shù)據(jù)操縱因維護(hù)索引帶來開銷52 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用2、索引修改SQL語句其中ALTER INDEX 為索引對象修改語句的關(guān)鍵詞。為在指定表中針對某列創(chuàng)建索引的名稱。RENAME TO為索引換名關(guān)鍵詞。當(dāng)該語句執(zhí)行后,原有索引被換名為新名稱。使用SQL語句可以
37、對索引進(jìn)行修改操作,其語句格式分別如下:ALTER INDEX ON RENAME TO ;例 在學(xué)生信息表STUDENT中,將原索引Birthday_Idx更名Bday_Idx,其索引修改SQL語句如下:ALTER INDEX Birthday_Idx ON STUDENT RENAME TO Bday_Idx;53 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用ALTER INDEX ON CLUSTERED | NONCLUSTERED;此外,索引對象修改SQL語句還可以更改索引的聚簇性質(zhì),例如修改為聚集索引或非聚集索引,其SQL語句格式如下:聚集索引與非聚集索引區(qū)別:在聚集索引中,鍵值的邏輯順序決定了表
38、中相應(yīng)行的物理順序。在非聚集索引中,鍵值的邏輯順序可以與表中相應(yīng)行的物理順序不同。54 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用3、索引刪除SQL語句使用SQL語句可以對索引進(jìn)行刪除操作,其語句格式分別如下:DROP INDEX ;其中DROP INDEX 為刪除索引語句的關(guān)鍵詞。為被指定的索引名稱。該語句執(zhí)行后,將從表中刪除該索引。例 在學(xué)生信息表STUDENT中,刪除Birthday_Idx索引,其索引刪除SQL語句如下:DROP INDEX Birthday_Idx;55 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用學(xué)院信息、課程信息教師信息、學(xué)生信息開課信息、選課信息課程目錄數(shù)據(jù)庫數(shù)據(jù)庫系統(tǒng)任務(wù):w 創(chuàng)建項目數(shù)據(jù)
39、庫Catalogw 創(chuàng)建數(shù)據(jù)庫表對象及其約束w 完成數(shù)據(jù)庫表的數(shù)據(jù)插入、修改、刪除以及查詢處理某高校希望通過創(chuàng)建一個課程目錄數(shù)據(jù)庫,實現(xiàn)學(xué)生選課管理。一、數(shù)據(jù)庫案例一、數(shù)據(jù)庫案例3.3 數(shù)據(jù)操縱SQL語句56 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用學(xué)院信息表:COLLEGE(CollegeID,CollegeName,CollegeIntro,CollegeTel)課程表:COURSE(CourseID,CourseName,CourseType,CourseCredit,CoursePeriod,TestMethod)教師表:TEACHER(TeacherID,TeacherName,TeacherG
40、ender,TeacherTitle,CollegeID,TeacherPhone)學(xué)生表:STUDENT(StudentID,StudentName,StudentGender,BirthDay,Major,StudentPhone)開課計劃表:PLAN(CoursePlanID,CourseID,TeacherID,CourseRoom,CourseTime,Note)選課注冊表:REGISTER(CourseRegID,CoursePlanID,StudentID,Note)57 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用二、單條數(shù)據(jù)插入二、單條數(shù)據(jù)插入例 在學(xué)生信息表STUDENT中,原有數(shù)據(jù)見下圖
41、所示INSERT INTO VALUES (列值表);其中INSERT INTO 為插入語句的關(guān)鍵詞。為被插入數(shù)據(jù)的數(shù)據(jù)庫表。給出在表中插入哪些列。數(shù)據(jù)操縱SQL語句是一類對數(shù)據(jù)庫表中數(shù)據(jù)進(jìn)行變動操作的語句集。它以INSERT、UPDATE、DELETE三種語句為核心,分別完成數(shù)據(jù)的插入、更新與刪除處理。58 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用該語句執(zhí)行后,學(xué)生信息表STUDENT的數(shù)據(jù)見下圖所示。注意:在INSERT INTO插入數(shù)據(jù)語句中,所使用的Interger和Numeric等類型數(shù)值不使用引號標(biāo)注,但Char、Varchar、Date和Datetime等值類型必須使用單引號。執(zhí)行如下插入數(shù)
42、據(jù)SQL語句:INSERT INTO STUDENT VALUES(201222010002,劉菲,女,1995-04-23,軟件工程,);59 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用三、多條數(shù)據(jù)插入三、多條數(shù)據(jù)插入在數(shù)據(jù)庫表插入操作中,還可以一次執(zhí)行一組SQL數(shù)據(jù)插入語句,實現(xiàn)在表中多行數(shù)據(jù)插入。例 在學(xué)生信息表STUDENT中,一次插入多個學(xué)生數(shù)據(jù),其插入數(shù)據(jù)SQL語句如下: INSERT INTO STUDENT VALUES(201222010003,張亮,男,1996-01-21,軟件工程,);INSERT INTO STUDENT VALUES(201222010004,謝云,男,1995-
43、08-12,軟件工程,);INSERT INTO STUDENT VALUES(201222010005,劉亞,女,1995-06-20,軟件工程,NULL);60 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:在SQL SERVER中執(zhí)行上述插入語句。61 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用這些語句執(zhí)行后,學(xué)生信息表STUDENT的數(shù)據(jù)見下圖所示。注意:在INSERT INTO插入數(shù)據(jù)語句中,若某些列的值不確定,可以在該列位置使用空值(NULL),但主鍵、非空列不允許使用NULL。此外,若表中主鍵為代理鍵,它不需要出現(xiàn),因該值由DBMS自動提供62 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 在EMPLOYE
44、E表中插入多個員工信息數(shù)據(jù)列名類型鍵是否非空備注EmployeeNumberInt主鍵是代理鍵NameVarChar(30)否是DepartmentChar(35)否是缺省值“人力資源”PhoneChar(12)否否EmailVarChar(100)否是要求取值唯一63 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用四、數(shù)據(jù)更新四、數(shù)據(jù)更新SQL語句語句數(shù)據(jù)更新SQL語句可以對數(shù)據(jù)表中指定數(shù)據(jù)進(jìn)行修改處理,其語句基本格式如下:UPDATE SET = ,=.WHERE ;其中UPDATE 為數(shù)據(jù)更新語句的關(guān)鍵詞。為被更新數(shù)據(jù)的數(shù)據(jù)庫表。SET 關(guān)鍵詞指定對哪些列設(shè)定新值。WHERE 關(guān)鍵詞給出需要滿足的條件表達(dá)
45、式。64 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 在學(xué)生信息表STUDENT中,學(xué)生“楊賓”的原有Email數(shù)據(jù)為空,現(xiàn)需要修改為“”。其數(shù)據(jù)修改的SQL語句如下:UPDATE STUDENTSET Email= WHERE StudentName=楊賓;65 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:在SQL SERVER中執(zhí)行上述更新SQL語句。66 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用這個語句執(zhí)行后,學(xué)生信息表STUDENT的數(shù)據(jù)下圖所示。67 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 在下面的STUDENT表中,使用SQL語句將“劉亞”的出生日期和Email分別修改為“1995-05-15”、。68 電子科
46、技大學(xué)數(shù)據(jù)庫原理及應(yīng)用五、數(shù)據(jù)刪除五、數(shù)據(jù)刪除SQL語句語句數(shù)據(jù)刪除語句DELETE將從指定數(shù)據(jù)庫表中刪除滿足條件的數(shù)據(jù)行,其語句基本格式如下:DELETE FROM WHERE ;其中DELETE FROM為數(shù)據(jù)刪除語句的關(guān)鍵詞。為被刪除數(shù)據(jù)的數(shù)據(jù)庫表。WHERE 關(guān)鍵詞給出需要滿足的條件表達(dá)式。69 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 在學(xué)生信息表STUDENT中,刪除姓名為 “張亮”的學(xué)生數(shù)據(jù),其數(shù)據(jù)刪除的SQL語句如下:DELETE FROM STUDENTWHERE StudentName=張亮;70 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 在下面的STUDENT表中,刪除“張亮”信息。
47、71 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用3.4 SQL關(guān)系查詢語句一、一、 語句基本格式語句基本格式在SQL語言中,數(shù)據(jù)查詢語言 (DQL) 是負(fù)責(zé)對數(shù)據(jù)表進(jìn)行查詢訪問的語句,這是對數(shù)據(jù)庫訪問使用最多的一類SQL語句SELECT ALL|DISTINCT , INTO FROM , WHERE GROUP BY HAVING ORDER BY ASC | DESC ;72 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用二、從單個表讀取指定列二、從單個表讀取指定列例 學(xué)生信息表STUDENT原始數(shù)據(jù)如下圖所示。在數(shù)據(jù)庫中,最簡單的數(shù)據(jù)查詢操作就是從單個數(shù)據(jù)表中讀取指定列的數(shù)據(jù),其基本語句格式為:SELECT ,F(xiàn)ROM
48、 ;73 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用若要從STUDENT表中讀取學(xué)生的學(xué)號、姓名、專業(yè)等列數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下:SELECT StudentID,StudentName,MajorFROM STUDENT;74 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用如果希望從STUDENT表查詢所有列數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下:SELECT * FROM STUDENT;75 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用若希望從STUDENT表中查詢專業(yè)列(Major)數(shù)據(jù),其數(shù)據(jù)查詢SQL語句執(zhí)行結(jié)果如下:76 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用為了使讀取的數(shù)據(jù)過濾重復(fù)行,可以在查詢語句中加入DISTINCT關(guān)鍵字,其執(zhí)行
49、結(jié)果如下。77 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用三、從單個表讀取指定行三、從單個表讀取指定行SQL查詢語句也可以從一個數(shù)據(jù)表中讀取滿足條件的指定行數(shù)據(jù),即完成關(guān)系數(shù)據(jù)的元組選擇操作,其基本語句格式如下。SELECT *FROM WHERE ;例 從STUDENT表中查詢性別為“男”的學(xué)生數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下。SELECT *FROM STUDENTWHERE StudentGender=男;78 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。79 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用四、從單個表讀取指定行和列四、從單個表讀取指定行和列例 從STUDENT表中查詢性別為“
50、男”的學(xué)生學(xué)號、學(xué)生姓名、性別、專業(yè)數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWHERE StudentGender=男;在SQL查詢語句中,還可以從一個數(shù)據(jù)表中讀取指定行與指定列范圍內(nèi)的數(shù)據(jù),即同時完成關(guān)系數(shù)據(jù)的行列投影操作,其基本語句格式為:SELECT ,F(xiàn)ROM WHERE ;80 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。81 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用在WHERE子句中可以使用如下方式,指定范圍數(shù)據(jù)。1)使用BETWEEN.AND關(guān)鍵詞
51、來限定列值范圍,還可以使用關(guān)鍵詞LIKE與通配符來限定查詢條件。2)SQL查詢語言的常用通配符有下劃線(_)和百分號(%)。下劃線(_)通配符用于代表一個未指定的字符。百分號(%)通配符用于代表一個或多個未指定的字符。五、五、Where條件子句條件子句82 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 若要從STUDENT表中查詢出生日期在“1995-04-01”到“1996-04-01”的學(xué)生數(shù)據(jù)。其查詢SQL語句如下:SELECT *FROM STUDENTWHERE BirthDay BETWEEN 1995-04-01 AND 1996-04-01;該語句執(zhí)行后,其查詢操作結(jié)果見下圖所示。83 電子
52、科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 若要從STUDENT表中查詢郵箱域名為“”的學(xué)生數(shù)據(jù)。其數(shù)據(jù)查詢SQL語句如下:SELECT *FROM STUDENTWHERE Email LIKE %;該語句執(zhí)行后,其查詢操作結(jié)果見下圖所示。84 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 從學(xué)生數(shù)據(jù)表STUDENT中查詢“劉”姓的學(xué)生信息。85 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用說明: 在SQL查詢Where子句中,還可以使用多個條件表達(dá)式,并通過邏輯運算符(AND、OR、NOT)連接操作,進(jìn)一步限定結(jié)果集的數(shù)據(jù)范圍。以及使用IN或NOT IN關(guān)鍵詞限定列值范圍。例 從STUDENT表中查詢性別為“男”,并且專業(yè)為“
53、軟件工程”的學(xué)生數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWHERE Major=軟件工程 AND StudentGender=男;86 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。87 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用IN關(guān)鍵字使用: 從STUDENT表中查詢,使用IN關(guān)鍵字讀取”計算機(jī)應(yīng)用”專業(yè)的學(xué)生。其SQL語句如下所示。SELECT StudentID, StudentName, StudentGender, MajorFROM STUDENTWH
54、ERE Major IN (計算機(jī)應(yīng)用);88 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。89 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用六、對結(jié)果進(jìn)行排序六、對結(jié)果進(jìn)行排序 在SELECT查詢語句返回的結(jié)果中,行的順序是任意的。如果需要結(jié)果集排序,可以在SELECT語句中加入ORDER BY關(guān)鍵字。例 若要從STUDENT表中按學(xué)生出生日期降序輸出學(xué)生數(shù)據(jù),其數(shù)據(jù)查詢SQL語句如下。SELECT *FROM STUDENTORDER BY Birthday DESC;在默認(rèn)情況下,SQL查詢的結(jié)果集是按指定列值的升序排列。可以使用關(guān)鍵詞ASC和DESC選定排序是升序或降序。9
55、0 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。91 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用如果需要結(jié)果集按多個列排序,可以分別加入關(guān)鍵字ASC或DESC改變。例 若要將STUDENT表查詢數(shù)據(jù),首先按出生日期降序排列,然后按姓名升序排列,其數(shù)據(jù)查詢SQL語句如下:SELECT *FROM STUDENTORDER BY Birthday DESC , StudentName ASC;92 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐練習(xí): 從學(xué)生數(shù)據(jù)表STUDENT中查詢信息,分別按姓名、出生日期升序排列輸出。93 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用七、七、SQL內(nèi)置函數(shù)和計算內(nèi)置函數(shù)和計算
56、在SQL語言中,可以使用函數(shù)方式對SELECT查詢結(jié)果集數(shù)據(jù)進(jìn)行處理。這些函數(shù)可以是DBMS系統(tǒng)所提供的內(nèi)置函數(shù) ,也是用戶根據(jù)需要自定義函數(shù)。典型DBMS系統(tǒng)提供的內(nèi)置函數(shù)主要有以下幾類:聚合函數(shù)算術(shù)函數(shù)字符串函數(shù)日期時間函數(shù)數(shù)據(jù)類型轉(zhuǎn)換函數(shù)94 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 若要統(tǒng)計STUDENT表中的學(xué)生人數(shù),在SELECT語句中可以使用COUNT()函數(shù)來計算,其查詢SQL語句如下:SELECT COUNT(*) AS 學(xué)生人數(shù)FROM STUDENT;95 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 若要找出STUDENT表中年齡最大和年齡最小的學(xué)生出生日期,其查詢SQL語句如下:SELECT
57、 Min(Birthday) AS 最大年齡,Max(Birthday) AS 最小年齡FROM STUDENT;96 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用例 若要計算出STUDENT表中各個學(xué)生的Email字符串長度,其查詢SQL語句如下:SELECT StudentID, StudentName, Email, LEN( Email) AS 郵箱長度FROM STUDENT;97 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用八、八、SQL內(nèi)置函數(shù)和分組內(nèi)置函數(shù)和分組在SQL語言中,可在查詢結(jié)果集進(jìn)行分組數(shù)據(jù)統(tǒng)計。這是通過在SELECT語句中加入Group By子語句來實現(xiàn)。例 若要分專業(yè)統(tǒng)計STUDENT表中的學(xué)
58、生人數(shù)。在SELECT語句中可以使用GROUP BY分組子句完成統(tǒng)計,其查詢SQL語句如下:SELECT Major AS 專業(yè), COUNT(StudentID) AS 學(xué)生人數(shù)FROM STUDENTGROUP BY Major;98 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。99 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用在分組統(tǒng)計SQL查詢語句中,還可以使用HAVING子句限定分組統(tǒng)計的條件。例 若要分專業(yè)統(tǒng)計STUDENT表中男生人數(shù),但限定只顯示人數(shù)大于2的人數(shù),其查詢SQL語句如下:SELECT Major AS 專業(yè), COUNT(StudentID) AS 學(xué)
59、生人數(shù)FROM STUDENTWHERE StudentGender=男GROUP BY MajorHAVING COUNT(*)2;100 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用實踐操作:執(zhí)行上述SQL SELECT語句。101 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用Group by與having理解group by 有一個原則,就是 select 后面的所有列中,沒有使用聚合函數(shù)的列,必須出現(xiàn)在 group by 后面或者包含在having 后的聚合函數(shù)里。where 子句的作用是在對查詢結(jié)果進(jìn)行分組前將不符合where條件的行去掉,即在分組之前過濾數(shù)據(jù)條件中不能包含聚合函數(shù)。 having 子句的作用是篩選
60、滿足條件的組即在分組之后過濾數(shù)據(jù)條件中經(jīng)常包含聚合函數(shù)。GROUP BY 是分組查詢, 一般 GROUP BY 是和聚合函數(shù)配合使用102 電子科技大學(xué)數(shù)據(jù)庫原理及應(yīng)用注意:除了使用GROUP BY語句外,列的名稱是不允許和內(nèi)置函數(shù)一起混合使用。以下語句不規(guī)范。SELECT MaxHours, SUM(MaxHours)FROMPROJECTWHEREProjectID = 1200;DBMS產(chǎn)品在使用內(nèi)置函數(shù)的方式也不一樣。一般來說,內(nèi)置函數(shù)是不能用于WHERE子句中的。以下語句不規(guī)范:SELECT ProjectID, MaxHoursFROMPROJECTWHEREMaxHours 40
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年科信大隊考試題及答案
- 2025年海底撈培訓(xùn)考試題及答案
- 2025年靜脈營養(yǎng)考試試題及答案
- 烤瓷爐操作規(guī)程
- 2025年宣傳講解崗面試題及答案
- 2025年論語六則測試題及答案
- 2025年社工宣傳崗面試題及答案
- 護(hù)士條例制度復(fù)習(xí)測試附答案
- 2025年南充初三英語試題及答案
- 2025年地址選址面試試題及答案
- 13詩第十二-整本書閱讀系列《經(jīng)典常談》名著閱讀與練習(xí)
- 小學(xué)美術(shù)-湘美版四年級下冊第10課中國龍教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 一年級下冊勞技教案
- 部編版四年級語文下冊第4單元大單元整體教學(xué)作業(yè)設(shè)計(教案配套)
- 大一邏輯學(xué)全部
- 游戲法緩解小班幼兒入園焦慮的個案研究
- 2023年包頭輕工職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)題庫及答案解析
- 地下室頂板裂縫防水處理方案(完整資料)
- 宮頸錐切日間手術(shù)臨床路徑(婦科)及表單
- GB/T 23111-2008非自動衡器
- GB/T 18877-2020有機(jī)無機(jī)復(fù)混肥料
評論
0/150
提交評論