MySQL数据库设计试卷B:试卷管理

一、选择题
1、在创建MySQL数据库时,以下哪个命令用于创建数据库?
A. CREATE DATABASE
B. DROP DATABASE
C. ALTER DATABASE
D. SELECT DATABASE
答案:A
2、以下哪个数据类型适合存储日期和时间?
A. INT
B. VARCHAR
C. DATE
D. TEXT
答案:C
3、在MySQL中,以下哪个函数可以用来获取当前日期和时间?
A. NOW()
B. GETDATE()
C. CURDATE()
D. CURRENT_DATE()
答案:A

4、以下哪个SQL语句用于删除表中的所有记录?
A. DELETE FROM table_name
B. TRUNCATE TABLE table_name
C. DROP TABLE table_name
D. UPDATE table_name SET column_name = NULL
答案:B
5、在MySQL中,以下哪个关键字用于限制查询结果的数量?
A. LIMIT
B. MAX
C. MIN
D. AVG
答案:A
二、填空题
1、在MySQL中,创建一个名为students 的表,包含id(主键)、name(字符串)、age(整数)和grade(浮点数)字段的SQL语句是:CREATE TABLE students (id INT PRIMARY KEY, name VARCHAR(100), age INT, grade FLOAT);
2、要将students 表中的所有记录的age 字段值增加1,可以使用以下SQL语句:UPDATE students SET age = age + 1;
3、要查询students 表中年龄大于20的所有学生,可以使用以下SQL语句:SELECT * FROM students WHERE age > 20;
4、在MySQL中,创建一个名为exams 的表,包含exam_id(主键)、student_id(外键)、score(浮点数)和date(日期)字段的SQL语句是:CREATE TABLE exams (exam_id INT PRIMARY KEY, student_id INT, score FLOAT, date DATE, FOREIGN KEY (student_id) REFERENCES students(id));
5、要查询所有学生的姓名和他们的最高分数,可以使用以下SQL语句:SELECT s.name, MAX(e.score) AS max_score FROM students s JOIN exams e ON s.id = e.student_id GROUP BY s.name;
三、简答题

1、简述数据库设计的三范式(1NF、2NF、3NF)及其作用。
答案:
第一范式(1NF):保证表中所有列都是原子性的,即不可再分。
第二范式(2NF):在满足1NF的基础上,表中的非主键列必须完全依赖于主键。
第三范式(3NF):在满足2NF的基础上,表中的非主键列不能依赖于其他非主键列。
作用:确保数据的冗余最小,提高数据的一致性和完整性。
2、解释什么是外键约束,并说明其在数据库设计中的作用。
答案:
外键约束是一种用于保证数据一致性的机制,它确保一个表中的外键列的值必须与另一个表的主键列的值匹配。
作用:在关联表之间建立关系,防止数据不一致和错误的数据插入。
四、综合应用题
设计一个试卷管理系统的数据库,包含以下表:
1、papers 表:存储试卷信息,字段包括paper_id(主键)、title)、subject(科目)、total_score(总分)和pass_score(及格分)。
2、questions 表:存储题目信息,字段包括question_id(主键)、paper_id(外键)、content)、type(题目类型,如选择题、填空题等)和score(分值)。
3、options 表:存储选择题的选项信息,字段包括option_id(主键)、question_id(外键)、option_text)和is_correct(是否为正确选项)。
请根据上述设计,写出创建这些表的SQL语句。
答案:
CREATE TABLE papers (
paper_id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
subject VARCHAR(100) NOT NULL,
total_score INT NOT NULL,
pass_score INT NOT NULL
);
CREATE TABLE questions (
question_id INT PRIMARY KEY AUTO_INCREMENT,
paper_id INT NOT NULL,
content TEXT NOT NULL,
type VARCHAR(50) NOT NULL,
score INT NOT NULL,
FOREIGN KEY (paper_id) REFERENCES papers(paper_id)
);
CREATE TABLE options (
option_id INT PRIMARY KEY AUTO_INCREMENT,
question_id INT NOT NULL,
option_text VARCHAR(255) NOT NULL,
is_correct BOOLEAN NOT NULL,
FOREIGN KEY (question_id) REFERENCES questions(question_id)
);