SQL练习与试题解析

需积分: 9 3 下载量 112 浏览量 更新于2024-07-21 收藏 23KB DOCX 举报
"SQL语句练习题,包括学生与课程关系、职工社团数据库问题,以及创建、查询和授权等操作的SQL实现" SQL是Structured Query Language的缩写,是用于管理和处理关系数据库的标准语言。本练习题涵盖了多个SQL知识点,包括表设计、主键与外键、查询语句、视图创建、条件查询、聚合函数以及权限管理。 1. 学生与课程关系的E-R图: - 学生实体:包含学号、姓名、性别、出生日期、民族、班级、家庭住址和联系电话属性。 - 课程实体:包含课程ID和课程名称属性。 - 学习关系实体:连接学生和课程,记录学号、课程ID和成绩。 2. 主键字段: - 学生表的主键是“学号”。 - 课程表的主键是“课程ID”。 - 学习表的主键是组合键“学号+课程ID”。 3. SQL语句实例: - (1) 查询所有男同学的基本信息:`SELECT * FROM 学生 WHERE 性别 = '男'` - (2) 查询学号、姓名、班级、课程名称、成绩:`SELECT 学生.学号, 学生.姓名, 学生.班级, 课程.课程名称, 学习.成绩 FROM 学生 JOIN 学习 ON 学生.学号 = 学习.学号 JOIN 课程 ON 学习.课程ID = 课程.课程ID` - (3) 查询成绩高于平均成绩的信息:需先计算平均成绩,然后比较,具体实现可能涉及子查询或窗口函数。 - (4) 查询民族为汉族或回族的学生信息:`SELECT * FROM 学生 WHERE 民族 IN ('汉', '回')` - (5) 查询成绩在70-80分间的学生姓名、课程名称和成绩:`SELECT 学生.姓名, 课程.课程名称, 学习.成绩 FROM 学生 JOIN 学习 ON 学生.学号 = 学习.学号 JOIN 课程 ON 学习.课程ID = 课程.课程ID WHERE 学习.成绩 BETWEEN 70 AND 80` 4. 职工社团数据库相关操作: - 定义表及参照关系: - `CREATE TABLE 职工 (职工号 CHAR(10) PRIMARY KEY, 姓名 VARCHAR(50), 年龄 INT, 性别 CHAR(1))` - `CREATE TABLE 社会团体 (编号 CHAR(10) PRIMARY KEY, 名称 VARCHAR(100), 负责人 CHAR(10), 活动地点 VARCHAR(200), FOREIGN KEY (负责人) REFERENCES 职工(职工号))` - `CREATE TABLE 参加 (职工号 CHAR(10), 编号 CHAR(10), 参加日期 DATE, PRIMARY KEY (职工号, 编号), FOREIGN KEY (职工号) REFERENCES 职工(职工号), FOREIGN KEY (编号) REFERENCES 社会团体(编号))` - 视图创建: - 社团负责人视图:`CREATE VIEW 社团负责人 AS SELECT 编号, 名称, 负责人, 职工表.姓名, 职工表.性别 FROM 社会团体 JOIN 职工表 ON 社会团体.负责人 = 职工表.职工号` - 参加人情况视图:`CREATE VIEW 参加人情况 AS SELECT 职工表.职工号, 职工表.姓名, 社会团体.编号, 社会团体.名称, 参加.参加日期 FROM 职工表 JOIN 参加 ON 职工表.职工号 = 参加.职工号 JOIN 社会团体 ON 参加.编号 = 社会团体.编号` - 其他查询和操作请参考上述SQL语句的模式进行编写。 5. 数据库权限管理: - 为用户李平分配权限:`GRANT SELECT, INSERT, DELETE ON 社会团体, 参加 TO '李平';` - 李平转授权限:`GRANT SELECT, INSERT, DELETE ON 社会团体, 参加 TO '其他用户';` 此外,题目中还提到建立一个名为student的数据库表和一个名为computer的数据表,但具体的字段和操作未给出,所以无法提供相应的SQL语句。在实际操作中,应根据需求定义这些表的结构,并根据需要编写相应的增删改查语句。