MySQL机试指南:创建与查询数据库

需积分: 13 1 下载量 54 浏览量 更新于2024-08-05 收藏 18KB DOCX 举报
"该文档是针对初学者的MySQL上机考试题目,主要涉及数据库创建、表结构设计、数据查询等内容。考试要求在120分钟内完成,总分为100分,需提交SQL脚本文件,不能提交数据库文件。考试涉及到的表有两个,分别是ClassInfo(班级表)和StudentInfo(学生信息表)。" 以下是根据给定信息总结的MySQL相关知识点: 1. 创建数据库: 使用`CREATE DATABASE`语句创建名为SchoolDB的数据库。例如: ```sql CREATE DATABASE SchoolDB; ``` 2. 创建数据表: - 对于ClassInfo表,可以这样创建: ```sql CREATE TABLE ClassInfo ( ClassId INT PRIMARY KEY, ClassName CHAR(20) UNIQUE ); ``` - 对于StudentInfo表,其创建语句可能如下: ```sql CREATE TABLE StudentInfo ( StudentId INT PRIMARY KEY, ClassId INT, StudentNo VARCHAR(6) CHECK (LENGTH(StudentNo) = 6) UNIQUE, StudentName VARCHAR(20), StudentAge INT CHECK (StudentAge BETWEEN 16 AND 30), StudentGender CHAR(1) DEFAULT '1' CHECK (StudentGender IN ('0', '1')), StudentAddress VARCHAR(30) DEFAULT '重庆', StudentBirthday DATE ); ``` 注意外键ClassId需要引用ClassInfo表的ClassId,因此还需添加外键约束: ```sql ALTER TABLE StudentInfo ADD CONSTRAINT fk_classinfo_studentinfo FOREIGN KEY (ClassId) REFERENCES ClassInfo(ClassId); ``` 3. 数据查询: - 查询某学生的所有信息(包括班级): ```sql SELECT * FROM StudentInfo s JOIN ClassInfo c ON s.ClassId = c.ClassId WHERE s.StudentId = [指定的学生ID]; ``` - 查询学生信息表所有年满18岁的女同学: ```sql SELECT * FROM StudentInfo WHERE StudentAge >= 18 AND StudentGender = '0'; ``` - 查询住址非重庆地区的同学: ```sql SELECT * FROM StudentInfo WHERE StudentAddress != '重庆'; ``` - 查询年龄最小和最大的同学信息: ```sql SELECT * FROM StudentInfo ORDER BY StudentAge ASC LIMIT 1; -- 最小年龄 SELECT * FROM StudentInfo ORDER BY StudentAge DESC LIMIT 1; -- 最大年龄 ``` 4. 数据插入: 插入测试数据需要根据具体字段和表结构进行,确保满足所有的约束条件,例如: ```sql INSERT INTO ClassInfo (ClassId, ClassName) VALUES (1, '一年级'); INSERT INTO StudentInfo (StudentId, ClassId, StudentNo, StudentName, StudentAge, StudentGender, StudentAddress, StudentBirthday) VALUES (1, 1, 'S00001', '张三', 19, '0', '北京', '2002-01-01'); ``` 依次为每个表插入至少5条数据。 5. 评分标准: 每个任务都有相应的分数,确保脚本逻辑清晰、书写工整且包含注释,以便评审。 6. 注意事项: - 提交的文件应为`.sql`格式,包含所有创建表、插入数据和执行查询的脚本。 - 脚本应遵循SQL标准语法,并确保符合题目要求的所有约束。 在实际操作时,考生需根据题目要求和所给的字段说明,编写完整的SQL语句,确保所有任务都得到解决,并且在编写脚本时加入适当的注释,提高代码可读性。