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) );