《数据库原理及应用》第五章SQL查询
- 格式:ppt
- 大小:559.00 KB
- 文档页数:68
免责声明:私人学习之余整理,如有错漏,概不负责1.视图的优点简化数据查询语句、使用户能从多角度看待同一数据、提高了数据的安全性、提供了一定程度的逻辑独立性2.使用视图可以加快数据的查询速度吗?为什么?不对。
其本质上还是执行视图内部的查询语句,通过视图查询数据时,都是转换为对基本表的查询,其简化了数据查询语句但是并不能加快数据查询速度。
3.写出创建满足以下要求的视图的SQL语句。
1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。
CREATE VIEW v1(Sno,Sname,Sdept,Cno,Cname,Credit)ASSELECT s.Sno,Sname,Sdept,o,Cname,CreditFROM Student s JOIN SC ON s.Sno = SC.Sno JOIN Course c ON o = o2)查询学生的学号、姓名、选修的课程名和考试成绩。
CREATE VIEW v2(Sno,Sname,Cname,Grade)ASSELECT s.Sno,Sname,Cname,GradeFROM Student s JOIN SC ON s.Sno = SC.Sno JOIN Course c ON o = o3)统计每个学生的选课门数,列出学生学号和选课门数。
CREATE VIEW v3(Sno,选课门数)ASSELECT s.Sno,COUNT(*)FROM Student s JOIN SC ON s.Sno = SC.SnoGROUP BY Sno4)统计每个学生的修课总学分,列出学生学号和总学分。
(成绩大于等于60)CREATE VIEW v4(Sno,总学分)ASSELECT s.Sno,SUM(Credit)FROM Student s JOIN SC ON s.Sno = SC.Sno JOIN Course c ON o = oWHERE Grade > 60GROUP BY Sno5)查询计算机系Java考试成绩最高的学生的学号、姓名和Java考试成绩。
《数据库原理及应用》电子实验报告题目:SQL语言(5)数据查询—集合查询与总结日期20 . . 姓名QQ实验环境:Windows XP,Sql Server2005实验目的:1.理解集合查询的意义2.了解标准SQL直接支持的集合操作种类3.了解一般商用数据库支持的集合操作种类4.掌握并、交、差操作5.总结并深入体会SQL查询实验内容:1.集合查询1)嵌套查询的定义2)标准SQL直接支持的集合操作种类3)一般商用数据库支持的集合操作种类2.采用的数据库表1)库表结构定义2)库表记录3.并操作(写出题目、关系代数表达式和sql语句)1)并操作的形式2)实例操作【实例1】【实例2】4.交操作1)交操作的意义2)实例操作(写出题目、关系代数表达式和sql语句及sql环境运算截图)【实例1】【实例2】【实例3】5.差操作(写出题目、关系代数表达式和sql语句及sql环境运算截图)1)差操作的意义2)实例操作【实例1】【实例2】【实例3】【实例4】6.对集合操作结果的排序(写出题目、sql语句及sql环境运算截图)1)EXISTS谓词2)NOT EXISTS谓词3)全称量词 的实现4)实例操作【实例1】【实例2】【实例3】【实例4】7.SQL查询的总结1)SELECT语句的一般格式2)……(自由总结、深入体会)3)……(自由总结、深入体会)……完成情况:1 完成了***************2 完成了****************出现的问题:(小四宋体)1 在完成**任务时,遇到了**问题,解决思路是****,解决步骤时*****。
2 在完成**任务时,遇到了**问题,解决思路是****,解决步骤时*****。
*****************。
数据库原理及应用教案第一章:数据库概述1.1 数据库的基本概念理解数据库的定义理解数据和信息的关系理解数据模型的概念1.2 数据库系统的结构理解数据库系统的组成部分理解数据库管理系统的作用理解应用程序和数据库之间的交互过程1.3 数据库的发展历史了解数据库的起源和发展过程了解关系数据库和面向对象数据库的区别了解当前数据库技术的发展趋势第二章:关系数据库理论2.1 关系模型的基本概念理解关系表的定义和表示方法理解关系模型的特点和优势理解实体和属性的概念2.2 关系的操作理解选择、投影和连接操作的含义和应用掌握关系代数和SQL语言的使用方法理解关系的性质和操作的限制条件2.3 关系的完整性约束理解实体完整性和参照完整性的概念理解主键和外键的作用和定义掌握关系的完整性约束的实现方法第三章:数据库设计3.1 需求分析理解需求分析的目的和重要性掌握需求分析的方法和技术理解数据字典和数据流图的使用3.2 概念设计理解概念设计的概念和目的掌握实体-关系模型的表示方法理解概念设计到逻辑设计的转换方法3.3 逻辑设计理解逻辑设计的概念和目的掌握关系模型的设计方法理解关系数据库设计的原则和方法第四章:数据库管理4.1 数据库的创建和管理理解数据库的创建和管理过程掌握SQL语言创建和管理数据库的方法理解数据库的备份和恢复的概念和方法4.2 数据库的安全性和完整性理解数据库安全性的概念和重要性掌握数据库的权限管理和访问控制方法理解数据库完整性的概念和实现方法4.3 数据库性能优化理解数据库性能优化的概念和方法掌握查询优化和索引的使用方法理解数据库缓存和分区的概念和方法第五章:数据库应用系统开发5.1 数据库应用系统的设计和实现理解数据库应用系统的设计和实现过程掌握数据库应用系统的设计原则和方法理解应用程序和数据库之间的交互过程5.2 常用数据库开发工具了解常用的数据库开发工具的概念和功能掌握数据库开发工具的使用方法理解不同开发工具的优缺点和适用场景5.3 数据库应用系统的运行和维护理解数据库应用系统的运行和维护的重要性掌握数据库应用系统的运行和维护方法理解故障排除和性能监控的概念和方法第六章:SQL语言6.1 SQL语言基础理解SQL语言的作用和特点掌握SQL语言的基本语法和操作理解数据定义语言(DDL)和数据操作语言(DML)的概念6.2 SQL数据查询掌握SQL查询语句的编写和执行理解选择、投影和连接操作的SQL实现掌握子查询和联合查询的使用方法6.3 SQL数据定义和操纵掌握SQL语言创建表、视图和索引的方法掌握插入、更新和删除数据的SQL语句理解SQL语言的数据类型和约束定义第七章:数据库事务管理7.1 事务的基本概念理解事务的定义和特性掌握事务的ACID属性理解事务的作用和重要性7.2 事务管理理解事务的提交和回滚掌握事务控制语句的使用理解事务隔离级别的概念和作用7.3 事务日志和恢复理解事务日志的作用和结构掌握数据库的恢复机制理解崩溃后的数据库恢复过程第八章:数据库高级特性8.1 数据库触发器和存储过程理解触发器和存储过程的定义和作用掌握创建和调用触发器和存储过程的方法理解触发器和存储过程在数据完整性管理中的应用8.2 数据库视图和索引理解视图的概念和作用掌握创建和使用视图的方法理解索引的原理和作用掌握索引的创建和管理方法8.3 数据库分区理解分区的作用和原理掌握分区的创建和管理方法理解分区对数据库性能的影响第九章:数据库性能优化9.1 查询优化理解查询优化的目的和方法掌握查询优化技术理解查询优化器的工作原理9.2 数据库索引设计理解索引的作用和类型掌握索引的设计原则和方法理解索引维护和更新策略9.3 数据库缓存和并发控制理解数据库缓存的作用和原理掌握缓存优化策略理解并发控制的重要性掌握并发控制技术第十章:数据库应用案例分析10.1 数据库应用案例介绍分析实际数据库应用案例理解案例中数据库的设计和实现方法理解案例中数据库的应用场景和效果10.2 数据库应用案例分析分析案例中的数据库需求和设计分析案例中的数据库管理和维护方法分析案例中的数据库性能优化措施10.3 数据库应用案例实践基于案例进行数据库设计和实现实践案例中的数据库管理和维护方法实践案例中的数据库性能优化措施重点和难点解析重点环节1:关系模型的基本概念关系表的定义和表示方法关系模型的特点和优势实体和属性的概念重点环节2:关系的操作选择、投影和连接操作的含义和应用关系代数和SQL语言的使用方法关系的性质和操作的限制条件重点环节3:关系的完整性约束实体完整性和参照完整性的概念主键和外键的作用和定义关系的完整性约束的实现方法重点环节4:数据库的创建和管理数据库的创建和管理过程SQL语言创建和管理数据库的方法数据库的备份和恢复的概念和方法重点环节5:数据库的安全性和完整性数据库安全性的概念和重要性数据库的权限管理和访问控制方法数据库完整性的概念和实现方法重点环节6:数据库性能优化查询优化和索引的使用方法数据库缓存和分区的概念和方法数据库性能优化的概念和方法重点环节7:数据库事务管理事务的定义和特性事务的ACID属性事务的提交和回滚重点环节8:数据库高级特性触发器和存储过程的定义和作用视图和索引的原理和作用分区对数据库性能的影响重点环节9:数据库性能优化查询优化技术索引的设计原则和方法缓存优化策略重点环节10:数据库应用案例分析数据库应用案例的需求分析和设计数据库应用案例的管理和维护方法数据库应用案例的性能优化措施全文总结和概括:本文主要分析了数据库原理及应用教案中的重点环节,包括关系模型的基本概念、关系的操作、关系的完整性约束、数据库的创建和管理、数据库的安全性和完整性、数据库性能优化、数据库事务管理、数据库高级特性、数据库应用案例分析等。
实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作 实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)), PRIMARY KEY(Sno,Cno),FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
《数据库原理及应用》电子实验报告题目:SQL语言数据定义日期姓名实验环境:Windows 7,Sql Server2005实验目的:1.熟悉Sql Server2005环境2.掌握基本表的定义、删除和修改3.掌握索引的建立和删除实验内容:1.Sql Server2005的启动Sql Server2005的启动方法:⑴单击“开始”按钮→“所用程序”→“Microsoft SOL Server 2005”→“SQL Server Management Studio”。
之后将会出现如图1所示的“连接到服务器”的窗口。
⑵安装时将 Sql Server2005 的快捷图标放到桌面或锁定到任务栏打开Sql Server2005界面(如下图)单击‘连接’,进入界面(如下图)点击‘新建查询’,进入空白页面,编写程序。
2. 定义基本表的语句格式1)create语句SQL 语言使用CREATE TABLE语句定义基本表,其基本格式如下:CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ] …[,<表级完整性约束条件> ] );<表名>:所要定义的基本表的名字<列名>:组成该表的各个属性(列)<列级完整性约束条件>:涉及相应属性列的完整性约束条件<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件2)drop语句当某个基本表不再需要时,可以使用DROP TABLE语句删除它。
其一般格式为:DROP TABLE <表名> [RESTRICT | CASCADE];基本表删除后:①数据、表上的索引都删除②表上的视图往往仍然保留,但无法引用删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述。
FROM SC2. SELECT Sname, SageFROM StudentWHERE (Sdept = '计算机系')3. SELECT Sno, Cno, GradeFROM SCWHERE (Grade BETWEEN 70 AND 80)4. SELECT Sname, SageFROM StudentWHERE (Sdept = '计算机系') AND (Ssex = '男')5. SELECT MAX(Grade) AS c01最高成绩FROM SCWHERE (Cno = 'c01')6. SELECT MAX(Sage) AS 最大年龄, MIN(Sage) AS 最小年龄FROM StudentWHERE (Sdept = '计算机系')7. SELECT Sdept, COUNT(*) AS 学生人数FROM StudentGROUP BY Sdept8. SELECT Cno, COUNT(*) AS 选课人数, MAX(Grade) AS 最高分FROM SCGROUP BY Cno9. SELECT Sno, COUNT(*) AS 选课门数, SUM(Grade) AS 总成绩FROM SCGROUP BY SnoORDER BY COUNT(*)10. SELECT Sno, SUM(Grade) AS 总成绩FROM SCGROUP BY SnoHA VING (SUM(Grade) > 200)11. SELECT Sname, SdeptWHERE (Sno IN(SELECT snoFROM scWHERE cno = 'c02'))12. SELECT s.Sname, o, SC.Grade FROM Student s INNER JOINSC ON s.Sno = SC.SnoWHERE (SC.Grade > 80)ORDER BY SC.Grade DESC13. SELECT Sno, Sname, SdeptFROM StudentWHERE (NOT EXISTS(SELECT *FROM scWHERE sc.sno = student.sno))或者 SELECT Sno, Sname, SdeptFROM StudentWHERE (Sno NOT IN(SELECT snoFROM sc))14. SELECT Cname, SemesterFROM CourseWHERE (Semester =(SELECT semesterFROM courseWHERE cname = 'VB'))或者SELECT ame, c2.SemesterFROM Course c1 INNER JOINCourse c2 ON c1.Semester = c2.Semester WHERE (ame = 'VB')15. SELECT s2.Sname, s2.Sdept, s2.Sage FROM Student s1 INNER JOINStudent s2 ON s1.Sage = s2.SageWHERE (s1.Sname = '李勇') AND (s2.Sname <> '李勇')或者SELECT Sname, Sdept, SageFROM StudentWHERE (Sage =(SELECT sageFROM studentWHERE sname = '李勇')) AND (Sname <> '李勇')16. SELECT TOP 2 WITH TIES Sname, SageFROM StudentWHERE (Sdept = '计算机系')ORDER BY Sage17. SELECT Student.Sname, Student.Sdept, SC.GradeFROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade IN(SELECT TOP 2 WITH ties gradeFROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')ORDER BY grade DESC))或者SELECT TOP 2 WITH TIES Student.Sname, Student.Sdept, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.Sno INNER JOINCourse ON o = oWHERE (ame = 'VB')ORDER BY SC.Grade DESC18. SELECT TOP 2 WITH TIES Sno, COUNT(*) AS 选课门数FROM SCGROUP BY SnoORDER BY COUNT(*) DESC19. SELECT TOP 1 WITH TIES Sdept, COUNT(*) AS 学生人数FROM StudentGROUP BY SdeptORDER BY COUNT(*) DESC20. (1)SELECT Sname, SdeptFROM StudentWHERE (Sno IN(SELECT snoFROM scWHERE cno = 'c01'))(2) SELECT Student.Sno, Student.Sname, o, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (Student.Sno IN(SELECT snoFROM scWHERE grade > 80 AND sno IN(SELECT snoFROM studentWHERE sdept = '数学系')))(3)SELECT Student.SnameFROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade =(SELECT MAX(grade)FROM scWHERE sno IN(SELECT snoFROM studentWHERE sdept = '计算机系')))(4)SELECT Student.Sname, Student.Sdept, o, SC.Grade FROM Student INNER JOINSC ON Student.Sno = SC.SnoWHERE (SC.Grade =(SELECT MAX(grade)FROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = '数据结构')))21. SELECT Sname, SdeptFROM StudentWHERE (Sno NOT IN(SELECT snoFROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')))22. SELECT Sname, SsexFROM StudentWHERE (Sno NOT IN(SELECT snoFROM sc)) AND (Sdept = '计算机系')或者SELECT Sname, SsexFROM StudentWHERE (NOT EXISTS(SELECT *FROM scWHERE sno = student.sno)) AND (Sdept = '计算机系')23. SELECT Student.Sname, ameFROM Student INNER JOINSC ON Student.Sno = SC.Sno INNER JOINCourse ON o = oWHERE (Student.Sno =(SELECT TOP 1 WITH ties snoFROM scGROUP BY snoHA VING sc.sno IN(SELECT student.snoFROM studentWHERE sdept = '计算机系')ORDER BY A VG(grade) ASC))24. SELECT Cname, Semester, CreditFROM CourseWHERE (Cno IN(SELECT TOP 1 WITH ties cnoFROM scGROUP BY cnoORDER BY COUNT(*) ASC)) AND (Semester BETWEEN 1 AND 5)25. (1)INSERT INTO test_t(COL2)V ALUES ('B1')(2)INSERT INTO test_t(COL1, COL2, COL3)V ALUES (1, 'B2', 'C2')(3)INSERT INTO test_t(COL1, COL2)V ALUES (2, 'B3')26. DELETE FROM SCWHERE (Grade < 50)27. DELETE FROM CourseWHERE (Cno NOT IN(SELECT cnoFROM sc))或者DELETE FROM CourseWHERE (NOT EXISTS(SELECT *FROM scWHERE cno = o))28. DELETE FROM SCWHERE (Grade < 60) AND (Sno IN(SELECT snoFROM studentWHERE sdept = '计算机系')) AND (Cno IN (SELECT cnoFROM courseWHERE cname = 'VB'))29. DELETE FROM SCWHERE (Grade =(SELECT MIN(grade)FROM scWHERE cno =(SELECT cnoFROM courseWHERE cname = 'VB')))30. UPDA TE CourseSET Credit = Credit + 2WHERE (Semester = 2)31. UPDA TE CourseSET Credit = 3WHERE (Cname = 'VB')32. UPDA TE StudentSET Sage = Sage + 1WHERE (Sdept = '计算机系')33. UPDA TE SCSET Grade = Grade + 5WHERE (Sno IN(SELECT snoFROM studentWHERE sdept = '信息系')) AND (Cno IN (SELECT cnoFROM courseWHERE cname = '计算机文化学'))34. UPDA TE CourseSET Credit = Credit - 1WHERE (Cno =(SELECT TOP 1 oFROM scGROUP BY cnoORDER BY COUNT(*)))。
《数据库原理》知识点之SQL的数据查询3.3.1 SELECT语句的基本句法考核要求:达到“综合应用”层次知识点:SELECT-FROM-WHERE句型的应用(1)SELECT-FROM-WHERE句型SELECT 列名表(逗号隔开)FROM 基本表或视图序列WHERE 条件表达式Notice:掌握条件表达式中各种运算符的应用。
算术比力运算符=,>,或!=,=;逻辑运算符AND、OR、NOT;集合成员资格运算符:IN,NOT IN;谓词:EXISTS(存在量词),ALL,SOME,UNIQUE;聚合函数:(鄙人面介绍)(2)SELECT句型使用实例本节内容需要多看例题,多作习题进行掌握。
Notice:嵌套的SELECT语句的用法(3)聚合函数注意各个函数的含义:3.3.2 SELECT 语句完整的句法考核要求:达到“综合应用”层次知识点:SELECT 语句完整句法的使用SELECT 列名表(逗号隔开)FROM 基本表或视图序列[WHERE 条件表达式] (行条件子句)[GROUP BY 列名序列] (分组子句)[HA VING 组条件表达式] (组条件子句)[ORDER BY列名[ASC|DESC]……] (排序子句)本节内容需要多看例题,多作习题进行掌握3.3.3 SELECT语句中的限定考核要求:达到“领会”层次知识点:种限定的使用目的和方法(1)SELECT子句中的规定如果要求输出表格中不允许出现重复元组,则在SELECT 后加一DISTINCTSELECT子句中允许出现+,-,*,/,以及列名,常数的算术表达式(2)条件表达式的算术比力操作WHERE 子句中可以用BETWEEN……AND……来限定一个值的范围(3)列和基本表的改名操作同一个基本表在SELECT语句中多次引用时可用AS来增加别号(4)字符串的匹配操作WHERE子句中字符串匹配用LIKE和两个通配符,%和下划线_.(5)集合的并、交、差操作查询结果的结构完全一致时,可将两个查询进行并(UNION)交(INTERSECT)差(EXCPT)操作(6)空值的比力操作查询空值操作不是用=‘null’,而是用IS NULL来测试。