数据库实践:SQL创建与查询

需积分: 0 0 下载量 90 浏览量 更新于2024-09-19 收藏 75KB DOC 举报
"数据库练习,包括创建数据库、创建表、数据录入、SQL查询等实践操作。" 在这份数据库练习中,我们关注的核心知识点是数据库管理和SQL语言的应用。首先,我们需要了解如何使用SQL语句来创建数据库和表。例如,创建名为“数据库练习”的数据库可以使用以下语句: ```sql CREATE DATABASE 数据库练习; ``` 然后,我们需要在该数据库中创建“学生”、“课程”和“成绩”三张表。每张表应包含相应的字段,并根据描述设定数据类型和完整性约束。例如,“学生”表的创建语句可能如下: ```sql CREATE TABLE 学生 ( 学号 INT PRIMARY KEY, 姓名 VARCHAR(10), 性别 CHAR(1), 年龄 INT, 所在系 VARCHAR(20) ); ``` “课程”表和“成绩”表的创建方式类似,需要确保主键和外键的设置正确,以便维护数据的一致性。例如,“成绩”表中的“学号”和“课号”字段应作为外键,引用“学生”和“课程”表的主键。 接下来是数据录入。我们可以使用`INSERT INTO`语句将给定的数据插入到相应的表中。例如,插入“学生”表的首条记录: ```sql INSERT INTO 学生 (学号, 姓名, 性别, 年龄, 所在系) VALUES ('9512101', '李勇', '男', 19, '计算机系'); ``` 对于查询部分,我们需要利用SQL的聚合函数(如COUNT()、MAX())和连接操作来完成各种复杂的查询。以下是一些示例查询的SQL实现: 4.1 统计每门课程的修课人数和考试最高分: ```sql SELECT 课号, COUNT(*) AS 修课人数, MAX(成绩) AS 最高分 FROM 成绩 GROUP BY 课号; ``` 4.2 查询修课门数超过2门的学生的平均成绩和选课门数: ```sql SELECT 学号, AVG(成绩) AS 平均成绩, COUNT(DISTINCT 课号) AS 选课门数 FROM 成绩 GROUP BY 学号 HAVING COUNT(DISTINCT 课号) > 2; ``` 4.3 查询计算机系修了“数据库基础”课程的学生的姓名、性别和成绩: ```sql SELECT s.姓名, s.性别, g.成绩 FROM 学生 s JOIN 成绩 g ON s.学号 = g.学号 WHERE s.所在系 = '计算机系' AND g.课号 = 'c04'; ``` 4.4 查询哪些学生合选了一门课程,列出所选课程的学生学号和课程号: ```sql SELECT g1.学号, g1.课号 FROM 成绩 g1 JOIN 成绩 g2 ON g1.课号 = g2.课号 AND g1.学号 <> g2.学号; ``` 4.5 查询选修了C01号课程的学生的姓名和所在系: ```sql SELECT s.姓名, s.所在系 FROM 学生 s JOIN 成绩 g ON s.学号 = g.学号 WHERE g.课号 = 'c01'; ``` 4.6 查询'VB'课程考试成绩前三名的学生的学号、姓名、所在系: ```sql SELECT s.学号, s.姓名, s.所在系 FROM 学生 s JOIN 成绩 g ON s.学号 = g.学号 WHERE g.课号 = 'c02' ORDER BY g.成绩 DESC LIMIT 3; ``` 4.7 删除信息系修课成绩小于60的学生记录,可以使用`DELETE`语句配合子查询: ```sql DELETE FROM 成绩 WHERE 学号 IN ( SELECT g.学号 FROM 学生 s JOIN 成绩 g ON s.学号 = g.学号 WHERE s.所在系 = '信息系' AND g.成绩 < 60 ); ``` 这个练习涵盖了数据库设计、数据录入和SQL查询的各个方面,是学习和检验数据库操作技能的好素材。通过这些练习,不仅可以熟悉SQL的基本语法,还能掌握如何处理实际数据和进行复杂查询。