数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章

上传人:E**** 文档编号:89244589 上传时间:2019-05-22 格式:PPT 页数:38 大小:201.50KB
返回 下载 相关 举报
数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章_第1页
第1页 / 共38页
数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章_第2页
第2页 / 共38页
数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章_第3页
第3页 / 共38页
数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章_第4页
第4页 / 共38页
数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章》由会员分享,可在线阅读,更多相关《数据库原理及应用 教学课件 ppt 作者 刘敏涵 主编 郭立文 尹毅峰 副主编 第8章(38页珍藏版)》请在金锄头文库上搜索。

1、第8章,结构化查询语言SQL,8.1 SQL概述,SQL是一种介于关系代数与关系演算之间的语言,是一个通用的功能极强的关系数据库标准语言。目前,SQL语言已被确定为关系数据库系统的国际标准,被绝大多数商品化关系数据库系统采用。在SQL语言中,指定要做什么而不是怎么做,不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。可以在设计或运行时对数据控件使用SQL语句。,8.2 数据操纵语言(DML),与面向记录的结构化语言比较,面向集合的SQL语言更利于数据库的操纵,DML数据操作语言的操作对象是表中的记录集合,本节以学生成绩管理系统为例,利用DML的命令语句实现数据记录的查询、统计、修

2、改和删除功能。,8.2.1 SQL查询语句(SELECT),1.SELECT命令的语法结构 SELECT INTO 新表名 FROM WHERE GROUP BY 分组依据字段名列表 HAVING 分组提取条件表达式 ORDER BY 排序依据字段表达式列表ASC | DESC ,常用的集合函数,注意事项:,(1)若指定DISTINCT短语,则表示在计算时要取消列中的重复值,若不指定DISCINCT短语或者指定ALL(默认)短语,则表示不取消重复值。 (2)可用*指定表中的全部字段。 (3)语句中所用的标点符号为英文半角。 (4)SQL命令中如果包含字符串,必须使用单引号 。 (5)WHERE

3、后的条件表达式可以包含逻辑元算符与(AND)、或(OR)及求反(NOT)。 (6)当SELECT语句较长时,需要多行存储,在每行末尾增加分号。,例8.1 从学生信息表中查询网络3031班的学生信息(学号、姓名、性别、出生日期、系别)。 在VFP的命令窗口中键入语句: SELECT 学号,姓名,性别,出生日期,系别 ;FROM 学生信息 ; WHERE 班级网络3031,例8.2列出学生信息表中的所有班级名称。 在VFP的命令窗口中键入语句: SELECT DISTINCT 班级 FROM 学生信息 运行结果如图8.2所示,例8.3从成绩信息表中统计出C0302001课程的平均分 在VFP的命令

4、窗口中键入语句: SELECT 课程号,AVG(成绩) AS 平均分; FROM 成绩信息 ; GROUP BY 课程号 HAVING 课程号=C0302001,例8.4统计考试课程号为C0302001的90100之间的学生的学号 在VFP的命令窗口中键入语句: SELECT 学号,课程号,成绩FROM 成绩信息 ; WHERE 课程号=C0302001 AND (成绩=90 AND 成绩=100) 或者 SELECT 学号,课程号,成绩FROM 成绩信息 ; WHERE 课程号=C0302001 AND (成绩BETWEEN 90 AND 100 ),例8.4查询电子系中选修了C030100

5、1(微机原理)课程的学生 在VFP命令窗口中键入SQL命令: SELECT 学生信息表.学号,学生信息表.姓名,成绩信息表.课程号; FROM 学生信息表, 成绩信息表 ; WHERE 学生信息表.学号=成绩信息表.学号 AND ; 成绩信息表.课程号=C0301001 AND学生信息表.系别=电子,例8.5 列出“网络3031”所有学生的课程平均分。 在VFP命令窗口中键入SQL命令: SELECT 学号 ,AVG(成绩) AS 平均分 ; FROM 成绩信息表 GROUP BY 学号 ; WHERE 学号 IN ; ( SELECT 学号 FROM 学生信息表 WHERE 班级=网络303

6、1),例8.6查询与“田小红”在同一个系学习的学生,可以按照分步完成,首先查询“田小红”所在的系名,然后查询所有在该系学习的学生。 在VFP命令窗口中键入SQL命令: SELECT 学号,姓名,系别 FROM 学生信息表 WHERE 系别 ; IN ( SELECT 系别 FROM 学生信息表 WHERE 姓名=田小红),例8.7查询学号为“2003303020103”所修的课程名和成绩 SELECT 学号, 成绩信息表.课程号, 课程信息表.课程名, ; 成绩信息表.成绩 FROM 成绩信息表 INNER JOIN 课程信息表 ON ; 成绩信息表.课程号 = 课程信息表.课程号 ; WHE

7、RE 学号=2003303020103,例8.7利用学生信息表和成绩信息表列出所有参加补考的学生的学号、姓名、所在班级、课程号及原始成绩。 在VFP命令窗口中键入SQL命令: SELECT 成绩信息表.学号, 姓名, 班级, 课程号, 成绩 ; FROM 成绩信息表 INNER JOIN 学生信息表 ON ; 成绩信息表.学号 = 学生信息表.学号 ; WHERE 成绩信息表.成绩60,例8.8利用学生信息表、课程信息表和成绩信息表列出课程名为“网络技术”的学生成绩清单(包括:学号、姓名、班级、课程号、课程名、成绩字段) 在VFP命令窗口中键入SQL命令: SELECT 学生信息表.学号, 姓

8、名, 班级, 课程信息表.课程号, ; 课程名,成绩 FROM (成绩信息表 INNER JOIN 学生信息表 ON ; 成绩信息表.学号=学生信息表.学号) INNER JOIN 课程信息表 ; ON 成绩信息表.课程号=课程信息表.课程号 ; WHERE 课程信息表.课程名=网络技术,8.2.2 SQL插入语句(INSERT INTO),1.单行记录的插入 语句格式: INSERT INTO (,); VALUES (,),例 8.9 在课程信息表中插入一门新课的记录(课程号:C0301004;课程名:面向对象;学分:4) SQL语句为: INSERT INTO 课程信息表 ; VALUE

9、S(C0301004,面向对象,4),例 8.9 向学生信息表增加一个新生的记录(学号:2003303010105;姓名:陈晓明;性别:男;出生日期:1985-02-10;系别:电子;班级:网络3031;) SQL语句为: INSERT INTO 学生信息表(学号,姓名,性别,系别,班级) ; VALUES(2003303010105, 陈晓明,男,电子,网络3031),利用数组也可以完成上述功能,所要执行的语句如下: DIMENSION STDARRAY(6) STDARRAY(1)= “2003303010105” STDARRAY(2)= “陈晓明” STDARRAY(3)= “男” S

10、TDARRAY(4)=”电子” STDARRAY(5)=”网络3031” INSERT INTO 学生信息表(学号,姓名,性别,系别,班级) ; FROM ARRAY STDARRAY,2.多行记录的插入,(1)插入多个常量组 语句格式: INSERT INTO (,); VALUES (,), (,),例 8.10 向课程信息表增加三门新课程的记录,各字段所对应的值如下所示: INSERT INTO 课程信息表 ; VALUES (C0301004,面向对象,4), ; (C0301004,数据结构,3), ; (C0301004,专业英语,2),8.2.3 SQL删除语句(DELETE),

11、删除语句的格式为: DELETE ; FROM ; WHERE ,1.通过两条删除语句实现,第一条先删除该学生的成绩记录: DELETE ; FROM 成绩信息表 ; WHERE 学号= 2003303020103 第二条再删除该学生的信息记录: DELETE ; FROM 学生信息表 ; WHERE 学号= 2003303020103,8.2.4 SQL更新语句(UPDATE-SET),SQL的更新语句的格式为: UPDATE SET 字段名1=表达式1 ,字段名2表达式2,; WHERE 例 给参加“C0302001”电工课程考试的学生每人成绩增加5分。 键入的SQL语句为: UPDATE

12、 成绩信息表 SET 成绩=成绩+5 ; WHERE 课程号= C0302001,8.3 数据定义语言(DDL),DDL数据定义语言的操作对象是表的结构,即字段和整个表,实现对表结构的创建、删除以及对字段的增添、删除操作。本节结合学生成绩管理系统,旨在实现对系统初始化以及系统维护的功能。,8.3.1 表的定义与修改,SQL的CREATE TABLE语句格式为: CREATE TABLE ( 完整性约束条件 ; , 完整性约束条件, ),例8 建立如下所要求的表(TEMP):,CREATE TABLE TEMP; (学号 CHAR(13) NOT NULL UNIQUE,; 姓名 CHAR(20

13、) UNIQUE,; 性别 CHAR(2),出生日期 DATE),2.基本表结构的修改,(1)增加新字段 语句格式: ALTER TABLE 基本表名 ADD 新字段名 数据类型 例 在学生信息表增加一个“电话”字段,字符(CHAR)型,字段宽度为12,可用下列语句: ALTER TABLE 学生信息表 ADD 电话 CHAR(12),(2)删除原有的字段,语句格式: ALTER TABLE 基本表名 DROP 字段名 CASCADE|RESTRICT 例 删除学生信息表中刚增添的“电话”字段。 语句如下: ALTER TABLE 学生信息表 DROP 电话,3.删除表,当某个表不再需要时,可

14、以用DROP TABLE语句进行删除,语句格式: DROP TABLE 表名 例如要删除临时表 TEMP,则SQL语句为: DROP TABLE TEMP,8.3.2 视图的定义与删除,1.建立视图 SQL语言用CREATE VIEW语句建立视图,其语句格式为: CREATE VIEW (,); AS ,例8 建立所有电子系学生的视图。 在VFP的命令窗口键入SQL语句: CREATE VIEW E_Student ; AS SELECT * FROM 学生信息表 ; WHERE 系别=电子 运行结果: 在数据库的“本地视图”中增加一个新的视图“E_Student”。,例8 建立电子系选修了“

15、C0301001”课程且成绩在80分以上的学生的视图 CREATE VIEW E_SC0301001 ; AS SELECT 学生信息表.学号,姓名,成绩 ; FROM 学生信息表,成绩信息表 WHERE 系别=电子 ; AND 学生信息表.学号=成绩信息表.学号 ; AND 课程号=C0301001 在此基础上建立新的视图 CREATE VIEW E_SVIEW ; AS SELECT 学号,姓名,成绩 ; FROM E_SC0301001 WHERE 成绩80,2.删除视图,视图删除后,视图的定义将从数据字典中删除,但是基本表并没有被删除,删除视图的语句格式为: DROP VIEW ,8.

16、3.3 其它数据定义语句,CREATE UNIQUECLUSTER INDEX ON (ASCDESC ,ASCDESC) 例8 为成绩信息表建立索引,课程号升序,成绩为降序。 键入的SQL语句为: CREATE UNIQUE INDEX SCIDX ; ON 成绩信息表(课程号 ASC ,成绩 DESC),本章小结,本章详细介绍了SQL的查询语句SELECT,结合学生成绩管理系统的需求,较全面地提供给读者各种查询方式,利用实际的数据记录,在VFP中体现了记录集合操纵的优势,使用户更简化了程序的操作流程,代码更加精简。 SQL语言可以分为数据定义DDL、数据操纵DML和数据控制DCL三大类,本章主要介绍了前两种,由于VFP的用户权限管理和网络的功能局

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

最新文档


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

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