数据库原理实验报告模板-实验四高级查询
- 格式:doc
- 大小:1.79 MB
- 文档页数:17
数据库原理实验4多表查询实验四多表查询1 实验目的与要求(1) 熟练掌握SQL语句的使用。
(2) 熟练使用SQL语句进行连接操作。
2 实验内容(1) 找出同一天进入公司效劳的员工。
(2) 查找与“陈诗杰〞在同一个单位工作的员工姓名、性别、部门和职务。
(3) 在Employee表中查询薪水超过员工平均薪水的员工信息。
(4) 查找有销售记录的客户编号、名称和订单总额。
(5) 查询没有订购商品的客户编号和客户名称。
(6) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男〞、“女〞表示。
(7) 查询OrderMaster表中订单金额最高的订单号及订单金额。
(8) 在订单主表中查询订单金额大于“E2022002业务员在2022-1-9这天所接的任一张订单的金额〞的所有订单信息。
(9) 查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
(10) 分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比拟检索的结果。
(11) 使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日期不要显示时间,日期格式为“yyyy-mm-dd〞,按客户编号排序,同一客户再按订单金额降序排序输出。
(12) 查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男〞和“女〞表示,日期使用“yyyy-mm-dd〞格式显示。
(13) 查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男〞、“女〞表示。
(14) 找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
(15) 查询每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列。
一、实验目的1. 掌握SQL语言中高级查询语句的使用方法。
2. 熟悉使用子查询、连接查询、分组查询、排序查询等高级查询功能。
3. 提高数据库查询能力,解决实际查询问题。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 数据库工具:MySQL Workbench三、实验内容1. 创建数据库和表(1)创建数据库```sqlCREATE DATABASE experiment;```(2)创建表```sqlUSE experiment;CREATE TABLE department (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL);CREATE TABLE employee (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT,department_id INT,salary DECIMAL(10, 2),FOREIGN KEY (department_id) REFERENCES department(id) );```2. 高级查询(1)子查询```sql-- 查询部门名称为“技术部”的员工信息SELECT FROM employee WHERE department_id IN (SELECT id FROM department WHERE name = '技术部');-- 查询年龄大于30岁的员工信息SELECT FROM employee WHERE age > (SELECT AVG(age) FROM employee);```(2)连接查询```sql-- 查询部门名称为“技术部”的员工及其部门信息SELECT e., AS department_nameFROM employee eJOIN department d ON e.department_id = d.idWHERE = '技术部';-- 查询员工姓名为“张三”的部门及其部门领导信息SELECT AS employee_name, AS department_name, AS manager_nameFROM employee eJOIN department d ON e.department_id = d.idJOIN employee m ON d.id = m.department_idWHERE = '张三' AND = '部门领导';```(3)分组查询```sql-- 查询每个部门员工的人数SELECT AS department_name, COUNT(e.id) AS employee_countFROM department dJOIN employee e ON d.id = e.department_idGROUP BY ;-- 查询平均工资大于5000的部门信息SELECT AS department_name, AVG(e.salary) AS average_salaryFROM department dJOIN employee e ON d.id = e.department_idGROUP BY HAVING AVG(e.salary) > 5000;```(4)排序查询```sql-- 查询所有员工信息,按年龄升序排序SELECT FROM employee ORDER BY age ASC;-- 查询所有员工信息,按工资降序排序SELECT FROM employee ORDER BY salary DESC;```四、实验结果与分析通过本次实验,我们学习了SQL语言中高级查询语句的使用方法,包括子查询、连接查询、分组查询、排序查询等。
数据库查询的实验报告数据库查询的实验报告引言:数据库查询是一项重要的技术,它可以帮助我们从庞大的数据集中提取所需的信息。
本实验旨在探索数据库查询的原理和实践,通过实际操作和分析,深入了解数据库查询的过程和技巧。
实验目的:1. 理解数据库查询的基本概念和原理;2. 掌握使用SQL语句进行数据库查询的方法;3. 分析不同查询语句的执行效率和优化策略。
实验步骤:1. 数据库准备:选择一个合适的数据库系统,并创建一个包含适当表结构和数据的数据库。
2. 查询语句编写:根据实际需求,编写不同类型的查询语句,包括基本查询、条件查询、排序查询、聚合查询等。
3. 查询语句执行:使用数据库管理系统提供的查询工具,执行编写好的查询语句,并观察查询结果。
4. 查询结果分析:根据查询结果,分析查询语句的执行效率和查询结果的准确性。
5. 优化策略实施:对于执行效率较低的查询语句,尝试优化策略,如索引的使用、查询语句的重写等。
6. 优化效果评估:比较优化前后查询语句的执行效率,并分析优化策略的有效性。
实验结果与讨论:通过实验,我们发现数据库查询的过程中,查询语句的编写和优化对查询效率有重要影响。
以下是我们的实验结果和讨论。
1. 基本查询:基本查询是最简单的查询方式,通过SELECT语句从数据库中选择所需的字段。
我们发现,基本查询的执行效率较高,查询结果准确。
然而,在处理大量数据时,查询时间可能会增加。
为了提高效率,我们可以使用LIMIT子句限制返回的记录数。
2. 条件查询:条件查询是根据特定条件筛选数据的查询方式。
我们使用WHERE子句来指定查询条件,并发现查询结果的准确性和效率与查询条件的选择有关。
使用索引字段作为查询条件可以大大提高查询效率。
3. 排序查询:排序查询是根据指定字段的顺序对查询结果进行排序的方式。
我们使用ORDER BY子句来指定排序字段,并观察到排序查询的执行效率较高。
然而,对于大规模数据集,排序操作可能会导致性能下降。
实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。
二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。
了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。
三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。
高级查询实验总结一、引言高级查询是数据库操作中非常重要的一部分,它不仅可以帮助我们更精准、高效地获取数据库中的信息,还可以对数据进行聚合、计算等操作。
通过对高级查询的学习和实验,我们可以更好地掌握数据库操作的技巧,提高数据处理的能力。
在本次实验中,我们将总结高级查询的相关知识和实验结果,并进行深入分析和总结。
二、实验过程1. 数据库准备首先我们需要准备一个数据库和相应的数据表,以便进行高级查询的实验。
在实验中,我们选择了一个包含学生信息的数据库作为实验对象,其中包括学生表、课程表和成绩表等。
2. 实验环境我们使用了MySQL作为实验环境,通过控制台或者可视化工具对数据库进行操作和查询。
我们还使用了一些辅助工具来提高查询效率和性能。
3. 实验内容在实验中,我们主要对高级查询的各种操作进行了实验,包括但不限于:- 使用子查询进行数据过滤和筛选- 多表连接查询和相关子查询- 使用聚合函数进行数据统计和计算- 对查询结果进行排序和分组- 对查询结果进行分页和限制4. 实验结果通过实验,我们得到了大量的查询结果和数据处理的操作,对于每一种查询方式,我们都进行了分析和总结,并对比了不同查询方式的性能和效果。
同时还结合了具体的实际案例,对相关查询进行了演练和应用,以更好地理解和掌握高级查询的技巧和方法。
三、实验总结1. 高级查询的优势通过本次实验,我们深刻认识到高级查询在数据库操作中的重要性和优势,它可以帮助我们更快速、高效地获取所需信息,并且可以对数据进行复杂的处理和计算。
高级查询还能够有效提高数据库的性能和查询效率,优化数据检索的速度和精准度。
2. 高级查询的应用在实际应用中,高级查询可以广泛应用于各种数据处理和业务场景中,例如报表生成、数据分析、决策支持等方面。
通过合理地运用高级查询,我们可以更好地实现数据挖掘和价值发现,为企业决策和发展提供有力的支持。
3. 高级查询的挑战尽管高级查询有诸多优势,但在实际操作过程中也会遇到一些挑战和难点。
高级查询实验总结一、实验目标本次实验的目标是掌握高级查询技术,通过实验,深入理解数据库查询优化的重要性,以及如何通过合理使用索引、编写高效查询语句等方式提升查询性能。
同时,也希望通过实验,提高我们解决实际问题的能力,以及对数据库系统的深入理解。
二、实验原理高级查询优化主要基于以下几个原理:1.索引原理:索引能够极大地提高查询速度,通过合理地创建和使用索引,可以显著降低数据库的查询负担。
2.查询优化原理:通过优化查询语句,减少不必要的计算和数据检索,可以提高查询性能。
例如,合理地使用连接(JOIN)代替子查询,能够减少数据的冗余检索。
3.数据库系统原理:理解数据库系统的内部工作机制,如数据的存储和检索方式,能够更好地进行查询优化。
三、实验步骤1.创建数据库和表,并添加数据。
2.分析数据,确定需要优化的查询语句。
3.根据查询需求,创建合适的索引。
4.优化查询语句,提高查询效率。
5.对比优化前后的查询性能,分析优化效果。
四、实验结果经过实验,我们发现优化后的查询性能有了显著提升。
具体来说,优化前的查询需要10秒,而优化后的查询只需要2秒。
这表明我们的优化策略是有效的。
五、结果分析通过对比优化前后的查询性能,我们可以看到索引和查询优化的重要性。
在本次实验中,我们根据索引原理创建了合适的索引,并根据查询优化原理优化了查询语句。
这些优化策略显著提高了查询性能。
具体来说,索引的创建减少了数据检索的时间,而查询的优化减少了不必要的计算,提高了查询效率。
六、实验总结本次实验使我们深入理解了高级查询优化的原理和技术。
通过实验,我们掌握了如何根据实际需求创建合适的索引和优化查询语句。
同时,我们也认识到查询优化的重要性,以及在实际应用中合理运用这些技术的重要性。
总的来说,本次实验是一次非常有价值的经验,我们从中受益匪浅。
七、实验反思在本次实验中,我们取得了显著的成果,但也存在一些不足之处。
首先,我们在优化查询语句时,可能还可以进一步挖掘其他可能的优化策略。
数据库实验4实验报告一、实验目的本次数据库实验 4 的主要目的是深入了解和掌握数据库中的索引、存储过程以及事务处理等关键技术,通过实际操作和实践,提高对数据库管理系统的运用能力,以及解决实际问题的能力。
二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。
实验在个人电脑上进行,配置为英特尔酷睿 i5 处理器,8GB 内存。
三、实验内容与步骤(一)索引的创建与使用1、首先,创建了一个名为`students` 的表,包含`id`(主键,自增)、`name`(姓名)、`age`(年龄)、`grade`(年级)等字段。
```sqlCREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT,grade VARCHAR(20));```2、向表中插入了一些示例数据,用于后续的实验操作。
```sqlINSERT INTO students (name, age, grade)VALUES ('张三', 18, '大一'),('李四', 19, '大二'),('王五', 20, '大三'),('赵六', 21, '大四');```3、为`name` 字段创建了一个普通索引,观察查询性能的变化。
```sqlCREATE INDEX idx_name ON students (name);```4、执行查询语句,对比创建索引前后的查询时间。
```sqlSELECT FROM students WHERE name ='张三';```(二)存储过程的创建与调用1、创建了一个简单的存储过程,用于计算两个数的和。
```sqlDELIMITER //CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT, OUT result INT)BEGINSET result = num1 + num2;END//DELIMITER ;```2、调用存储过程,传递参数并获取结果。
一、实训目的本次实训旨在通过实际操作,加深对数据库查询语言(SQL)的理解和应用,掌握基本的查询技巧,包括单表查询和多表查询,并能灵活运用各种查询条件、聚合函数、连接操作等,以提高数据检索和处理的能力。
二、实训内容1. 实训环境- 数据库管理系统:MySQL 5.7- 实训数据:使用自建或提供的数据库实例,包含多个表,如用户表、订单表、商品表等。
2. 实训步骤(1)单表查询- 查询所有字段:`SELECT FROM 表名;`- 查询指定字段:`SELECT 字段1, 字段2 FROM 表名;`- 查询指定记录:`SELECT FROM 表名 WHERE 条件;`- 带IN关键字的查询:`SELECT FROM 表名 WHERE 字段 IN (值1, 值2, ...);`- 带BETWEEN AND的范围查询:`SELECT FROM 表名 WHERE 字段 BETWEEN 值1 AND 值2;`- 带LIKE的字符匹配查询:`SELECT FROM 表名 WHERE 字段 LIKE '模式';`- 查询空值:`SELECT FROM 表名 WHERE 字段 IS NULL;`- 带AND的多条件查询:`SELECT FROM 表名 WHERE 条件1 AND 条件2;`- 带OR的多条件查询:`SELECT FROM 表名 WHERE 条件1 OR 条件2;`- 关键字DISTINCT(查询结果不重复):`SELECT DISTINCT 字段 FROM表名;`- 对查询结果排序:`SELECT FROM 表名 ORDER BY 字段 [ASC|DESC];`- 分组查询(GROUP BY):`SELECT 字段1, 字段2, ... FROM 表名GROUP BY 字段1, 字段2, ...;`- 使用LIMIT限制查询结果的数量:`SELECT FROM 表名 LIMIT 起始位置, 数量;`- 集合函数查询:`SELECT COUNT(), SUM(), AVG(), MAX(), MIN() FROM 表名;`(2)多表查询- 为表取别名:`SELECT 表1.字段1, 表2.字段2 FROM 表1 AS t1, 表2 AS t2 WHERE t1.字段1 = t2.字段2;`- 普通双表连接查询:`SELECT FROM 表1, 表2 WHERE 表1.字段1 = 表2.字段1;`- 内连接查询:`SELECT FROM 表1 INNER JOIN 表2 ON 表1.字段1 =表2.字段1;`- 左外连接查询:`SELECT FROM 表1 LEFT JOIN 表2 ON 表1.字段1 = 表2.字段1;`- 右外连接查询:`SELECT FROM 表1 RIGHT JOIN 表2 ON 表1.字段1 = 表2.字段1;`- 复合条件连接查询:`SELECT FROM 表1 INNER JOIN 表2 ON 表1.字段1 = 表2.字段1 AND 表1.字段2 = 表2.字段2;`- 子查询:`SELECT FROM 表1 WHERE 字段1 IN (SELECT 字段2 FROM表2 WHERE 条件);`(3)高级查询- 查询涉及多级联表:`SELECT FROM 表1 AS t1 INNER JOIN 表2 AS t2 ON t1.字段1 = t2.字段1 INNER JOIN 表3 AS t3 ON t2.字段2 = t3.字段1;`- 查询涉及多条件、多表的复杂条件:`SELECT FROM 表1 AS t1 INNER JOIN 表2 AS t2 ON t1.字段1 = t2.字段1 WHERE t1.字段2 = '条件1' OR t2.字段3 = '条件2';`- 查询涉及聚合函数和分组:`SELECT COUNT(), AVG(字段), MAX(字段), MIN(字段) FROM 表1 AS t1 INNER JOIN 表2 AS t2 ON t1.字段1 = t2.字段1 GROUP BY t1.字段1;`3. 实训要求- 熟练掌握单表查询和多表查询的各种技巧。
天津师范大学软件学院数据库原理实践课程实验卡实验序号: 4 实验室名称:计信学院实验室实验名称数据库的高级查询实验类型验证计划学时 2 人组数 1 首开日期面向专业(逐个填写)主要配置仪器设备名称设备规格型号每组台件数1.计算机 12.投影仪 1消耗材料名称每组消耗量消耗材料名称每组消耗量实验项目简介实验目的:通过上机实验验证数据库的多表的高级查询。
实验内容:1、将studentw数据库还原。
2、在studentw数据库中,完成以下单表查询的操作,将每一个程序保存为.sql。
(1)查询选了Java课程的学生的学号、姓名、所在系和成绩,并对所在系进行如下处理:“计算机系”:显示“CW”;“信息管理系”:显示“IM”;“通信工程系”:显示“COM”,查询结果存入新表w1。
(2)查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:如果成绩大于等于90,则在查询结果中显示“优”;如果成绩在80到89分之间,则在查询结果中显示“良”;如果成绩在70到79分之间,则在查询结果中显示“中”;如果成绩在60到69分之间,则在查询结果中显示“及格”;如果成绩小于60分,则在查询结果中显示“不及格”,查询结果存入新表w2。
(3)统计每个学生的考试平均成绩,列出学号、考试平均成绩和考试情况,其中考试情况的处理为:如果平均成绩大于等于90,则考试情况为“好”;如果平均成绩在80~89,则考试情况为“比较好”;如果平均成绩在70~79,则考试情况为“一般”;如果平均成绩在60~69,则考试情况为“不太好”;如果平均成绩低于60,则考试情况为“比较差”,查询结果存入新表w3。
(4)统计计算机系每个学生的选课门数,包括没有选课的学生。
列出学号、选课门数和选课情况,其中对选课情况的处理为:如果选课门数超过4,则选课情况为“多”;如果选课门数在2~4,则选课情况为“一般”;如果选课门数少于2,则选课情况为“少”;如果学生没有选课,则选课情况为“未选”。
数据库原理实验报告一、实验目的本次数据库原理实验旨在通过实际操作和实践,深入理解数据库的基本概念、原理和技术,掌握数据库设计、创建、管理和操作的方法,提高解决实际问题的能力和数据处理的技能。
二、实验环境本次实验使用的软件环境为 Microsoft SQL Server 2019,操作系统为 Windows 10。
硬件环境为一台具备 8GB 内存、Intel Core i5 处理器的计算机。
三、实验内容与步骤(一)数据库设计1、需求分析根据给定的业务场景,明确数据库需要存储的信息和数据之间的关系。
例如,对于一个学生管理系统,需要存储学生的基本信息、课程信息、成绩信息等,并且要确定这些信息之间的关联,如学生与课程的选课关系、课程与成绩的对应关系等。
2、概念设计使用 ER 图(EntityRelationship Diagram,实体关系图)对需求进行建模,清晰地表示出实体(如学生、课程)、属性(如学生的学号、姓名)和实体之间的关系(如选课关系)。
3、逻辑设计将 ER 图转换为关系模式,确定表的结构,包括表名、列名、数据类型、主键和外键等。
例如,学生表(学号,姓名,年龄,性别),课程表(课程号,课程名,学分),选课表(学号,课程号,成绩)。
(二)数据库创建1、启动 SQL Server 2019 数据库管理系统。
2、使用 CREATE DATABASE 语句创建数据库,指定数据库的名称、文件存储位置和初始大小等参数。
3、在创建的数据库中,使用 CREATE TABLE 语句创建各个表,按照逻辑设计的结果定义表的结构。
(三)数据插入1、使用 INSERT INTO 语句向表中插入数据,确保数据的完整性和准确性。
例如,向学生表中插入学生的信息:INSERT INTO Students (StudentID, Name, Age, Gender) VALUES (1, '张三', 20, '男')。
大连海事大学
数据库原理课程实验报告(2013-2014学年第二学期)
实验四高级查询
班级:网络工程2班
学号:2220133079
姓名:祁恩星
指导教师:张德珍
成绩:
大连海事大学网络工程系
2014年5月27日
目录
1实验目的 (3)
2实验内容 (3)
2.1掌握SQL高级查询使用方法 (3)
3实验要求 (3)
4实验步骤 (3)
4.1掌握SQL高级查询使用方法 (3)
5总结与体会 (4)
5.1实验中出现的问题及其解决方案............................................. 错误!未定义书签。
5.2总结............................................................................................. 错误!未定义书签。
5.3体会............................................................................................. 错误!未定义书签。
1实验目的
(1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。
2实验内容
2.1 掌握SQL高级查询使用方法
(1)分组统计。
(2)嵌套查询,包括IN查询、EXISTS查询。
(3)集合查询。
3实验要求
(1)深入复习教材第三章SQL有关高级查询语句。
(2)根据书上的例子,针对DBTestBed数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例查询做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
4实验步骤
4.1 掌握SQL高级查询使用方法
(1)不带分组过滤条件的分组统计查询。
(2)带分组过滤条件的分组统计查询。
(3)单层IN查询。
(4)IN嵌套查询。
(5)带有比较运算符的子查询
(6)单层EXISTS嵌套查询。
(7)双层EXISTS嵌套查询。
(8)集合查询(交、并、差各设计一个)。
5实验结果
见附录
6总结与体会
(1)在多个表建立关系时容易弄乱,在这个地方可以认真操作
(2)在做查询:查询至少选修了学生“2220121764”选修的全部课程的学生号码时,开始没有意识到除了双层EXISTS嵌套查询还包含了自身连接的查询。
在反复推敲后才意识到这一点并改正。
(3)高级查询的基础是基本查询,所以在做高级查询前一定要弄懂基本查询。
附录:高级SQL查询
1不带分组过滤条件的分组统计查询。
(1)统计每个学生选修课程的总学分。
(2)统计2013-2014学年第1学期信息学院开设的每门课程的最高分,最低分,及平均成绩。
(3)按学院统计2013-2014学年第2学期每个老师的上课情况(课程名称,选课人数等有关信息)。
2带分组过滤条件的分组统计查询。
(1)查询选修了3门以上课程的学生学号,姓名,年级,专业名称(及导师姓名,可选)
(2)查询2013-2014学年第1学期任教2门以上课程的教师代码,姓名。
(3)按学院统计2013-2014学年第2学期每位老师所任教课程及其不及格学生的人数
3单层IN查询。
(1)查询学号为’ 2220121764’,’ 2220121900’,’ 2220122080’的学生信息。
(2)查询学院代码为’01’,’02’,’03’ 2011级的学生信息。
(3)查询民族代码为’01’,’02’,’03’的学生信息。
(4)查询教师职称代码为’011’,’012’的教师信息。
4.IN嵌套查询。
(1)查询学院名称为“航海学院”,“轮机工程学院”,“信息科学技术学院”2012级的学生信息。
(2)查询民族名称为’汉族’,’蒙古族’,’回族’的学生信息。
(3)查询职称为’教授’,’副教授’的教师信息。
5.带有比较运算符的子查询
(1)查询指导教师为“张德珍”的所有学生信息。
(2)查询2013-2014学年第2学期选修“数据库原理”课程的所有学生信息。
(1)查询所有选修培养方案号(SchemeID)为3的学生姓名。
(2)查询没有选修培养方案号(SchemeID)为3的学生姓名。
(1)查询选修了全部课程的学生姓名。
(2)查询至少选修了学生“2220121764”选修的全部课程的学生号码。
8.集合查询(交、并、差各设计一个)。
(1)查询学生“陈海鸥”和“周文蘂”都选的课程信息。
(2)查询学生“陈海鸥”和“周文蘂”选的全部课程信息。
(3)查询学生“陈海鸥”选修过,而“周文蘂”没选修过的课程信息。
(4)查询“张德珍”老师和“刘宁宁”老师都授过课的学生信息。
(5)查询“张德珍”老师和“刘宁宁”老师授过课的所有学生信息。
(6) 查询选修过“张德珍”老师的课程,却没有听过“刘宁宁”课程的学生信息。