数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03

上传人:E**** 文档编号:89244834 上传时间:2019-05-22 格式:PPT 页数:100 大小:369.50KB
返回 下载 相关 举报
数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03_第1页
第1页 / 共100页
数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03_第2页
第2页 / 共100页
数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03_第3页
第3页 / 共100页
数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03_第4页
第4页 / 共100页
数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03》由会员分享,可在线阅读,更多相关《数据库技术 教学课件 ppt 作者 施伯乐 PPT-KX-03(100页珍藏版)》请在金锄头文库上搜索。

1、关系数据库语言SQL,SQL概况 数据查询 数据更新 数据定义 嵌入式SQL,SQL的特点,非过程性语言 统一的语法结构 是所有数据库的公共语言 语言简洁,易学易用,SQL的组成,数据定义语言 数据操纵语言 数据查询 数据更新 嵌入式SQL语言的使用规定 数据控制语言,SELECT语句的基本句法,关系代数中最常用的式子: A1,An(F(R1Rm) 这里R1、Rm为关系,F是公式,A1、An为属性。 SQL为此设计了SELECTFROMWHERE句型: SELECT A1,An FROM R1,Rm WHERE F,SELECT句型使用实例,例3-1 教学数据中有三个基本表(关系): S(S#

2、,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER),SELECT句型使用实例,检索学习课程号为C2的学生学号与成绩。 SELECT S#,GRADE FROM SC WHERE C# = C2; 检索学习课程号为C2的学生学号与姓名。 这个查询由于要从基本表S和SC中检索数据,因此有多种写法。 第一种写法(联接查询): SELECT S.S#, SNAME FROM S,SC WHERE S.S# =SC.S# AND C# = C2;,SELECT句型使用实例,第二种写法(嵌套查询): SELECT S#,SNAME FROM S WHER

3、E S# IN (SELECT S# FROM SC WHERE C# =C2); 第三种写法(使用存在量词的嵌套查询): SELECT S#,SNAME FROM S WHERE EXISTS(SELECT * FROM SC WHERE SC.S# =S.S# AND C# =C2);,SELECT句型使用实例,检索至少选修课程号为C2和C4的学生学号。 SELECT X.S# FROM SC AS X,SC AS Y WHERE X.S# =Y.S# AND X.C# =C2 AND Y.C# =C4; 检索不学C2课程的学生姓名与年龄 SELECT SNAME,AGE FROM S W

4、HERE NOT EXISTS(SELECT * FROM SC WHERE SC.S#=S.S# AND C#=C2);,SELECT句型使用实例,检索所学课程包含学生S3所学课程的学号。(双重否定形式) SELECT DISTINCT S# FROM SC AS X /*在SC表中找一个学生(S)*/ WHERE NOT EXISTS /*不存在S3学的一门课(C)*/ (SELECT * FROM SC AS Y WHERE Y.S#=S3 AND NOT EXISTS /*该学生没学*/ (SELECT * FROM SC AS Z WHERE Z.S#=X.S# AND Z.C#=Y

5、.C#);,聚合函数,SQL 提供了下列聚合函数: COUNT(*) 计算元组的个数 COUNT(列名) 对一列中的值计算个数 SUM(列名) 求某一列值的总和(此列的值必须是数值型) AVG(列名) 求某一列值的平均值(此列的值必须是数值型) MAX(列名) 求某一列值的最大值 MIN(列名) 求某一列值的最小值,例3-2 求男学生的总人数和平均年龄 SELECT COUNT(*),AVG(AGE) FROM S WHERE SEX=M 统计选修了课程的学生人数 SELECT COUNT(DISTINCT S#) FROM SC,SELECT语句完整的句法,SELECT 目标表的列名或列表达

6、式序列 FROM 基本表名和(或)视图序列 WHERE 行条件表达式 GROUP BY 列名序列 HAVING 组条件表达式 ORDER BY 列名 ASC|DESC , ,例3-3 统计每一年龄选修课程的学生人数 SELECT AGE,COUNT(DISTINCT S.S#) FROM S,SC WHERE S.S#=SC.S# GROUP BY AGE;,2.求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。 SELECT AGE,COUNT(S#) FROM S WHERE SEX=M GROUP BY AGE HAVING COU

7、NT(*) 50 ORDER BY 2,AGE DESC;,SELECT语句中的限定,SELECT子句中的规定 条件表达式中的算术比较操作 (BETWEENAND) 列和基本表的改名操作 (AS) 字符串的匹配操作 (,_ ) 集合的并、交、差操作 (UNION,INTERSECT,EXCEPT) 空值的比较操作 (IS NULL,IS NOT NULL) 集合的比较操作 (IN,NOT IN,SOME,ALL,EXISTS,NOT EXIST,UNIQUE,NOT UNIQUE) 导出表的使用,基本表的联接操作,联结类型 内联结 外联结 左外联结 右外联结 完全外联结 联结条件 NATURA

8、L ON等值联接条件 USING(A1,A2,An),SQL3中的递归查询,SQL3实现递归查询的方法是以关系逻辑为基础 基本表称为外延数据库(EDB)关系,用规则定义的表称为内涵数据库(IDB)关系 WITH语句的简单句法如下: WITH R AS 在WITH语句中定义的关系只能用在语句内部,在其他地方不能使用,设课程之间有先修与后继的联系 关系模式如下: COURSE(C#,CNAME,PC#),W(x,y) COURSE(x,u,y) W(x,y) W(x,z) W(z,y),WITH RECURSIVE W(C#,PC#) AS (SELECT C#,PC# FROM COURSE)

9、UNION (SELECT W1.C#,W2.PC# FROM W AS W1,W AS W2 WHERE W1.PC#=W2.C# ) SELECT * FROM W;,设临时关系W(C#,PC#),数据更新,数据插入 数据删除 数据修改,数据插入,单元组的插入 INSERT INTO 基本表名 (列名表) VALUES(元组值) 多元组的插入 INSERT INTO 基本表名 (列名表) VALUES (元组值),(元组值),(元组值) 查询结果的插入 INSERT INTO 基本表名 (列名表) SELECT查询语句 表的插入 INSERT INTO 基本表名1 (列名表) TABLE

10、基本表名2,1.INSERT INTO SC(S#,C#,GRADE) VALUES(S4,C6,90); 2. INSERT INTO SC VALUES(S4,C4,85), (S3,C6,90), (S7,C2,70); 3. INSERT INTO S_GRADE(S#, AVG_GRADE) SELECT S#,AVG(GRADE) FROM SC WHERE S# IN (SELECT S# FROM S WHERE SEX =M) GROUP AY S# HAVING AVG(GRADE)80; 4. INSERT INTO SC(S#,C#) TABLE SC4;,例3-16,

11、数据删除,句法如下: DELETE FROM基本表名 WHERE 条件表达式 例:把C4课程中小于该课程平均成绩的成绩元组从基本表SC中删除 DELETE FROM SC WHERE C# =C4 AND GRADE(SELECT AVG(GRADE) FROM SC WHERE C# =C4);,数据修改,句法如下 : UPDATE 基本表名 SET 列名=值表达式,列名=值表达式 ROW =(元组) WHERE 条件表达式,例:当C4课的成绩低于该门课程平均成绩时,提高5% 。 UPDATE SC SET GRADE = GRADE * 1.05 WHERE C# = C4 AND GRA

12、DE(SELECT AVG(GRADE) FROM SC WHERE C# =C4);,数据定义,SQL模式 基本表 索引 视图的管理,SQL模式的管理,SQL模式的创建 CREATE SCHEMA模式名AUTHORIZATION用户名 SQL模式的撤消 DROP SCHEMA模式名CASCADERESTRICT CASCADE (级联式)方式:执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消 RESTRICT (约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤消SQL模式,否则拒绝执行DROP语句,基本数据类型,数值型 字符串型 位

13、串型 时间型 允许用户使用“CREATE DOMAIN”语句定义新的域,基本表的管理,基本表的创建 基本表结构的修改 基本表的撤消,基本表的创建,句法如下 CREATE TABLE 基本表名 (列名 类型, 完整性约束, ) 例: CREATE TABLE S (S# CHAR (4) NOT NULL, SNAME CHAR (8) NOT NULL, AGE CHAR (1), SEX CHAR (1), PRIMARY KEY (S#);,基本表结构的修改,增加新的列 ALTER TABLE ADD 删除原有的列 ALTER TABLE DROP CASCADERESTRICT 修改原有

14、列的类型、宽度 ALTER TABLE MODIFY ,基本表的撤消,句法如下: DROP TABLE CASCADERESTRICT,索引的管理,索引的创建 CREATE UNIQUE INDEX ON (列名表) 索引的撤消 DROP INDEX ,视图的管理,视图的创建 CREATE VIEW (列表名) AS 视图的撤消 DROP VIEW 视图名 对视图的更新操作,视图的更新操作,SQL的运行环境,SQL语言的两种方式 交互式SQL 嵌入式SQL 嵌入式SQL的两种处理方式 扩充宿主语言的编译程序,使之能处理SQL语句 预处理方式 (多数) SQL和宿主语言的接口,嵌入式SQL的使用

15、规定,在程序中要区分SQL语句与宿主语言语句 EXEC SQLSQL语句END_EXEC 允许嵌入的SQL语句引用宿主语言的程序变量(称为共享变量) EXEC SQL BEGIN DECLARE SECTION; char sno 5,name 9; char SQL_STATE 6; EXEC SQL END DECLARE SECTION; SQL的集合处理方式与宿主语言单记录处理方式之间的协调,嵌入式SQL的使用规定(续),游标定义语句 EXEC SQL DECLARE CURSOR FOR END_EXEC 游标打开语句 EXEC SQL OPEN END_EXEC 游标推进语句 EX

16、EC SQL FETCH FROM INTO END_EXEC 游标关闭语句 EXEC SQL CLOSE END_EXEC,嵌入式SQL的使用技术,不涉及游标的SQL DML语句 涉及游标的SQL DML语句 卷游标的定义和推进,不涉及游标的SQL DML语句,1.EXEC SQL SELECT sname,age,sex INTO :sn,:sa,:ss FROM s WHERE s# =:givensno; 2.EXEC SQL INSERT INTO s(s#,sname,age) VALUES(:givensno,:sn,:sa); 3.EXEC SQL DELETE FROM SC WHERE

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号