第3章-结构化查询语言课件.ppt

上传人(卖家):三亚风情 文档编号:3526307 上传时间:2022-09-11 格式:PPT 页数:170 大小:3.98MB
下载 相关 举报
第3章-结构化查询语言课件.ppt_第1页
第1页 / 共170页
第3章-结构化查询语言课件.ppt_第2页
第2页 / 共170页
第3章-结构化查询语言课件.ppt_第3页
第3页 / 共170页
第3章-结构化查询语言课件.ppt_第4页
第4页 / 共170页
第3章-结构化查询语言课件.ppt_第5页
第5页 / 共170页
点击查看更多>>
资源描述

1、1 数据库原理及应用 学习创建数据库结构的基本SQL语句 学习将数据添加到数据库的基本SQL语句 学习单表的基本SQL查询语句 学习多表关联的SQL查询语句 使用SQL语句修改与删除数据库表中数据 使用SQL语句修改与删除数据库表和约束 学习使用基本SQL语句创建和使用视图2 数据库原理及应用一、基本概念一、基本概念3.1 SQL简介SQL(Structured Query Language,结构化查询语言)它是一种对数据库进行访问与操作的数据子语言。它嵌入到编程语言(如JAVA、C#等)中执行或在DBMS工具中执行。二、二、SQL发展发展w 20世纪70年代由IBM公司开发w 1986 AN

2、SI的数据库委员会批准了SQL作为关系型数据库语言的美国标准。w 1987年国际标准化组织(ISO)将其采纳为国际标准SQL86。w 1989年更新成为国际标准SQL-89w 1992年更新成为国际标准SQL-92(或称SQL2)w 2019年更新成为国际标准SQL-99(或称SQL3)w 2019年更新成为国际标准SQL:20193 数据库原理及应用三、三、SQL应用情况应用情况绝大多数主流的关系型数据库管理系统采用了SQL语言标准wOraclewSybasewDB2wMicrosoft SQL ServerwAccesswMySqlw。其中一些数据库管理系统对SQL语句进行了再开发和扩展,

3、如Sybase、Microsoft SQL Server将操作语言扩展为Transaction-SQL;Oracle将操作语言扩展为PL/SQL。4 数据库原理及应用四、四、SQL能做什么?能做什么?w SQL 可从数据库取回数据w SQL 可在数据库中插入新的纪录w SQL 可更新数据库中的数据w SQL 可从数据库删除记录w SQL 可创建新数据库w SQL 可在数据库中创建新表w SQL 可在数据库中创建存储过程w SQL 可在数据库中创建视图w SQL 可以设置表、存储过程和视图的权限 数据库DBMS(执行SQL)应用程序返回结果提交SQL5 数据库原理及应用五、五、SQL语言语句类别

4、语言语句类别1.数据操纵语言数据操纵语言(Data Manipulation Language,DML)是SQL语言中用于查询和增删修改表数据的语句,主要语句如下:w SELECT-从数据库表中获取数据w UPDATE-更新数据库表中的数据w DELETE-从数据库表中删除数据w INSERT-向数据库表中插入数据6 数据库原理及应用2.数据定义语言数据定义语言(Data Definition Language,DDL)是SQL语言中用于创建或删除表。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。主要语句如下:w CREATE DATABASE-创建新数据库w ALTER DAT

5、ABASE-修改数据库 w CREATE TABLE-创建新表 w ALTER TABLE-变更(改变)数据库表w DROP TABLE-删除表w CREATE INDEX-创建索引(搜索键)w DROP INDEX-删除索引 7 数据库原理及应用六、六、SQL语言程序语言程序创建数据库表wCUSTOMERwCOURSEwENROLLMENTDDL8 数据库原理及应用插入数据库表CUSTOMERDML9 数据库原理及应用七、示例数据库七、示例数据库部门(DEPARTMENT)雇员(EMPLOYEE)项目(PROJECT)任务(ASSIGNMENT)工程项目管理10 数据库原理及应用列名类型键是

6、否非空备注DepartmentNameText(35)主键是部门名称BudgetCodeText(30)否是预算编号OfficeNumberText(15)否是办公室编号PhoneText(12)否是办公电话部门(DEPARTMENT)表结构1.数据库表结构11 数据库原理及应用列名类型键是否非空备注EmployeeNumberInt主键是代理键,雇员编号FirstNameText(30)否是名LastNameText(30)否是姓DepartmentText(35)外键是部门PhoneText(12)否是办公电话EmailText(100)否是邮件雇员(EMPLOYEE)表结构12 数据库原

7、理及应用列名类型键是否非空备注ProjectIDInt主键是项目编号NameText(30)否是项目名称DepartmentText(35)外键是部门MaxHoursNumber否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期项目(PROJECT)表结构13 数据库原理及应用列名类型键是否非空备注ProjectIDInt主键,外键是复合键,项目编号EmployeeNumberInt主键,外键是复合键,雇员编号HoursWorkedNumeric(6,2)否否工作时数任务(ASSIGNMENT)表结构14 数据库原理及应用列名类型键是否非空备注

8、DepartmentNameText(35)主键是部门名称BudgetCodeText(30)否是预算编号OfficeNumberText(15)否是办公室编号PhoneText(12)否是办公电话列名类型键是否非空备注EmployeeNumberInt主键是代理键,雇员编号FirstNameText(30)否是名LastNameText(30)否是姓DepartmentText(35)外键是部门PhoneText(12)否是办公电话EmailText(100)否是邮件参照完整性约束DEPARTMENT表EMPLOYEE表2.数据库表联系15 数据库原理及应用参照完整性约束16 数据库原理及应

9、用列名类型键是否非空备注DepartmentNameText(35)主键是部门名称BudgetCodeText(30)否是预算编号OfficeNumberText(15)否是办公室编号PhoneText(12)否是办公电话DEPARTMENT表结构列名类型键是否非空备注ProjectIDInt主键是项目编号NameText(30)否是项目名称DepartmentText(35)外键是部门MaxHoursNumeric(6,2)否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期PROJECT表结构参照完整性约束17 数据库原理及应用参照完整性约束

10、18 数据库原理及应用列名类型键是否非空备注ProjectIDInt主键是项目编号NameText(30)否是项目名称DepartmentText(35)外键是部门MaxHoursNumber否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期PROJECT表结构列名类型键是否非空备注ProjectIDInt主键,外键是复合键,项目编号EmployeeNumberInt主键,外键是复合键,雇员编号HoursWorkedNumeric(6,2)否否工作时数ASSIGNMENT表结构参照完整性约束19 数据库原理及应用PROJECT表数据ASSIGN

11、MENT表数据20 数据库原理及应用3.业务规则w 如果要删除EMPLOYEE中的某个行,而该行连接到ASSIGNMENT,则禁止对EMPLOYEE行执行删除操作w 如果删除了PROJECT中的某个行,则ASSIGNMENT中连接到这个已删除的PROJECT行的所有行也将随之被删除w 如果删除了EMPLOYEE表中的某个行(例如一个雇员已调离),就必须有人接替这个雇员工作。应用程序需要在删除原雇员前,把该雇员的任务重新分配给另一个雇员。w 如果删除了PROJECT表中的某个行,就取消这个项目,因此不必维护这个项目的相关记录。业务规则含义21 数据库原理及应用一、一、SQL语言语言 DDL语句组

12、成语句组成数据定义语言(Data Definition Language,DDL)是SQL语言中用于创建或删除表。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。主要语句如下:w CREATE DATABASE-创建新数据库w ALTER DATABASE-修改数据库 w CREATE TABLE-创建新表 w ALTER TABLE-变更(改变)数据库表w DROP TABLE-删除表w CREATE INDEX-创建索引(搜索键)w DROP INDEX-删除索引 3.2 用于数据定义的SQL语句22 数据库原理及应用二、二、CREATE TABLE语句语句1.语句基本格式CR

13、EATE TABLE NewTableName(ColumnName DataType OptionalConstraint,ColumnName DataType OptionalConstraint,ColumnName DataType OptionalConstraint,);列名关键字表名列类型列约束23 数据库原理及应用例:雇员数据库表EMPLOYEE创建CREATE TABLE EMPLOYEE(EmployeeNumber Int,FirstName Char(30),LastName Char(30),Department Char(35),Phone Char(12),Em

14、ailVarChar(100);24 数据库原理及应用2.列约束条件CREATE TABLE NewTableName(ColumnName DataType OptionalConstraint,ColumnName DataType OptionalConstraint,ColumnName DataType OptionalConstraint,);列约束子句 w PRIMARY KEY主键w NOT NULL非空值w NULL空值w UNIQUE值唯一w CHECK有效性检查w DEFAULT缺省值25 数据库原理及应用CREATE TABLE DEPARTMENT(Departmen

15、tName Char(35)PRIMARY KEY,BudgetCode Char(30)NOT NULL,OfficeNumber Char(15)NOT NULL,Phone Char(12)NOT NULL );例1:部门数据库表DEPARTMENT创建列名类型键是否非空备注DepartmentNameChar(35)主键是BudgetCodeChar(30)否是OfficeNumberChar(15)否是PhoneChar(12)否是26 数据库原理及应用DBMS执行执行SQL语句语句SQL Server执行sql语句27 数据库原理及应用CREATE TABLE EMPLOYEE(E

16、mployeeNumber Int PRIMARY KEY IDENTITY(1,1),FirstName Char(30)NOT NULL,LastName Char(30)NOT NULL,Department Char(35)NOT NULL DEFAULT 人力资源,Phone Char(12)NULL,EmailVarChar(100)NOT NULL UNIQUE );例2:雇员数据库表EMPLOYEE创建列名类型键是否非空备注EmployeeNumberInt主键是代理键FirstNameChar(30)否是LastNameChar(30)否是DepartmentChar(35)

17、否是缺省值“人力资源”PhoneChar(12)否否EmailVarChat(100)否是要求取值唯一28 数据库原理及应用CREATE TABLE PROJECT(ProjectID Int PRIMARY KEY,Name Char(30)NOT NULL,Department Char(35)CHECK(Department IN(财务,销售,人事),MaxHours Numeric(6,2)NOT NULL DEFAULT 100,StartDate DateTime NULL,EndDate DateTime NULL );练习:项目数据库表PROJECT创建列名类型键是否非空备注P

18、rojectIDInt主键是NameChar(30)否是DepartmentChar(35)否是MaxHoursNumeric(6,2)否是缺省值“100”StartDateDateTime否否EndDateDateTime否否29 数据库原理及应用三、三、SQL语言的数据类型语言的数据类型1.基本数据类型w 字符:CHAR、VARCHAR、TEXTw 整数:SMALLINT、INTEGERw 浮点数:NUMBER(n,d)、FLOAT(n,d)w 日期:DATE、DATETIMEw 货币:MONEY2.不同数据库所支持数据类型见P98页,图3-5(a)所示SQL Server2019的数据类

19、型见P99页,图3-5(b)所示ORACLE Database11g的数据类型见P99页,图3-5(c)所示MySQL的数据类型30 数据库原理及应用四、使用表约束定义主键四、使用表约束定义主键CREATE TABLE DEPARTMENT(DepartmentName Char(35)NOT NULL,BudgetCode Char(30)NOT NULL,OfficeNumber Char(15)NOT NULL,Phone Char(12)NOT NULL,CONSTRAINTDEPARTMENT_PK PRIMARY KEY(DepartmentName);使用表约束定义主键的优点:w

20、 便于定义复合主键w 可命名主键约束w 便于定义代理键31 数据库原理及应用例1:项目数据库表PROJECT创建CREATE TABLE PROJECT(ProjectID Int NOT NULL AUTO_INCREMENT,Name Char(30)NOT NULL,Department Char(35)NOT NULL,MaxHours Numeric(6,2)NOT NULL DEFAULT 100,StartDate DateTime NULL,EndDate DateTime NULL,CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID);32 数

21、据库原理及应用MySQL 执行sql语句33 数据库原理及应用例2:任务分配数据库表ASSIGNMENT创建CREATE TABLE ASSIGNMENT(ProjectID Int NOT NULL,EmployeeNumberIntNOT NULL,HoursWorked Numeric(6,2)NULL,CONSTRAINTASSIGNMENT_PK PRIMARY KEY(ProjectID,EmployeeNumber);34 数据库原理及应用列名类型键是否非空备注DepartmentNameText(35)主键是OfficeNumberText(15)否是PhoneText(12)

22、否是列名类型键是否非空备注EmployeeNumberInt主键是FirstNameText(30)否是LastNameText(30)否是DepartmentText(35)外键是PhoneText(12)否否EmailText(100)否否五、使用表约束定义外键五、使用表约束定义外键参照完整性约束DEPARTMENT表EMPLOYEE表35 数据库原理及应用CREATE TABLE EMPLOYEE(EmployeeNumber Int NOT NULL AUTO_INCREMENT,FirstName Char(30)NOT NULL,LastName Char(30)NOT NULL,

23、Department Char(35)NOT NULL DEFAULT 人力资源,Phone Char(12)NULL,EmailVarChar(100)NOT NULL UNIQUE,CONSTRAINTEMPLOYEE_PKPRIMARY KEY(EmployeeNumber),CONSTRAINTEMP_DEPART_FK FOREIGN KEY(Department)REFERENCES DEPARTMENT(DepartmentName)ON UPDATE CASCADE );36 数据库原理及应用列名类型键是否非空备注DepartmentNameText(35)主键是部门名称Bud

24、getCodeText(30)否是预算编号OfficeNumberText(15)否是办公室编号PhoneText(12)否是办公电话DEPARTMENT表结构列名类型键是否非空备注ProjectIDInt主键是项目编号NameText(30)否是项目名称DepartmentText(35)外键是部门MaxHoursNumeric(6,2)否是最长工期StartDateDateTime否否开始日期EndDateDateTime否否结束日期PROJECT表结构参照完整性约束编写实现下表关联的参照完整性约束SQL语句37 数据库原理及应用CREATE TABLE PROJECT(ProjectID

25、 Int NOT NULL AUTO_INCREMENT,Name Char(30)NOT NULL,Department Char(35)NOT NULL,MaxHours Numeric(6,2)NOT NULL DEFAULT 100,StartDate DateTime NULL,EndDate DateTime NULL,CONSTRAINTPROJECT_PKPRIMARY KEY(ProjectID),CONSTRAINTPROJ_DEPART_FK FOREIGN KEY(Department)REFERENCES DEPARTMENT(DepartmentName)ON UP

26、DATE CASCADE );38 数据库原理及应用列名类型键是否非空备注ProjectIDInt主键是NameText(30)否是DepartmentText(35)外键是MaxHoursNumber否是StartDateDateTime否否EndDateDateTime否否PROJECT表结构列名类型键是否非空备注ProjectIDInt主键,外键是EmployeeNumberInt主键,外键是HoursWorkedNumeric(6,2)否否ASSIGNMENT表结构参照完整性约束编写实现下表关联的参照完整性约束39 数据库原理及应用列名类型键是否必需备注ProjectIDInt主键,外

27、键是EmployeeNumberInt主键,外键是HoursWorkedNumeric(6,2)否否ASSIGNMENT表结构参照完整性约束列名类型键是否必需备注EmployeeNumberInt主键是FirstNameText(30)否是LastNameText(30)否是DepartmentText(35)外键是PhoneText(12)否是EmailText(120)否是EMPLOYEE表40 数据库原理及应用CREATE TABLE ASSIGNMENT(ProjectID Int NOT NULL,EmployeeNumber IntNOT NULL,HoursWorked Nume

28、ric(6,2)NULL,CONSTRAINTASSIGNMENT_PK PRIMARY KEY(ProjectID,EmployeeNumber),CONSTRAINTASSIGN_PROJ_FK FOREIGN KEY(ProjectID)REFERENCES PROJECT(ProjectID)ON UPDATE NO ACTIONON DELETE CASCADE,CONSTRAINTASSIGN_EMP_FK FOREIGN KEY(EmployeeNumber)REFERENCES EMPLOYEE(EmployeeNumber)ON UPDATE NO ACTIONON DELE

29、TE NO ACTION );41 数据库原理及应用一、一、SQL的数据操纵语句的数据操纵语句3.3 插入关系数据的SQL语句w SELECT-从数据库表中获取数据w UPDATE-更新数据库表中的数据w DELETE-从数据库表中删除数据w INSERT-向数据库表中插入数据二、二、SQL的插入数据语句的插入数据语句1.语句基本格式INSERT INTO TableName VALUES(列值,列值,列值)42 数据库原理及应用例1:部门数据库表DEPARTMENT插入记录数据INSERT INTO DEPARTMENT VALUES(Administration,BC-100-10,BLD

30、G01-300,360-285-8100);说明:如果DBMS提供了代理键功能,则在插入具有代理键的数据库表时,该项不需要放入值。例2:项目数据库表PROJECT插入记录数据,因ProjectID是代理键,插入数据语句为INSERT INTO PROJECT VALUES(2019 Q3 Product Plan,Marketing,135.00,10-MAY-05 15-JUN-05);例3:如果缺少某些列,那么插入语句应该列出提供数据的列名INSERT INTO PROJECT(Name,Department,MaxHours,StartDate)VALUES(2019 Q4 Portfo

31、lio Analysis,Finance,140.00,2019-10-05);43 数据库原理及应用例4:部门数据库表DEPARTMENT插入多条记录数据INSERT INTO DEPARTMENT VALUES(Administration,BC-100-10,BLDG01-300,360-285-8100);INSERT INTO DEPARTMENT VALUES(Legal,BC-200-10,BLDG01-200,360-285-8200);INSERT INTO DEPARTMENT VALUES(Accounting,BC-300-10,BLDG01-100,360-285-8

32、300);INSERT INTO DEPARTMENT VALUES(Finance,BC-400-10,BLDG01-140,360-285-8400);INSERT INTO DEPARTMENT VALUES(Human Resources,BC-500-10,BLDG01-180,360-285-8500);INSERT INTO DEPARTMENT VALUES(Production,BC-600-10,BLDG02-100,360-287-8600);INSERT INTO DEPARTMENT VALUES(Marketing,BC-700-10,BLDG02-200,360-

33、287-8700);INSERT INTO DEPARTMENT VALUES(Info Systems,BC-800-10,BLDG02-270,360-287-8800);说明:为了使INSERT语句起作用,必须为所有NOT NULL列提供值44 数据库原理及应用一、一、SQL关系查询语句关系查询语句3.4 SQL关系查询语句1.语句基本格式SELECT ColumnNames FROM TableNameWHERE SomeConditionExits;2.从单个表读取指定列45 数据库原理及应用例 从PROJECT表中查询读取Name,Department,MaxHours三列数据46

34、 数据库原理及应用 SQL Server查询操作结果SELECT Name,Department,MaxHours FROM PROJECT;DBC-e03-Ch03-SQLQuery01 SQL 查询语句如下:47 数据库原理及应用 MYSQL查询操作结果48 数据库原理及应用例:从项目数据库表RPOJECT提取Department列SELECT Department FROM PROJECT;DBC-e03-Ch03-SQLQuery03其结果为:说明:SQL SELECT语句执行后的结果也应该是一个关系。49 数据库原理及应用为了使读取的数据删除重复行,可以在查询语句中加入DISTINC

35、T关键字:SELECT DISTINCT Department FROM PROJECT;DBC-e03-Ch03-SQLQuery04其结果为:50 数据库原理及应用3.从单个表读取指定行例 从PROJECT表中查询读取Finance部门资助的项目列表51 数据库原理及应用PROJECT表中查询的SQL SELECT语句如下:SELECT ProjectID,Name,Department,MaxHours,StartDate,EndDateFROM PROJECTWHERE Department=Finance;DBC-e03-Ch03-SQLQuery0552 数据库原理及应用说明:在S

36、ELECT关键字后使用(*),可以提取所有列SELECT*FROM PROJECTWHERE Department=Finance;DBC-e03-Ch03-SQLQuery0653 数据库原理及应用说明:在WHERE子句中放置更多条件,可以提取指定范围数据。SELECT*FROM PROJECTWHERE Department=Finance AND MaxHours 135;DBC-e03-Ch03-SQLQuery0854 数据库原理及应用4.从单个表读取指定行和指定列例1 从EMPLOYEE表中查询读取Accounting部门所有雇员的FirstName,LastName,Phone和

37、Department值。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE Department=Accounting;DBC-e03-Ch03-SQLQuery0955 数据库原理及应用例2 从EMPLOYEE表中查询,使用OR关键字读取在Accounting部门工作或电话号码为360-285-8310的雇员。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE Department=Accounting OR Phone=360-285-8410;Ch0

38、3-SQLQuery1156 数据库原理及应用例3 从EMPLOYEE表中查询,使用IN关键字读取Accounting、Finance、Marketing部门工作的雇员。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE Department IN(Accounting,Finance,Marketing);Ch03-SQLQuery1257 数据库原理及应用例4 从EMPLOYEE表中查询,使用NOT IN关键字读取不在Accounting、Finance、Marketing部门工作的雇员。SELECT FirstName

39、,LastName,Phone,DepartmentFROM EMPLOYEEWHERE Department NOT IN(Accounting,Finance,Marketing);Ch03-SQLQuery1358 数据库原理及应用5.在WHERE子句中指定范围、使用通配符 例1 从EMPLOYEE表中查询,使用BETWEEN指定范围。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE EmployeeNumber BETWEEN 2 AND 5;Ch03-SQLQuery1459 数据库原理及应用SELECT Fir

40、stName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE EmployeeNumber BETWEEN 2 AND 5;等同于如下查询SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE EmployeeNumber=2 AND EmployeeNumber=5;Ch03-SQLQuery14-b60 数据库原理及应用例2 从PROJECT表中查询,使用LIKE和通配符_指定范围。SELECT*FROM PROJECTWHERE Name LIKE 2019 Q_ Portfolio

41、 Analysis;Ch03-SQLQuery1561 数据库原理及应用例3 从EMPLOYEE表中查询,使用LIKE和%代替一个或任意多个字符。SELECT*FROM EMPLOYEEWHERE Phone LIKE 360-287-%;Ch03-SQLQuery1762 数据库原理及应用例4 从EMPLOYEE表中查询,使用IS NULL关键词在WHERE子句中查找电话号码含有Null的行。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEWHERE Phone IS NULL;Ch03-SQLQuery1963 数据库原理及应用

42、6.对结果进行排序例1 从EMPLOYEE表中查询,使用ORDER BY关键词对结果行进行排序。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEORDER BY Department;Ch03-SQLQuery20 在SELECT查询语句返回的结果中,行的顺序是任意的。如果需要结果集排序,可以在SELECT语句中加入ORDER BY关键字。64 数据库原理及应用升序排序65 数据库原理及应用例2 从EMPLOYEE表中查询,使用DESC关键词对结果集进行降序排序。SELECT FirstName,LastName,Phone,Dep

43、artmentFROM EMPLOYEEORDER BY Department DESC;Ch03-SQLQuery21 默认情况,在SELECT的ORDER BY查询结果,是升序排序。如果需要结果集降序排序,可以加入关键字DESC改变。66 数据库原理及应用降序排序67 数据库原理及应用例3 从EMPLOYEE表中查询,首先对Department列降序排序,然后再对LastName列按升序排序。SELECT FirstName,LastName,Phone,DepartmentFROM EMPLOYEEORDER BY Department DESC,LastName ASC;Ch03-SQ

44、LQuery22 如果需要结果集按多个列排序,可以分别加入关键字ASC或DESC改变。68 数据库原理及应用多列排序69 数据库原理及应用7.SQL内置函数和计算例1 从PROJECT表中查询,使用COUNT函数统计项目数量。SELECT COUNT(*)FROM PROJECT;Ch03-SQLQuery23 SQL允许基于表中的数据计算。SQL包含5个内置函数:COUNT、SUM、AVG、MAX、MIN。这些函数都针对SELECT语句的结果集进行操作。70 数据库原理及应用例2 从PROJECT表中查询,使用COUNT函数统计行数时,加入自定义列名。SELECT COUNT(*)AS Nu

45、mberofProjectsFROM PROJECT;Ch03-SQLQuery24注意:上面结果没有列名。可以使用AS关键字赋予列名。71 数据库原理及应用例3 从PROJECT表中查询,使用MIN、MAX、SUM函数分别给出最小项目工时、最大项目工时、总工时统计值。SELECT MIN(MaxHours)AS MinmumMaxHours,MAX(MaxHours)AS MaximumMaxHours,SUM(MaxHours)AS TotalMaxHoursFROM PROJECTWHERE ProjectID=1200;Ch03-SQLQuery2772 数据库原理及应用例4 从PRO

46、JECT表中查询,分别给出每个项目的最大成本。假定雇员的工资是18.5美元/每工时。SELECT ProjectID,Name,MaxHours,(18.5*MaxHours)AS MaxProjectCostFROM PROJECT;Ch03-SQLQuery2873 数据库原理及应用注意:除了后面将提到的GROUP BY语句外,列的名称是不允许和内置函数一起混合使用。以下语句不规范。SELECT MaxHours,SUM(MaxHours)FROM PROJECTWHERE ProjectID=1200;Ch03-SQLQuery29 DBMS产品在使用内置函数的方式也不一样。一般来说,内

47、置函数是不能用于WHERE子句中的。以下语句不规范:SELECT ProjectID,MaxHoursFROM PROJECTWHERE MaxHours 1;Ch03-SQLQuery32说明:可以对形成的组使用HAVING子句应用某些条件,从而进一步限制所得结果。77 数据库原理及应用运行结果78 数据库原理及应用例3:从EMPLOYEE表中查询,同时使用WHERE子句和HAVING子句条件查询EmployeeNumber小于或等于6的雇员,然后形成分组,最后应用HAVING条件,进行统计。操作语句:SELECT Department,Count(*)AS NumberofEmployee

48、FROM EMPLOYEEWHERE EmployeeNumber 1;Ch03-SQLQuery33说明:在GROUP BY语句中,可以同时使用WHERE子句和HAVING子句进行分组条件统计。79 数据库原理及应用运行结果80 数据库原理及应用9.使用子查询处理多个表例1 想知道在某个任务中,工作时间超过50小时的所有雇员姓名。雇员名称存储在EMPLOYEE表中,但他们的工作时间则存储在ASSIGNMENT表中。SELECT FirstName,LastNameFROM EMPLOYEEWHERE EmployeeNumber IN(SELECT DISTINCT EmployeeNumb

49、er FROM ASSIGNMENTWHERE HoursWorked 50);Ch03-SQLQuery36 有时候,需要从多个表进行查询,才能获得所需信息。81 数据库原理及应用运行结果82 数据库原理及应用例2:查询Accounting部门的单个项目中,工作时间超过40小时的雇员姓名。操作语句:SELECT FirstName,LastNameFROM EMPLOYEEWHERE EmployeeNumber IN (SELECT DISTINCT EmployeeNumber FROM ASSIGNMENT WHERE HoursWorked40 AND ProjectID IN (S

50、ELECT ProjectIDFROM PROJECTWHERE Department=Accounting);Ch03-SQLQuery39说明:子查询通过嵌套可以扩展到3层以上。83 数据库原理及应用运行结果84 数据库原理及应用10.使用连接查询多个表例1 从EMPLOYEE表和ASSIGNMENT表关联查询,得到雇员任务工时列表。SELECT FirstName,LastName,HoursWorkedFROM EMPLOYEE,ASSIGNMENTWHERE EMPLOYEE.EmployeeNumber=ASSIGNMENT.EmployeeNumber;Ch03-SQLQuery

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第3章-结构化查询语言课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|