第一部分《MySQL 8.0数据库应用与开发(微课视频版)》习题参考答案 学习导读: 本部分包括《MySQL 8.0数据库应用与开发(微课视频版)》第1~14章的教学重点和难点提示,以及所有习题的参考答案,所有代码均在MySQL 8.0.22版本的环境下测试通过。 每章习题包括选择题、简答题和上机练习题3种类型。 (1) 选择题侧重基本概念和基本操作的知识点掌握。 (2) 简答题侧重基本概念的理解。 (3) 上机练习题侧重基本操作的练习。 建议读者在学习过程中通过习题熟悉MySQL数据库的基本概念和基本操作,不要满足于看懂程序或习题答案,要多动手做练习,并且要达到一定的做题速度和正确率。另外,在此基础上借助于网络或其他工具,举一反三,解决一些比教材习题更新颖、算法更复杂的问题。 再者,本书第3章的习题答案之后附加的主教材和指导书常用数据库teaching的表结构和数据,仅供读者在学习过程中参考。读者在学习过程中,重点关注例题代码和习题代码的运行状况即可。读者还可以根据表结构的定义,在进行操作时自行添加一定数量的MySQL数据,以观察代码的运行状况,进一步加深自己的理解,并通过代码运行时间观察和理解算法优化的重要性。 需要指出的是,主教材例题、指导书上机习题的代码运行和上机实验测试,对数据库表中的数据进行了大量的增删查改操作,数据库teaching中的数据在代码运行过程中一定会发生一些变化。 第1章MySQL数据库概述 1.1教学要求 1.1.1基本要求 (1) 掌握有关数据库的基本概念及其之间的关系,例如数据、信息、数据库、数据库管理系统、数据库系统和SQL。 (2) 掌握有关数据库的基本关系理论,掌握投影、选择和连接的内涵。 (3) 掌握概念模型的实体、属性、联系、主键、实体集、实体型的基本概念和含义,了解概念模型的表示方法,了解数据库设计中关系模型的规范化的意义。 (4) 了解MySQL数据库软件的特点和用途。 (5) 熟练掌握MySQL数据库软件的下载、安装和配置过程。 (6) 学会利用客户端工具登录MySQL数据库。 (7) 了解可视化软件MySQL Workbench的安装和使用方法。 (8) 积累和掌握本课程的常用英文词汇。 1.1.2重点与难点 1. 本章重点 (1) 数据库管理系统的功能和组成。 (2) 关系数据库的基本理论。 (3) 数据库系统的基本组成。 (4) 安装、启动和配置MySQL的基本过程。 (5) 利用客户端工具登录MySQL数据库。 2. 本章难点 (1) MySQL数据库软件的下载、安装和配置过程。 (2) 利用客户端工具登录MySQL数据库。 (3) 关系模型的规范化设计的用途。 (4) 概念模型的表示方法——ER图的实现。 1.2习题参考答案 1. 选择题 (1) 数据模型的三要素不包括。 A. 数据结构B. 数据操作C. 数据类型D. 完整性约束 (2) 关系运算不包括。 A. 连接B. 投影C. 选择D. 查询 (3) 表11(主教材中)所示的学生信息表中的主键为。 A. studentnoB. sexC. birthdayD. sname 表11student表 studentnosnamesexbirthdatephone 21125221327何桐影女2004/12/413178978999 21131133071崔依歌男2002/6/615556845645 …………… (4) 下面数据库产品中是开源数据库。 A. OracleB. SQL ServerC. MySQLD. DB2 (5) 在ER模型中,信息的3种概念单元不包括。 A. 实体型B. 实体值C.实体属性D.实体间联系 (6) ER图是数据库设计工具之一,一般适用于建立数据库的。 A. 概念模型B. 结构模型C. 物理模型D. 逻辑模型 (7) SQL又称。 A. 结构化定义语言B. 结构化控制语言 C. 结构化查询语言D. 结构化操纵语言 (8) 从ER模型向关系模型转换,一个M∶N的联系转换成一个关系模式时,该关系模式的主键是。 A. M端实体的键B. N端实体的键 C. M端实体键与N端实体键的组合D. 重新选取其他属性 (9) DB、DBS和DBMS三者之间的关系是。 A. DB包括DBMS和DBSB. DBS包括DB和DBMS C. DBMS包括DB和DBSD.不能相互包括 参考答案: CDACBACCB 2. 简答题 (1) 什么是数据库管理系统?请举出日常生活中一些应用数据库的实际范例。 答: 数据库管理系统(DBMS)是位于用户和操作系统之间的一种操纵和管理数据库的软件,用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性,是数据库系统的核心。 在日常生活中,像学生信息管理、网上购物、银行存取款、购买火车票等,其软件的后台都是由数据库作为支撑。 (2) MySQL数据库管理系统的基本架构拥有哪4个模块? 答: 数据库管理系统由多种不同的程序模块组成,数据库管理系统的基本架构一般包括以下4个模块。 ① 存储管理: 数据库管理系统通常会自行配置磁盘空间,将数据存入存储装置的数据库。 ② 查询处理: 负责处理用户下达的查询语言命令语句,可以再细分成多个模块,负责检查语法、优化查询命令的处理程序。 ③ 事务管理: 在事务管理中,同名的事务管理子系统负责处理数据库的事务,保障数据库事务的操作需要一并执行; 锁定管理也称为并发控制管理子系统,负责资源的锁定。 ④ 恢复管理: 恢复管理主要是日志管理子系统,负责记录数据库的所有操作,包含事务日志,以便同名的恢复管理子系统能够执行恢复处理,恢复数据库系统存储的数据到指定的时间点。 (3) 举例说明3种关系运算的特点。 答: 在关系中访问所需的数据时,需要对关系进行一定的关系运算。关系数据库主要支持选择、投影和连接关系运算,它们源于关系代数中的并、交、差、选择、投影和连接等运算。 ① 选择关系用于查找符合条件的行,从而形成新关系。新关系和原来关系的结构一致,记录行一般会变少。例如,在学生表中查询年龄在18岁以上的学生记录。 ② 投影关系是从一个表中找出若干字段形成一个新关系的操作,新关系与原来关系的记录行应该一样多,但其数据列一般会变少。例如,在学生表中输出学生的学号、姓名和出生日期。 ③ 连接关系是从两个表中选择满足条件的记录,且新关系中包含原来多个关系的列,新关系结构中的列类型由原来关系中的列映射而来。例如,查询学生的学号、姓名和期末成绩。3个输出项并不是在一个表中可以搜索到,需要进行连接操作,即将两个或多个表中的行按一定的条件横向结合,形成一个新的临时表,在此临时表中进行数据查询。 3. 上机练习题 (1) 在“服务”窗口中练习MySQL服务器的启动和关闭方法。 答: 单击“开始”按钮,选择“运行”命令,输入services.msc后按Enter键,弹出如图11所示的窗口。从中可以看到MySQL服务已经启动,而且服务的启动类型是自动启动。 图11“服务”窗口 右击MySQL80服务项,弹出如图12所示的快捷菜单,可以通过该菜单对MySQL80服务器进行“启动”“停止”“暂停”“恢复”“重新启动”等操作。 图12更改服务的启动类型 (2) 在控制台中完成启动MySQL服务后打开控制台,在控制台中输入密码完成MySQL的登录,并且执行select的相关语句查看系统的当前日期。 答: 主要操作命令和运行结果如下。 C:\Users\Administrator> mysql -u root -p Enter password: ****** mysql>select curdate(); +------------+ | curdate() | +------------+ | 2020-12-01 | +------------+ 1 row in set (0.07 sec) (3) 打开MySQL Workbench软件,简述其可视化界面的主要功能区。 答: 单击“开始”按钮,选择“所有程序”命令,然后执行MySQL路径下的MySQL Workbench 8.0 CE命令,即可进入MySQL Workbench连接界面,输入密码后进入如图13所示的MySQL Workbench软件的可视化界面。 图13MySQL Workbench软件的可视化界面 其主要功能区如下。 ① 菜单和工具栏: 如图14所示,在MySQL Workbench主界面中可以通过File、Edit、View、Query、Database等下拉菜单和工具栏实现MySQL数据库对象的创建、修改、查询、删除等常见操作。 图14菜单和工具栏 ② Navigator导航区: 如图15所示,其主要包括MANAGEMENT(管理)下的服务器状态、客户端连接、用户权限、数据的导出等,以及实例(INSTANCE)和性能(PERFORMANCE)管理。 ③ Schemas数据库: 如图16所示,在数据库操作界面的Schemas区域可以看到用户创建的数据库以及MySQL中的系统数据库,通过展开数据库文件夹可以看到数据库对象。右击数据库对象,可以实现对数据库对象的创建、修改、查询和删除等操作。 图15导航区 图16Schemas数据库 ④ 命令的编辑和执行: 通过对数据库对象的右键快捷菜单操作或直接输入命令,可以在Query区进行命令的编辑和执行,并将结果输出到Result区。如图17所示,输入一个表达式和函数,单击“执行”按钮,结果就显示出来。同时,Output区中会显示操作日志,如图18所示。 图17查询命令的编辑和执行 图18操作日志 另外,在 SQL additions工作区中通过Jump to下拉框选择select、update、delete等命令,则会显示相关命令的帮助信息,例如命令格式等。 第2章MySQL 8.0语言基础 2.1教学要求 2.1.1基本要求 (1) 了解字符集和字符序的基本概念和用途。 (2) 掌握标识符、关键字、常量、变量等MySQL 8.0基本语法要素的概念和应用。 (3) 熟练掌握常用字符型、数值型、日期时间型等数据类型的用途。 (4) 熟练掌握算术运算符、比较运算符、逻辑运算符及位运算的用途,了解运算符的优先级及其作用。 (5) 熟练掌握常用字符型函数、日期时间型函数、数值型函数的格式和用途。 (6) 掌握各种值类型表达式的写法和运算类型。 (7) 学会利用select语句对常量、变量、函数、表达式等进行数据输出的操作。 2.1.2重点与难点 1. 本章重点 (1) 字符集和字符序的基本概念。 (2) 标识符、关键字、常量、变量等MySQL 8.0基本语法要素的概念和应用。 (3) 常用字符型、数值型、日期时间型等数据类型的用途。 (4) 算术运算符、比较运算符、逻辑运算符及位运算的用途。 (5) 常用字符型函数、日期时间型函数、数值型函数的格式和用途。 2. 本章难点 (1) 各种数据类型的变量的定义和使用方法。 (2) 常用字符型函数、日期时间型函数、数值型函数的格式。 (3) 算术运算符、比较运算符、逻辑运算符的使用方法。 2.2习题参考答案 1. 选择题 (1) 以下命令是DML语句。 A. create databaseB. alter tableC. selectD. alter database (2) 以下关于MySQL的说法中错误的是。 A. MySQL是一种关系型数据库管理系统 B. MySQL软件是一种开放源代码的软件 C. MySQL服务器工作在客户端/服务器端模式下或嵌入式系统中 D. MySQL中的MySQL语句区分大小写 (3) 在控制台中执行语句时可以退出MySQL。 A. exitB. go或quitC. go或exitD. exit或quit (4) 关于MySQL数据库的说法,下列选项的说法是错误的。 A. MySQL数据库不仅开放源代码,而且能够跨平台使用 B. MySQL数据库启动服务时有两种方式,如果服务已经启动,可以在任务管理器中查找mysqlid.exe程序,如果该进程存在,则表示正在运行 C. 手动更改MySQL的配置文件my.ini时只能更改与客户端有关的配置,不能更改与服务器端相关的配置信息 D. 登录MySQL数据库成功后,直接输入“help;”语句,按Enter键可以查看帮助信息 (5) 下列类型不是MySQL中常用的数据类型。 A. intB. varC. timeD. char (6) 在MySQL中会话变量前面的字符为。 A. 空格B. #C. @@D. @ (7) 设置表的默认字符集的关键字是。 A. default characterB. default set C. defaultD. default character set 参考答案: CDDCBDD 2. 简答题 (1) 简述字符集utf8mb4与UTF8的区别。 答: utf8mb4是MySQL 8.0的默认字符编码,能够实现UTF8 Unicode机制的编码,其中mb4表示most bytes 4,最多占用4字节。UTF8编码是一种变长的编码机制,可以用1~4字节存储字符。MySQL 8.0默认的排序字符序是utf8mb4_0900_ai_ci。 UTF8是针对Unicode字符的一种变长字符编码。该字符集对英文使用1字节来编码,对中文使用3字节来编码。UTF8包含全世界所有国家需要用到的字符,是通用国际编码。UTF8编码的文字可以在各国支持UTF8字符集的浏览器上显示。 (2) datetime类型和timestamp类型有什么相同点和不同点? 答: 日期与时间类型是为了方便在数据库中存储日期和时间而设计的,datetime和timestamp表示日期和时间。其中每种类型都有其取值范围,如果赋予它一个不合法的值,将会被0代替。datetime的取值范围为10000101 00:00:00~99991231 23:59:59,而timestamp的取值范围是19700101 00:00:00至2037年的某个时间。 (3) MySQL支持的数据类型主要分成哪3类?15属于什么类型?17属于什么类型? 答: MySQL支持的数据类型主要分成数值型、字符型和日期时间型。15属于数值型中的整型数据。17属于字符型数据。 (4) 简述系统变量、全局变量和会话变量的关系。 答: 系统变量包括全局系统变量和会话系统变量两种类型。 全局变量在MySQL启动时由服务器自动初始化为默认值,主要影响整个MySQL实例的全局设置,大部分全局变量都是作为MySQL的服务器调节参数存在。对全局变量的修改会影响到整个服务器。 会话变量在每次建立一个新的连接时由MySQL来初始化。对会话变量的修改只会影响到当前的会话,也就是当前的数据库连接。会话变量可以随时定义,必须在名称前加@符号。 (5) 简述聚合函数的特点和用途。 答: 聚合函数用于对一组值进行计算并返回一个单一的值。除count()函数之外,其他聚合函数忽略空值。聚合函数经常与select语句的group by子句一起使用。聚合函数的作用是在结果集中通过对被选列值的收集处理,返回一个数值型的计算结果。 3. 上机练习题 (1) 创建文本文件“D:\my717.txt”,查询系统当前日期、当前时间以及到2025年1月1日还有多少天,然后通过MySQL命令执行文本文件中的内容。 文本文件的内容如下: select now(); -- 查询当前日期 select curtime(); -- 输出当前时间 select datediff('2025-1-1',now()); -- 到2025年1月1日的天数 答: 在DOS窗口中执行MySQL命令,指定文本文件并执行该文件中的语句。 输出结果如下: C:\Users\Administrator>mysql<D:\my717.txt -u root -p Enter password: ****** now() 2021-03-18 10:58:28 curtime() 10:58:28 datediff('2025-1-1',now()) 1385 C:\Users\Administrator> (2) 利用随机函数输出20~90的任意两个数(含两位小数)。 答: 命令和运行结果如下。 mysql> select 20+ round(70*rand(),2), 20+ round(70*rand(),2); +------------------------+------------------------+ | 20+ round(70*rand(),2) | 20+ round(70*rand(),2) | +------------------------+------------------------+ | 45.89 | 20.68 | +------------------------+------------------------+ 1 row in set (0.02 sec) (3) 计算1000天后的日期和3000分钟后的时间。 答: 命令和运行结果如下。 mysql> select date_add(now(),interval 1000 day); +-----------------------------------+ | date_add(now(),interval 1000 day) | +-----------------------------------+ | 2023-12-12 13:48:37 | +-----------------------------------+ 1 row in set (0.00 sec) mysql> select date_add(now(),interval 3000 minute); +--------------------------------------+ | date_add(now(),interval 3000 minute) | +--------------------------------------+ | 2021-03-19 13:48:37 | +--------------------------------------+ 1 row in set (0.00 sec) 第3章MySQL 8.0数据库和表的基本操作 3.1教学要求 3.1.1基本要求 (1) 掌握概念模型的设计过程和利用ER图描述概念模型的方法。 (2) 掌握MySQL数据库的创建、打开和存储方法。 (3) 学会运用MySQL Workbench可视化软件维护数据库。 (4) 掌握创建数据库表的命令格式,以及表中各字段的数据类型和取值范围。 (5) 熟练掌握数据表的创建、查看、修改和删除等操作。 (6) 熟练掌握数据表记录的添加、修改和删除操作。 (7) 掌握数据表中各种约束的创建和管理操作。了解表的数据完整性规则与数据的正确性、精确性和可靠性的关系。 (8) 了解临时表的用途和管理操作。 3.1.2重点与难点 1. 本章重点 (1) 利用ER图描述概念模型的方法。 (2) 设置和修改MySQL数据库存储引擎的操作。 (3) MySQL数据库的创建、打开、删除和存储方法。 (4) 创建数据库表的命令格式。 (5) 数据表的创建、查看、修改和删除等操作。 (6) 表记录的添加、修改和删除操作。 (7) 利用MySQL Workbench管理表的基本过程。 (8) 数据表中各种约束的创建和管理操作。 2. 本章难点 (1) 利用ER图描述概念模型的方法。 (2) 创建数据库表的命令格式。 (3) 数据表的创建、查看、修改和删除等操作。 (4) 表的数据完整性的用途。 (5) 数据表中各种约束的创建和管理操作。 3.2习题参考答案 1. 选择题 (1) 在MySQL数据库中,通常使用语句来指定一个已有数据库作为当前工作数据库。 A. usingB. usedC. usesD. use (2) 命令用于删除一个数据库。 A. create databaseB. drop database C. alter databaseD. use InnoDB (3) 在使用insert语句插入记录时,使用关键字会忽略导致重复关键字的错误记录。 A. no sameB. ignoreC. repeatD. unique (4) 删除列的命令是。 A. alter table…delete…B. alter table…delete column… C. alter table…drop…D. alter table…drop column… (5) 下列关于truncate table的描述不正确的是。 A. truncate将删除表中的所有数据 B. 表中包含auto_increment列,使用truncate table可以重置序列值为该列的初始值 C. truncate操作比delete操作占用的资源多 D. 用truncate table删除表,然后重新构建表 (6) 在创建表时,可以使用关键字使当前建立的表为临时表。 A. ignoreB. temporaryC. temptableD. truncate 参考答案: DBBDCB 2. 简答题 (1) 简述在MySQL Workbench窗口中创建数据库的步骤。 答: 在MySQL Workbench窗口中使用可视化界面可以创建数据库。使用MySQL Workbench创建数据库的步骤如下: ① 进入MySQL Workbench主界面进行MySQL数据库的连接,单击Create Schemas命令(创建数据库)。 ② 进入设置数据库参数界面,输入数据库名,选择字符集和排序规则,然后单击Apply按钮。 ③ 打开创建数据库脚本显示对话框,单击Apply按钮,即可完成数据库的创建。 ④ 在数据库操作界面的Schemas区域可以看到刚才创建的数据库和MySQL中的系统数据库。 (2) 简述创建表时各类约束对表中数据的作用。 答: 在定义表结构时还可以定义与该表相关的完整性约束条件,包括实体完整性、参照完整性和用户定义完整性。这些约束条件主要包括not null(非空约束)、primary key(主键约束)、unique(唯一性约束)、foreign key(外键约束)以及check(检查约束)。各种约束对表中数据的作用如下: ① 非空约束限制在表的一个列中必须输入一个值。 ② 主键约束确保一个表中的每一行可以被指定列或指定列的组合唯一地标识。一个表只能有一个主键,但可以创建多个唯一性约束。 ③ 唯一性约束确保一列或列的组合没有重复值。 ④ 外键约束强制一个列只能取一个被引用表中存在的值。 ⑤ 检查约束限制一列的允许值。 (3) MySQL支持的数据完整性有哪几类?各有什么作用? 答: 数据完整性可以根据其作用的数据库对象和范围不同分为4类,具体如下。 ① 域完整性: 要求列的数值具有正确的类型、格式和有效值范围,并确定是否允许有空值。通常使用有效性检查强制域完整性,也可以通过限定列中允许的数据类型、格式或有效值范围来强制数据完整性。 ② 实体完整性: 要求表中的每一行具有唯一的标识。例如student表中的列studentno被设为主键,则会保证每个学生只有一个学号,而且是唯一的。 ③ 引用完整性: 指两个表的主键与外键之间定义的数据完整性,将确保主键和外键的关系。引用完整性可以保证两个引用表间数据的一致性。 ④ 用户定义完整性: 用户可以根据其应用环境的不同对数据库设置一些特殊的约束条件,反映某一具体应用所涉及的数据必须满足的语句要求。用户定义完整性的实现机制有规则(Rule)、触发器(Trigger)和存储过程(Stored Procedure)以及创建数据表时的所有约束(Constraint)。 (4) 简述在MySQL Workbench中创建含有主键的表的步骤。 答: 创建MySQL数据表,可以利用MySQL Workbench实现可视化方式。下面介绍利用可视化方式创建表的过程。 ① 打开MySQL Workbench工具,在Schemas区域找到数据库列表。 ② 选择一个数据库作为当前数据库,即右击该数据库,在弹出的快捷菜单中选择Set as Default Schema命令,则该数据库就变成当前数据库。 ③ 选择tables并右击,在弹出的快捷菜单中选择Create Tables命令,进入创建数据表的初始界面。 ④ 输入数据库表名,选择默认数据库引擎InnoDB,参照设计好的表结构分别输入列名,选择数据类型,输入不同类型的参数或默认值。 ⑤ 单击Apply按钮,打开脚本审核对话框。单击Show Logs按钮,可以进一步查看脚本。单击Finish按钮,则完成数据表的创建。 3. 上机练习题 (1) 登录数据库系统以后,创建student数据库,数据库创建成功后,查看数据库系统中还存在哪些数据库。 答: 命令和运行结果如下。 C:\Users\Administrator>mysql -u root -p Enter password: ****** mysql> create database if not exists student; Query OK, 1 row affected (0.02 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mytest | | performance_schema | | sakila | | student | | sys | | teaching | | world | +--------------------+ 9 rows in set (0.00 sec) (2) 创建booksmgt数据库,在booksmgt数据库中使用MySQL语句创建book表和author表,结构如下: book(bookid char(6),bookname varchar(30), price float(5,2)) author(authorid char(6),authorname varchar(10), bookid char(6), phone varchar(15)) 设置book表中的bookid为主键,author表中的bookid为外键。 答: ① 创建book表的MySQL语句。 mysql> create database booksmgt; Query OK, 1 row affected (0.19 sec) mysql> use booksmgt; Database changed mysql> create table book ( -> bookid char(6) not null, -> bookname varchar(30) null, -> price float(5, 2) null, -> constraint PKbook primary key (bookid asc) -> ); Query OK, 0 rows affected (0.78 sec) ② 创建author表的MySQL语句。 mysql> create table author( -> authorid char(6) not null, -> authorname varchar(10) null, -> bookid char(6) null, -> phone varchar(15) null, -> ); Query OK, 0 rows affected (0.18 sec) ③ 设置book表中的bookid为主键,author表中的bookid为外键。 mysql> alter table author -> add constraint fk_book_author -> foreign key(bookid) references book(bookid); Query OK, 0 rows affected (0.42 sec) Records: 0 Duplicates: 0 Warnings: 0 (3) 在数据库booksmgt中利用MySQL语句创建一个图书销售表booksales,结构如下: booksales(bookid nchar(6), sellnum int, selldate datetime) 分别利用insert、delete、update语句添加、删除和更新数据。 答: ① 利用MySQL语句创建booksales表。 mysql> create table booksales( -> bookid nchar(6) not null, -> sellnum int not null, -> selldate datetime not null -> ); Query OK, 0 rows affected (0.14 sec) ② 利用insert语句为booksales表添加数据。 mysql> insert into booksales values ('m00011',7, '2019-12-20'); Query OK, 1 row affected (0.12 sec) mysql> insert into booksales(bookid,sellnum,selldate) -> values ('m00018',3, '2019-11-16'); Query OK, 1 row affected (0.07 sec) ③ 利用update语句为booksales表更新数据。 mysql> update booksales set sellnum =11 -> where bookid ='m00011'; Query OK, 1 row affected (0.09 sec) ④ 利用delete语句删除booksales表的数据。 mysql> delete from booksales -> where bookid ='m00011'; Query OK, 1 row affected (0.08 sec) (4) 利用MySQL语句先删除booksales表中销售时间在2019年12月以前的记录,再删除全部记录,然后删除该表。 答: 利用MySQL语句删除booksales表的数据。 mysql> delete from booksales -> where selldate <'2019-12-01'; Query OK, 1 row affected (0.04 sec) mysql> truncate table booksales; -- 删除所有数据 Query OK, 0 rows affected (0.16 sec) mysql> drop table booksales; Query OK, 0 rows affected (0.07 sec) 附: 本书中常用的数据库teaching中的表结构和表记录。 (1) 学生信息表student。 #student表结构 create table if not exists student ( studentno char(11) not null comment'学号', sname char(8) not null comment'姓名', sex enum('男', '女') default '男' comment'性别', birthdate date not null comment'出生日期', entrance int(3) null comment'入学成绩', phone varchar(12) not null comment'电话', Email varchar(20) not null comment'电子信箱', primary key (studentno) ); #student表的常用数据 studentnosnamesexbirthdateentrancephoneEmail 20112100072许东方男2002/2/4658 12545678998su12@163.com 20112111208韩吟秋女2002/2/14666 15878945612han@163.com 20120203567封白玫女2003/9/9898 13245674564feng@126.com 20120210009崔舟帆男2002/11/5789 13623456778cui@163.com 20123567897赵雨思女2003/8/4 879 13175689345pinan@163.com 20125121109梁一苇女2002/9/3 777 13145678921bing@126.com 20126113307姚扶嵋女2003/9/7 787 13245678543zhu@163.com 21125111109敬秉辰男2004/3/1789 15678945623jing@sina.com 21125221327何桐影女2004/12/4879 13178978999he@sina.com 21131133071崔依歌男2002/6/678715556845645cui@126.com 21135222201夏文斐女2005/10/6867 15978945645xia@163.com 21137221508赵临江男2005/2/13789 12367823453ping@163.com (2) 课程信息表course。 #course表结构 create table if not exists course ( courseno char(6) not null, cname char(6) not null, type char(8) not null, period int(2) not null, exp int(2) not null, term int(2) not null, primary key (courseno) ); #course表的常用数据 coursenocnametypeperiodexpterm c05103高等数学必修64162 c05109C语言必修48162 c05127数据结构必修64162 c05138软件工程选修4885 c06108机械制图必修6082 c06127机械设计必修6483 c06172铸造工艺选修42166 c08106经济法必修4807 c08123金融学必修4005 c08171会计软件选修3288 (3) 成绩信息表score。 #score表结构 create table if not exists score( studentno char(11) not null, courseno char(6) not null, daily float(4,1) default 0, final float(4,1) default 0, primary key (studentno, courseno) ); #score表的常用数据 studentno coursenodailyfinal 20112100072c0510399 92 20120203567c051037867 20120210009c051036598 20125121109c051038879 21125111109c051039697 21137221508c051037792 20112100072c051099582 20120203567c051098786 20125121109c051097782 20126113307c051098995 21125111109c051098782 21125221327c051098995 20120210009c051388889 21137221508c051387491 20112111208c061087782 20120210009c061087988 20123567897c061089999 20126113307c061087867 20112111208c061278591 20120203567c061279797 20112111208c061728995 21125221327c061728862 21131133071c061727895 21125111109c081067791 21135222201c081069177 21137221508c081068962 21131133071c081237889 21135222201c081237999 20112100072c081718269 20125121109c081718591 21131133071c081718898 21135222201c081718592 (4) 教师信息表teacher。 #teacher表结构 create table if not exists teacher ( teacherno char(6) not null comment '教师编号', tname char(8) not null comment'教师姓名', major char(10) not null comment '专业', prof char(10) not null comment '职称', department char(16) not null comment '部门', primary key (teacherno) ); #teacher表的常用数据 teachernotnamemajorprofdepartment t05001苏超然软件工程教授计算机学院 t05002常可观会计学助教管理学院 t05003孙释安网络安全教授计算机学院 t05011卢敖治软件工程副教授计算机学院 t05017茅佳峰软件测试讲师计算机学院 t06011夏期年机械制造教授机械学院 t06023卢释舟铸造工艺副教授机械学院 t07019韩庭宇经济管理讲师管理学院 t08017白成园金融管理副教授管理学院 t08058孙有存数据科学副教授计算机学院 (5) 纽带表teach_course。 #teach_course表结构 create table if not exists teach_course ( teacherno char(6) not null, courseno char(6) not null, primary key (teacherno,courseno) ); #teach_course表的常用数据 teacherno courseno t05001 c05103 t05002 c05109 t05003 c05127 t05011 c05138 t05017 c06108 t05017 c06172 t06011 c06127 t06023 c05127 t06023 c06172 t07019 c08106 t08017 c08123 t08058 c08171 (6) 选课信息表se_course。 #se_course表结构 create table se_course (sc_no int(6) not null auto_increment, studentno char(11) not null, courseno char(6) not null, teacherno char(6) not null, score float(4,1),