【教学课件】第三章关系数据库标准语言-SQL.ppt
《【教学课件】第三章关系数据库标准语言-SQL.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章关系数据库标准语言-SQL.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 关系数据库标准语言SQLSQL3.1 SQLSQL概述3.2 数据定义3.3 查询3.4 数据更新3.5 视图03.1 SQL概述关系数据库的标准语言结构化查询语言(Structured Query Language)(Structured Query Language),简称SQL。它是一种非过程化的、功能极强的、通用的数据库语言,几乎所有的关系数据库管理系统都支持SQL。1.SQL数据库的体系结构要点 SQL语言支持关系数据库三级模式结构:13.1 SQL概述基本表1 1基本表2 2基本表3 3基本表4 4视图2 2视图1 1存储文件1 1存储文件2 2SQLSQL用户外模式模式存
2、储模式23.1 SQL概述(1)(1)一个SQLSQL数据库是表的汇集。它用一个或多个SQLSQL模式定义。一个SQLSQL模式是表和授权的静态定义。(2)(2)一个SQLSQL表由行的集合构成,一行是列的序列,每列对应一个数据项。(3)(3)一个表可以是一个基本表或是一个视图。基本表是实际存储在数据库中的表,而视图是由基本表或其他视图构成的表的定义,称为虚表。(4)(4)一个基本表可以存储在一个或多个存储文件中,一个存储文件也可存放一个或多个基本表。(5)(5)用户可以用SQLSQL语句对基本表和视图进行查询等操作,视图和基本表在用户看来都是关系(即表格)。(6)(6)SQLSQL用户可以是
3、应用程序,也可以是终端用户。SQLSQL语句可嵌入主语言中使用,也可独立使用。33.1 SQL概述2.SQL的组成 主要由四部分组成:数据定义。这部分也称为“SQL DDL”,用于定义SQL模式、基本表、视图和索引。数据操纵。这部分也称为“SQL DML”,分为数据查询和数据更新两类。数据控制。这部分包括对基本表和视图的授权,完整性规则的描述,事务控制等。嵌入式SQL的使用规定。43.1 SQL概述3.SQL的特点 SQL的语言简洁,易学易用 SQL是一种非过程化语言 SQL采用面向集合的操作方式 SQL具有十分灵活和极强的查询功能 SQL以同一种语法结构提供两种使用方法5第三章 关系数据库标
4、准语言SQLSQL3.1 SQLSQL概述3.2 数据定义3.3 查询3.4 数据更新3.5 视图63.2 数据定义1.定义、删除、修改基本表 SQL数据定义功能包括:定义基本表(创建、删除、修改三个命令)定义视图(创建、删除,不提供修改,因为是个虚表)定义索引(创建、删除,不能修改,因为依附于基本表)定义基本表 CREATE TABLECREATE TABLE(列级完整性约束 ,列级完整性约束 ,);73.2 数据定义修改基本表 ALTER TABLEALTER TABLE ADDADD 完整性约束 DROPDROP MODIFYMODIFY ;删除基本表 DROP TABLEDROP TA
5、BLE;83.2 数据定义2.建立与删除索引SQL支持用户根据应用环境需要,在基本表上建立一个或多个索引,以提供各种存取路径,加快查找速度。建立索引 CREATE CREATE UNIQUEUNIQUE CLUSTERCLUSTER INDEX INDEX ON ON(,);删除索引 DROP INDEXDROP INDEX 93.2 数据定义【例1】建立一个学生关系StudentStudent,由学号SnoSno、姓名SnameSname、性别SsexSsex、年龄SageSage、所在系SdeptSdept五个属性组成,其中学号不能为空且值是唯一的。解:CREATE TABLECREATE
6、 TABLE StudentStudent (SnoSno CHAR(5)NOT NULL UNIQUE,CHAR(5)NOT NULL UNIQUE,SnameSname CHAR(20),CHAR(20),SsexSsex CHAR(2),CHAR(2),SageSage INT,INT,SdeptSdept CHAR(15);CHAR(15);103.2 数据定义【例2】向StudentStudent表增加“入学时间”列,其数据类型为日期型。解:ALTER TABLEALTER TABLE StudentStudent ADD DATE;ADD DATE;【例3】删除关于学号必须取唯一值
7、的约束。解:ALTER TABLEALTER TABLE StudentStudent DROP UNIQUE(DROP UNIQUE(SnoSno););【例4】为StudentStudent表按学号升序建立唯一索引。解:CREATE UNIQUE INDEXCREATE UNIQUE INDEX Stusno Stusno ONON Student Student(SnoSno););【例5】删除StudentStudent表的StusnoStusno索引。解:DROP INDEXDROP INDEX Stusno;Stusno;11第三章 关系数据库标准语言SQLSQL3.1 SQLSQ
8、L概述3.2 数据定义3.3 查询3.4 数据更新3.5 视图123.3 查询数据库查询是数据库的核心操作,SQL语句提供了SELECT语句进行数据库的查询。该语句具有灵活的使用方式和丰富的功能,尤其是目标列表达式和条件表达式,可有多种选择形式。学会灵活应用SELECT语句组成不同形式的查询块,是掌握SQL的关键。SELECT语句格式 一个完整的SELECT语句包括五个子句,其中前两个子句是必不可少的,其他子句可以省略。133.3 查询格式如下:SELECT DISTINCT 序列 FROM 序列 WHERE GROUP BY HAVING ORDER BY ASCDESC;143.3 查询S
9、ELECT语句执行过程:根据WHERE子句的行条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GROUP子句,则将结果按的值进行分组,该属性列值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中进行聚合操作。若GROUP子句带HAVING短语,则只有满足指定条件的组才给予输出。SELECT DISTINCTSELECT DISTINCT 序列序列FROM FROM 序列序列 WHEREWHERE GROUP BYGROUP BY 1 HAVINGHAVING ORDER BYORDER B
10、Y 2ASCDESC ASCDESC 153.3 查询如果有ORDER子句,则结果表还要按的值的升序或降序排序。SQL的查询语句,很容易看成是关系代数的表达式。SELECT子句指定作投影运算,当FROM子句指出多个关系时,则表示要做笛卡尔积运算,WHERE子句指定做选择运算,当查询要求做关系代数的自然连接时,则不仅要在FROM子句中给出多个关系,还必须在WHERE子句的条件中包含自然连接的条件。163.3 查询下面通过实例来讨论SELECT的使用方法。假设已建立三个表:学生表 S(S#,SN,SE,SA,SD)课程表 C(C#,CN,PC#,CR)选修表 SC(S#,C#,G)1.简单查询 用
11、SELECT语句实现投影运算与选择运算,一般只用到SELECT语句的一个查询块:173.3 查询 SELECT FROM 表名 WHERE 投影运算对应于SELECT子句,其变化方式主要表现在SELECT子句的上。而选择运算对应于WHERE子句,可通过不同的,查询满足要求的元组。大多数情况下,投影与选择运算是混合出现的。183.3 查询【例1】查询全体学生的姓名,学号,所在系。解:SELECT SNSELECT SN,S#S#,SDSD FROM S FROM S;【例2】查询考试成绩不及格的学生的学号。解:SELECT DISTINCT S#SELECT DISTINCT S#FROM SC
12、 FROM SC WHERE G WHERE G6060;【例3】查询计算机系或信息系年龄在20岁以下的学生姓名。解:SELECT SNSELECT SN FROM SFROM S WHERE(SDWHERE(SD=计算机 OR SDOR SD=信息)AND SA)AND SA2020;3.3 查询2.排序查询 通过SELECT语句中的ORDER BY子句,可以控制查询结果的显示顺序。ORDER BY子句对指定的一个或多个属性列,可按升序(ASC)或降序(DESC)重新排列。【例4】查询选修了C810号课程的学生的学号及成绩,查询结果按分数的降序排列。解:SELECT S#SELECT S#,
13、G G FROM SC FROM SC WHERE C#=C810 WHERE C#=C810 ORDER BY G DESC ORDER BY G DESC;203.3 查询3.使用聚合函数 聚合函数用于实现数据统计功能,SQL提供了许多聚合函数,主要包括:COUNT(DISTINCT/ALL*)COUNT(DISTINCT/ALL*)统计元组个数 COUNT(DISTINCT/ALLCOUNT(DISTINCT/ALL)统计一列中值的个数 SUM(DISTINCT/ALLSUM(DISTINCT/ALL)计算一列值的总和 AVG(DISTINCT/ALLAVG(DISTINCT/ALL)计
14、算一列值的平均值 MAX(DISTINCT/ALLMAX(DISTINCT/ALL)求一列值中的最大值 MIN(DISTINCT/ALLMIN(DISTINCT/ALL)求一列值中的最小值213.3 查询【例5】查询选修了课程的学生人数。解:SELECT COUNT(DISTINCT S#)SELECT COUNT(DISTINCT S#)FROM SC FROM SC【例6】统计C810号课程的学生平均成绩。解:SELECT AVGSELECT AVG(G G)FROM SC FROM SC WHERE C#=C810 WHERE C#=C810;223.3 查询4.数据分组查询 使用聚合函
15、数可以实现对关系中的所有查询的元组进行聚合运算,但在实际应用中,经常要将查询的结果分组,然后再对每个分组进行统计。这时就可以利用SELECT语句提供的GROUP BY子句和HAVING短语来实现分组统计。233.3 查询【例7】查询选修了3门以上4学分课程的学生的学号。解:SELECT S#SELECT S#FROM SC FROM SC WHERE CR=4 WHERE CR=4 GROUP BY S#GROUP BY S#HAVING COUNT HAVING COUNT(*)3 3;WHERE子句与HAVING短语的根本区别在于作用的对象不同 WHERE作用于基本表或视图 HAVING作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 关系 数据库 标准 语言 SQL
限制150内