数据库 SQL结构化查询语言
一、目的与要求掌握SQL语言的查询功能掌握SQL语言的数据操作功能掌握附加数据库的操作。二、实验准备了解SQL语言的查改增删四大操作的语法了解参照完整性的概念和作用了解各类常用函数的含义。三、实验内容(一)SQL查询功能使用老师提供的studentdb数据库文件先附加到对象资源管理器中再完成下列题目SQL命令请保存到脚本文件中。所有题目的程序及运行结构都要截图写入实验报告。1单表查询查询所有姓王的学生的姓名、学号和性别使用分组查询男生和女生的人数查询结果列为性别人数。查询成绩在75~90之间的选课信息按成绩降序排列查询哪些课程被学生选了显示不重复的课程号查询学生选课的人次数和人数查询所有同学都及格的那些课程的平均分最高分和最低分。2连接查询查询选了“C语言程序设计基础”的学生学号姓名成绩学分按成绩升序排列。查询所有学生的选课情况不管他是否选课都要查出学号姓名班级课程号成绩未选课者则课程号和成绩为null结果按班级降序排列同一个班按学号降序排列。查询“大学计算机基础”课程考试成绩前三名的学生姓名和成绩。3. 嵌套查询查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名和年龄用in查询和exists查询分别写出查询选了“9710041”课程的学生的姓名和所在班级。查询选修了学号为“2001050105”的学生所选全部课程的学生姓名。4集合查询及其他用集合查询求选了9710041或者9710011的学号课程号和成绩。用集合查询求选了9710011课程但是没选9720013课程的学号。用集合查询求同时选了9710041和9720043课程的学号。查询所有学生的总成绩要求列出学号、姓名、总成绩没有选修课程的学生总成绩为空。查询每个学生所选课程中的最高分课程的选课信息要求列出学号姓名该门最高分课程的课程编号和具体分数。(二)SQL的增删改功能在实验二建立的studb数据库中写SQL语句实现增删改功能。1在S表中增加如下记录在C表中将课程名为“数据库”的学分更改为3删除S表中S2的学生记录请问是否能删除?为什么要如何操作。提示S表和SC表之间有外键联系。不能。需要创建级联删除的语句,创建外键的时候.在删除主记录的时候删除对应外键的明细。就是说删除这个学生信息的时候同时也删除他的成绩信息。四、思考与练习1数据库中两个表存在外键联系是否可以直接删除主键表应该如何正确操作不可以直接删除主键表。要正确删除主键表需要先删除外键表中与主键表相关的数据或者修改外键表中的外键约束使其不再指向要删除的主键表。然后才能删除主键表。2查询年龄最大的教师号和年龄SQL命令如下请问为什么报错如何修改Select tno,max(year(getdate( ))-year(tbirday))From T因为在Select子句中只选择了tno和一个表达式max(year(getdate())-year(tbirday))但是没有给这个表达式取一个别名导致无法识别结果集中的这一列。修改后Select tno, max(year(getdate()) - year(tbirday)) as max_ageFrom T;