数据库基础(MySQL) | 试卷

王先生
2024-12-28 / 0 评论 / 9 阅读 / 正在检测是否收录...

《数据库基础(MySQL)》试卷

满分:100分


一、选择题(每题3分,共10题,总计30分)

  1. 在MySQL中,用于放置可执行文件的目录是(A)

    • A. bin目录
    • B. data目录
    • C. include目录
    • D. lib目录
  2. 以下哪个命令可以实现切换到test数据库(D)

    • A. \s test
    • B. \h test
    • C. ? Test
    • D. \u test
  3. 创建视图的SQL语句命令是(C)

    • A. CREATE SCHEMA
    • B. CREATE TABLE
    • C. CREATE VIEW
    • D. CREATE INDEX
  4. 在MySQL中,建立数据库的命令是(D)

    • A. CREATE TABLE
    • B. CREATE TRIGGER
    • C. CREATE INDEX
    • D. CREATE DATABASE
  5. 删除数据库的命令是(A)

    • A. DROP DATABASE
    • B. DELETE DATABASE
    • C. ALTER DATABASE
    • D. REMOVE DATABASE
  6. 以下哪个命令可以删除表中的所有数据,但保留表结构(C)

    • A. DELETE FROM table_name
    • B. DROP TABLE table_name
    • C. TRUNCATE TABLE table_name
    • D. CLEAR TABLE table_name
  7. 在MySQL中,使用哪种语句可以向表中插入一行或多行数据(A)

    • A. INSERT
    • B. UPDATE
    • C. DELETE
    • D. REPLACE
  8. 在MySQL中,用于定义主键约束的关键字是(A)

    • A. PRIMARY KEY
    • B. FOREIGN KEY
    • C. UNIQUE
    • D. CHECK
  9. 以下哪个聚合函数可以用来计算表中某一列的平均值(B)

    • A. SUM()
    • B. AVG()
    • C. COUNT()
    • D. MAX()
  10. 在MySQL中,局部变量名以什么符号开头(A)

    • A. @
    • B. #
    • C. $
    • D. %

二、填空题(每题3分,共10题,总计30分)

  1. 在MySQL中,通常使用 __ 语句来指定一个已有数据库作为当前工作数据库。
    答案:use database
  2. MySQL的存储引擎有 ____ 两种常见类型。
    答案:InnoDB;MyISAM
  3. 在SELECT查询语句中, __ 子句用于指定查询结果中的字段列表。
    答案:select
  4. 在SELECT查询语句中, __ 子句用于对查询结果排序。
    答案:order by
  5. 在MySQL中,字符串常量用 __ 引起来,日期型常量用 __ 引起来。
    答案:单引号;单引号
  6. 函数LENGTH('I am a student')的返回值是 ________。
    答案:14
  7. 函数REPLACE('计算机软件技术专业', '软件', '网络')的返回值是 ________。
    答案:计算机网络技术专业
  8. 函数YEAR('1941-7-6')的返回值是 ________。
    答案:1941
  9. 在MySQL中,创建存储过程的命令是 ________。
    答案:CREATE PROCEDURE
  10. 在MySQL中,创建触发器的命令是 ________。
    答案:CREATE TRIGGER

三、判断题(每题2分,共10题,总计20分)

  1. 视图是一个虚拟表,它并不实际存储数据。( 对 )
  2. 在视图上可以创建新的基本表。( 错 )
  3. MyISAM存储引擎支持事务处理。( 错 )
  4. InnoDB存储引擎支持外键约束。( 对 )
  5. 使用TRUNCATE TABLE语句删除数据后,可以通过回滚操作恢复数据。( 错 )
  6. 在MySQL中,全局变量是由系统提供并赋值,用户不能修改其值。( 对 )
  7. 存储过程可以带参数,也可以不带参数。( 对 )
  8. 触发器可以在表上创建,但不能在视图上创建。( 对 )
  9. 在MySQL中,DELETE语句可以一次删除多行数据。( 对 )
  10. 在MySQL中,局部变量名以@开头。( 对 )

四、简答题(每题10分,共20分)

  1. 请编写一段SQL代码,创建一个名为students的数据库,并在其中创建一个名为student_info的表,表结构包括学号(主键,无符号递增)、姓名、性别、年龄四个字段。

    答案:

    • 创建 students 数据库:

      CREATE DATABASE students;
    • 切换到 students 数据库:

      USE students;
    • 创建 student_info 表,学号为主键且无符号递增:

      CREATE TABLE student_info (
          学号 INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
          姓名 VARCHAR(50) NOT NULL,
          性别 CHAR(2) NOT NULL,
          年龄 INT NOT NULL
      );
  2. 请编写一段SQL代码,创建一个名为grades的表,表结构包括学号、课程编号、成绩三个字段,并为学号课程编号设置联合主键。然后插入两条记录,分别是:学号202301,课程编号CS101,成绩85;学号202302,课程编号CS101,成绩90

    答案:

    • 创建 grades 表,学号和课程编号为联合主键:

      CREATE TABLE grades (
          学号 CHAR(6) NOT NULL,
          课程编号 CHAR(6) NOT NULL,
          成绩 INT NOT NULL,
          PRIMARY KEY (学号, 课程编号)
      );
    • 插入两条记录:

      INSERT INTO grades (学号, 课程编号, 成绩) VALUES ('202301', 'CS101', 85);
      INSERT INTO grades (学号, 课程编号, 成绩) VALUES ('202302', 'CS101', 90);

五、综合题(每题10分,共20分)

  1. 假设有一个名为employees的表,包含以下字段:id(员工ID,主键,无符号递增),name(员工姓名),department(部门名称),salary(工资)。请编写SQL语句完成以下操作:

    a. 查询所有员工的姓名和工资。

    b. 将部门为“销售部”的员工工资增加10%。

    c. 删除工资低于3000的员工记录。

    d. 插入一条新记录,员工ID为1001,姓名为“张三”,部门为“市场部”,工资为5000。

    答案:

    • 查询所有员工的姓名和工资:

      SELECT name, salary FROM employees;
    • 将部门为“销售部”的员工工资增加10%:

      UPDATE employees SET salary = salary * 1.1 WHERE department = '销售部';
    • 删除工资低于3000的员工记录:

      DELETE FROM employees WHERE salary < 3000;
    • 插入一条新记录:

      INSERT INTO employees (id, name, department, salary) VALUES (1001, '张三', '市场部', 5000);
  2. 假设有两个表:students(学生表)和courses(课程表)。students表包含字段:id(学生ID,主键),name(学生姓名)。courses表包含字段:id(课程ID,主键),course_name(课程名称),student_id(学生ID,外键)。请编写SQL语句完成以下操作:

    a. 查询所有选修了“计算机基础”课程的学生姓名。

    b. 使用左连接查询所有学生及其选修的课程名称,即使没有选修任何课程的学生也要显示。

    c. 使用右连接查询所有课程及其选修该课程的学生姓名,即使没有学生选修的课程也要显示。

    d. 更新courses表,将所有选修了“计算机基础”课程的学生的课程名称改为“计算机科学导论”。

    答案:

    • 查询所有选修了“计算机基础”课程的学生姓名:

      SELECT s.name 
      FROM students s 
      JOIN courses c ON s.id = c.student_id 
      WHERE c.course_name = '计算机基础';
    • 使用左连接查询所有学生及其选修的课程名称:

      SELECT s.name, c.course_name 
      FROM students s 
      LEFT JOIN courses c ON s.id = c.student_id;
    • 使用右连接查询所有课程及其选修该课程的学生姓名:

      SELECT s.name, c.course_name 
      FROM students s 
      RIGHT JOIN courses c ON s.id = c.student_id;
    • 更新courses表,将所有选修了“计算机基础”课程的学生的课程名称改为“计算机科学导论”:

      UPDATE courses 
      SET course_name = '计算机科学导论' 
      WHERE course_name = '计算机基础';

试卷格式说明

  • 选择题:直接在题目上标明答案,使用括号标明选项字母。
  • 填空题:题干中的空格用下划线标明,答案放在题目后面。
  • 判断题:答案直接写在题干后面,使用“对”或“错”表示。
  • 简答题:题目和答案分开,答案部分详细描述操作步骤或SQL代码。
  • 综合题:题目分为多个小问题,每个小问题的答案分别给出。

评论 (0)

取消