MySQL 8.0题库 🔍登录 / 注册

一、选择题

#1 CHOICE
下列mysql数据库的说法,正确的是( )。
参考答案:
D
💡 解析:D项是正确的重命名表语法。A项是在test库中创建t1表;B项同表中字段名不可重复;C项update并非必须连用where(尽管不连用会更新全表)。
点击评论后加载...
#2 CHOICE
从E-R模型向关系模型转换,一个M:N的联系转换成一个关系模式时,该关系模式的主键是( )。
参考答案:
C
💡 解析:多对多(M:N)联系转换成关系模式时,必须由两端实体的主键共同组合构成新关系模式的主键。
点击评论后加载...
#3 CHOICE
关于Truncate table, 以下( )描述是错误的。
参考答案:
A
💡 解析:Truncate 是 DDL 语句,直接清空整表并重置自增序列,绝对不能带有 Where 条件从句。
点击评论后加载...
#4 CHOICE
下列关于索引的描述不正确的是( )。
参考答案:
B
💡 解析:索引是建立在表的“列(属性)”上的数据库对象,而不是直接建立在“元组(行数据)”上的。
点击评论后加载...
#5 CHOICE
在创建表时,可以使用( )关键字使当前建立的表为临时表。
参考答案:
B
💡 解析:使用 CREATE TEMPORARY TABLE 可以创建临时表。
点击评论后加载...
#6 CHOICE
在使用insert语句插入记录时,使用( )关键字会忽略导致重复关键字的错误记录。
参考答案:
B
💡 解析:INSERT IGNORE 语句在遇到主键或唯一键冲突时,会忽略错误并跳过该条记录的插入。
点击评论后加载...
#7 CHOICE
在select语句中用于实现关系的选择运算的语句是( )。
参考答案:
C
💡 解析:关系代数中的“选择”运算对应 SQL 语句中通过 WHERE 子句进行的条件过滤。
点击评论后加载...
#8 CHOICE
下列对于“select * from city limit 5,10”的描述正确的是( )。
参考答案:
C
💡 解析:LIMIT 5, 10 意味着跳过前5条(即从第6条开始),向后读取10条记录,所以范围是第6到第15条。
点击评论后加载...
#9 CHOICE
在select语句中使用( )关键字可以将重复行屏蔽。
参考答案:
D
💡 解析:DISTINCT 关键字用于返回唯一不同的值,屏蔽掉结果集中的重复行。
点击评论后加载...
#10 CHOICE
在 MySQL 中,关于普通索引的描述,错误的是( )。
参考答案:
C
💡 解析:一张表完全可以根据查询需求创建多个普通单列或组合索引,并没有“只能建一个”的限制。
点击评论后加载...
#11 CHOICE
下列关于 MySQL唯一索引的说法,正确的是( )。
参考答案:
C
💡 解析:唯一索引(UNIQUE)的特性是值不可重复,但在MySQL的绝大多数引擎中,允许插入多个不受限制的 NULL 值。
点击评论后加载...
#12 CHOICE
关于 MySQL视图,下列说法错误的是( )。
参考答案:
C
💡 解析:包含聚合函数、GROUP BY 或复杂联表的视图是无法直接执行 UPDATE/DELETE 等更新操作的。
点击评论后加载...
#13 CHOICE
在 MySQL 中,下列哪种场景最不适合创建索引?( )
参考答案:
B
💡 解析:当表的数据量极小(比如几十条记录)时,全表扫描往往比走索引树更快,此时建索引不仅多余还会增加开销。
点击评论后加载...
#14 CHOICE
在 MySQL 中,下列用于多条件分支判断,功能类似多重 IF…ELSEIF 的控制流函数是( )。
参考答案:
C
💡 解析:CASE WHEN 是 SQL 标准中用于实现多重条件分支逻辑的控制流语句。
点击评论后加载...
#15 CHOICE
下列关于 MySQL 自定义函数的说法,正确的是( )。
参考答案:
C
💡 解析:自定义函数必须通过 RETURNS 子句声明返回的数据类型,并且必须有返回值。
点击评论后加载...
#16 CHOICE
下列关于 MySQL 存储过程的描述,正确的是( )。
参考答案:
B
💡 解析:存储过程(Stored Procedure)执行时必须使用专门的 CALL 指令来调用。
点击评论后加载...
#17 CHOICE
关于 MySQL 触发器,下列说法错误的是( )。
参考答案:
C
💡 解析:触发器由特定的 DML 事件自动激活,属于被动机制,用户无法通过命令(如 CALL)手动调用执行。
点击评论后加载...
#18 CHOICE
在 MySQL InnoDB 中,为了解决多个事务同时修改同一行数据导致的数据不一致问题,主要采用的机制是( )。
参考答案:
B
💡 解析:InnoDB 默认支持行级锁(Row Lock),在并发事务修改同一行记录时,能通过加锁排队解决冲突。
点击评论后加载...
#19 CHOICE
在 MySQL 中,用于回收用户已授予权限的语句是( )。
参考答案:
B
💡 解析:GRANT 是授权,REVOKE 是撤销、回收权限。
点击评论后加载...
#20 CHOICE
在 MySQL 中,想要授予用户 user01 在 所有数据库所有表 上拥有查询权限,正确的语句是( )。
参考答案:
A
💡 解析:查询权限为 SELECT,所有数据库所有表使用通配符 *.*,因此 A 最为准确。
点击评论后加载...
#21 CHOICE
在Windows系统上,如果想要启动MySQL服务,应该使用( )。
参考答案:
C
💡 解析:在 Windows 中,启动服务的命令是 net start [服务名]。
点击评论后加载...
#22 CHOICE
MySQL安装目录下,用于存放客户端程序和可执行脚本的目录是( )。
参考答案:
A
💡 解析:bin 目录存放了数据库的核心二进制可执行文件,如 mysql.exe, mysqldump.exe 等。
点击评论后加载...
#23 CHOICE
存储电话号码并且电话号码的长度可能不同,应该选择( )数据类型。
参考答案:
C
💡 解析:电话号码可能包含前导零且长度不一,不能用 INT,应选择节省空间的可变长字符串 VARCHAR。
点击评论后加载...
#24 CHOICE
自动递增的属性在创建表时可以使用( )指定。
参考答案:
A
💡 解析:MySQL 特有的自增关键字为 AUTO_INCREMENT。
点击评论后加载...
#25 CHOICE
查找电话号码以"123"开头或以"456"结尾的所有联系人,应使用( )。
参考答案:
A
💡 解析:'123%' 匹配 123 开头,'%456' 匹配 456 结尾,题目要求“或”的关系,所以用 OR 连接。
点击评论后加载...
#26 CHOICE
从一个结果集中获取第11到20条记录,你应该使用( )LIMIT子句。
参考答案:
C
💡 解析:LIMIT offset, count。跳过前10条(offset为10),取10条(count为10),即为 LIMIT 10, 10。
点击评论后加载...
#27 CHOICE
使用GROUP BY对数据进行分组后,你想过滤出那些分组后的某个聚合值大于10的组,应该使用( )子句。
参考答案:
B
💡 解析:WHERE 用于分组前的单行过滤,HAVING 专门用于分组后对聚合函数结果进行条件筛选。
点击评论后加载...
#28 CHOICE
delimiter $ create procedure sc() begin declare i int default 2; set i=i+2; select i,'i'; end$ 调用call sc()$的结果是( )
参考答案:
C
💡 解析:变量 i 初值为 2,执行 i=i+2 后变为 4。SELECT 输出变量 i 和常量字符 'i',结果为 4 和 i。
点击评论后加载...
#29 CHOICE
在MySQL中想确保某列的值不能为NULL时,应该使用( )约束。
参考答案:
C
💡 解析:非空(NOT NULL)约束用来保证该列拒绝空值录入。
点击评论后加载...
#30 CHOICE
在( )情况不适合使用索引。
参考答案:
B
💡 解析:区分度极低的列(大量重复值)使用索引会导致频繁的回表查询,效率甚至不如全表扫描。
点击评论后加载...
#31 CHOICE
合并两个SELECT语句的结果集,并且保留重复的行,应该使用( )操作符。
参考答案:
B
💡 解析:UNION 会自动去重,而 UNION ALL 会保留所有的合并结果行,不去重。
点击评论后加载...
#32 CHOICE
下列选项中,用于设置MySQL的结束符为“//”的语句是( )。
参考答案:
A
💡 解析:DELIMITER 命令用于更改命令行的语句结束标识符。
点击评论后加载...
#33 CHOICE
以下子查询( )能找出订单金额超过平均值的订单。
参考答案:
A
💡 解析:必须在右侧以括号将聚合函数包装成一个独立的子查询: > (SELECT AVG(...) FROM ...)。
点击评论后加载...
#34 CHOICE
在MySQL中,哪个函数用于获取当前时间( )。
参考答案:
A
💡 解析:NOW() 函数返回当前的日期和时间。
点击评论后加载...
#35 CHOICE
采用二维表格结构表达实体类型及实体间联系的数据模型是( )。
参考答案:
B
💡 解析:关系模型的基础结构就是离散的二维表。
点击评论后加载...
#36 CHOICE
在控制台执行( )语句可以退出MySQL。
参考答案:
D
💡 解析:在命令行下输入 exit 或 quit 均可退出当前数据库会话。
点击评论后加载...
#37 CHOICE
设置表的默认字符集的关键字是( )。
参考答案:
D
💡 解析:标准建表规范为:DEFAULT CHARACTER SET utf8mb4。
点击评论后加载...
#38 CHOICE
在创建表时,可以使用( )关键字使当前建立的表为临时表。
参考答案:
B
💡 解析:[此为原卷重复题] 使用 CREATE TEMPORARY TABLE 可以创建临时表。
点击评论后加载...
#39 CHOICE
下列对于“select * from city limit 5,10”的描述正确的是( )。
参考答案:
C
💡 解析:[此为原卷重复题] LIMIT 5, 10 表示跳过5条,取10条,即第6到15条。
点击评论后加载...
#40 CHOICE
含有“with check option ”属性参数的视图没有对基表的( )进行限制。
参考答案:
B
💡 解析:WITH CHECK OPTION 能够拦截不符合视图条件的 INSERT 和 UPDATE 操作,但不对 DELETE 产生拦截。
点击评论后加载...
#41 CHOICE
在MySQL中,用户会话变量前面的字符是( )。
参考答案:
D
💡 解析:单 @ 符号代表用户会话变量,如 @name;双 @@ 代表系统变量。
点击评论后加载...
#42 CHOICE
( )语句用于执行预处理。
参考答案:
C
💡 解析:PREPARE 准备,EXECUTE 执行预处理,DEALLOCATE 释放。
点击评论后加载...
#43 CHOICE
MySQL为每个触发器创建了两个临时表( )。
参考答案:
D
💡 解析:触发器专用两张行记录虚拟快照表:NEW(新数据)和 OLD(旧数据)。
点击评论后加载...
#44 CHOICE
SELECT * FROM stuinfo WHERE StuNO( )(SELECT StuNo FROM stuMarks),括号中应填的字符为( )。
参考答案:
B
💡 解析:子查询返回的是一个集合结果列,外层条件进行多值匹配必须用 IN 关键字。
点击评论后加载...
#45 CHOICE
下面函数可以进行数据类型转换的是( )。
参考答案:
B
💡 解析:CAST(expr AS type) 是专门用于数据类型显式转换的系统函数。
点击评论后加载...
#46 CHOICE
MySQL数据库中的求绝对值的函数是( )。
参考答案:
A
💡 解析:ABS(x) 函数用于求数值 x 的绝对值。
点击评论后加载...
#47 CHOICE
假设有一份绝密文件存于某台机器的secretData数据库中的某个表里面,现在出于数据安全的考虑,对于新创建的用户都只能拥有该机器的登录权限,而不能拥有数据库的其他权限,那么新创建tqhf用户满足这一要求的语句是( )。
参考答案:
D
💡 解析:GRANT USAGE 意思是仅仅授予最基础的登录连接权限(无实际操作权),全局授权对应 *.*。
点击评论后加载...
#48 CHOICE
在MySQL数据库中,通常使用( )语句来指定一个已有数据库作为当前工作数据库。
参考答案:
D
💡 解析:USE database_name; 命令用于切换到目标数据库上下文。
点击评论后加载...
#49 CHOICE
关于MySQL常见索引的描述正确是( )。
参考答案:
C
💡 解析:A错在UNIQUE允许包含多个NULL;D错在非聚集索引并不改变物理数据的存储顺序。组合索引必须遵循“最左前缀”。
点击评论后加载...
#50 CHOICE
关于维护参照完整性约束的策略,下列选项描述不正确的是( )。
参考答案:
A
💡 解析:(有争议选C也可以)当使用级联 CASCADE 或 SET NULL 策略时,系统不会拒绝执行更新,而是同步修改相关数据,故 A 说法过于绝对而错误。
点击评论后加载...
#51 CHOICE
下列操作在视图上无法完成的是( )。
参考答案:
C
💡 解析:基本表属于物理表,必须独立建立在数据库中,绝不能嵌套建立在逻辑抽象的虚拟视图里面。
点击评论后加载...
#52 CHOICE
下列选项中关于数据库事务的特性描述正确的是( )。
参考答案:
D
💡 解析:D 完美对应了事务 ACID 中的“隔离性(Isolation)”,即多个并发事务相互之间不会互相干扰和泄露。
点击评论后加载...
#53 CHOICE
下列说法错误的是( )。
参考答案:
A
💡 解析:SQL 模糊查询(LIKE)中代表任意长度字符串的通配符是百分号 %,而不是星号 *。
点击评论后加载...
#54 CHOICE
表的关系,正确的说法是( )。
参考答案:
B
💡 解析:DBMS 实例可管理多库,每一库可容纳多表,这是标准的数据库层级关系。
点击评论后加载...
#55 CHOICE
在控制台中执行( )语句可以退出MySQL。
参考答案:
D
💡 解析:[此为原卷重复题] 键入 exit 或 quit 回车均可断开并退出 MySQL 终端。
点击评论后加载...
#56 CHOICE
下列( )语句来定义游标。
参考答案:
C
💡 解析:游标标准声明语法:DECLARE cursor_name CURSOR FOR select_statement; 。
点击评论后加载...
#57 CHOICE
死锁发生的原因是( )。
参考答案:
A
💡 解析:死锁是由多个并发进程/事务为了争夺系统资源而陷入了互相无限等待的僵局,本质上是因为并发调度与控制策略所引发的副作用。
点击评论后加载...
#58 CHOICE
在 MySQL 中,若要定义一个用户自定义变量并在当前会话中使用,该变量名必须以什么符号开头?( )。
参考答案:
D
💡 解析:用户级会话变量使用一个 @ 作为前缀开头,比如 @user_id。
点击评论后加载...
#59 CHOICE
下列哪个关键字用于删除表中数据行?( )。
参考答案:
A
💡 解析:DELETE 语句负责删除表内的数据记录,DROP 则是直接销毁表结构实体本身。
点击评论后加载...
#60 CHOICE
关于数据库中的空值,下列描述正确的是( )。
参考答案:
C
💡 解析:NULL 值是一种专门用来代表“未知”、“缺失”概念的标记,它不同于0或空字符串,与任何值做算术运算结果仍是 NULL。
点击评论后加载...
#61 CHOICE
在 MySQL 中,用于在 WHERE 子句中进行正则表达式匹配的操作符是( )。
参考答案:
B
💡 解析:MySQL 使用 REGEXP (或 RLIKE) 关键字来支持复杂的正则模式匹配。
点击评论后加载...
#62 CHOICE
以下哪个窗口函数会为相同值的行分配相同的排名,并跳过后续排名?( )。
参考答案:
B
💡 解析:RANK() 函数在遇到并列数据时排名相同,并且其后的排名会出现跳跃不连续现象(如1,2,2,4)。
点击评论后加载...
#63 CHOICE
在MySQL中,LIMIT子句通常用于( )。
参考答案:
B
💡 解析:LIMIT 主要是用来做数据分页或直接限制截取结果集输出的行数大小。
点击评论后加载...
#64 CHOICE
关于 MySQL 中的临时表,下列说法错误的是( )。
参考答案:
D
💡 解析:MySQL 的临时表可以使用 InnoDB、MyISAM 等各种引擎,并非必须存放在纯内存的 MEMORY 引擎中。
点击评论后加载...
#65 CHOICE
在MySQL中,关于索引的叙述,错误的是( )。
参考答案:
C
💡 解析:除了唯一索引和主键索引外,普通的二级索引列中是完全允许存在大量重复数据的。
点击评论后加载...
#66 CHOICE
含有with check option属性参数的视图没有对基表的( )限制。
参考答案:
B
💡 解析:[此为原卷重复题] WITH CHECK OPTION 不会对 DELETE (删除) 操作进行任何条件监测拦截。
点击评论后加载...
#67 CHOICE
MySQL提供的单行注释语句可以是使用( )开始的一行内容。
参考答案:
B
💡 解析:MySQL 特有的标准单行注释符号是井号 #。
点击评论后加载...
#68 CHOICE
MySQL所支持的触发器不包括( )。
参考答案:
C
💡 解析:触发器挂载在表的 DML 操作事件上(Insert/Update/Delete),不存在专门针对 Check 完整性校验的触发器事件。
点击评论后加载...
#69 CHOICE
(原卷序号14错误插空)下列关于 MySQL 中游标的描述,不正确的是( )。
参考答案:
A
💡 解析:游标用于逐行遍历整个集合(多行数据),而 SELECT INTO 只能接收单行数据,两者在数据结构应对上是截然不同的。
点击评论后加载...
#70 CHOICE
下列关于 MySQL 存储过程的叙述中,正确的是( )。
参考答案:
C
💡 解析:存储过程无法嵌入 SELECT 中,无 RETURNS 声明,但支持定义 IN/OUT/INOUT 参数并必须用 CALL 指令执行。
点击评论后加载...
#71 CHOICE
关系数据库中,实现主键标识元组的作用是通过( )来实现的。
参考答案:
A
💡 解析:实体完整性规则强制要求每个关系的主键不能取空值且必须唯一标识一个元组实体。
点击评论后加载...
#72 CHOICE
向用户授予操作权限的SQL语句是( )。
参考答案:
A
💡 解析:GRANT 是数据控制语言(DCL)中用于授予权限的命令语句。
点击评论后加载...
#73 CHOICE
SQL语言具有( )功能。
参考答案:
B
💡 解析:SQL 是标准的综合性数据库语言,拥有 DDL(数据定义)、DML(数据操纵)和 DCL(数据控制)三大核心模块。
点击评论后加载...

二、填空题

#74 FILL
MySQL支持多种数据类型,其中 类型用于存储定长字符串,而 类型用于存储可变长字符串。
参考答案:
CHAR, VARCHAR
💡 解析:CHAR为定长字符串;VARCHAR为变长字符串。
点击评论后加载...
#75 FILL
DECIMAL(M,D)类型,M和D可以省略,如果省略,则M默认为 ,D默认为 。
参考答案:
10, 0
💡 解析:省略时默认格式为 DECIMAL(10, 0)。
点击评论后加载...
#76 FILL
MySQL提供了 命令来实现数据的备份。
参考答案:
mysqldump
💡 解析:mysqldump 是官方标准的逻辑备份工具。
点击评论后加载...
#77 FILL
表由列组成,也称为 。所有表都是由一个或多个列组成的。
参考答案:
字段 (或属性)
💡 解析:在数据库表中,列通常被称为字段(Field)。
点击评论后加载...
#78 FILL
查询数据时,通配符 可表示数据表中的所有字段。
参考答案:
*
💡 解析:星号(*)是代表所有字段的通配符。
点击评论后加载...
#79 FILL
外连接查询包括 和 。
参考答案:
左外连接, 右外连接
💡 解析:即 LEFT JOIN 和 RIGHT JOIN(全外连接MySQL一般用UNION实现)。
点击评论后加载...
#80 FILL
一个表有多个列需要频繁作为查询条件,可以考虑创建 索引来提高查询效率。
参考答案:
组合 (或复合)
💡 解析:多列同时高频查询时,建立组合索引最优。
点击评论后加载...
#81 FILL
sql语言有____,______,______,______四部分(填英文简写)。
参考答案:
DDL, DML, DQL, DCL
💡 解析:分别代表:数据定义语言、数据操纵语言、数据查询语言、数据控制语言。
点击评论后加载...
#82 FILL
IS NULL 关键字用于判断字段的值是否为空值,该关键字通常放在 子句之后。
参考答案:
WHERE
💡 解析:IS NULL 作为过滤条件,放在 WHERE 后面。
点击评论后加载...
#83 FILL
多个表连接时,存在同名列,需要使用 来指定想要从哪个表中选取该列。
参考答案:
表名 (或表别名)
💡 解析:必须带上表名前缀来消除同名字段的歧义。
点击评论后加载...
#84 FILL
MySQL的命令可以通过\字母的方式来表示,其中清除当前输入语句的指令是________。
参考答案:
\c
💡 解析:输入 \c 可以直接清空当前正在编写的错乱 SQL 语句。
点击评论后加载...
#85 FILL
MySQL中的 是用于执行复杂查询和数据操作的强大工具,它允许用户将多个查询组合成一个单独的查询。
参考答案:
子查询
💡 解析:嵌套在另一个查询内部的查询称为子查询。
点击评论后加载...
#86 FILL
触发器是一种特殊的存储过程,它可以在对一个表上进行update、 和 delete 操作中的任一种或几种操作时被自动调用执行。
参考答案:
insert
💡 解析:触发器绑定的三大 DML 事件:INSERT、UPDATE、DELETE。
点击评论后加载...
#87 FILL
约束中, 约束可以保证字段值唯一且非空。
参考答案:
主键 (PRIMARY KEY)
💡 解析:主键的特性就是:唯一(UNIQUE)且非空(NOT NULL)。
点击评论后加载...
#88 FILL
用SELECT进行模糊查询时,可以使用匹配符,但要在条件值中使用 或%等通配符来进行查询。
参考答案:
_ (下划线)
💡 解析:% 代表任意长字符,_ (下划线) 代表单个任意字符。
点击评论后加载...
#89 FILL
MySQL中,存储用户全局权限表的是 。
参考答案:
mysql.user
💡 解析:mysql 系统内置库中的 user 表负责存储账户与全局权限。
点击评论后加载...
#90 FILL
修改自己的MySQL服务器密码的命令是 。
参考答案:
ALTER USER
💡 解析:在现代 MySQL 中,推荐使用 ALTER USER 语句修改密码。
点击评论后加载...
#91 FILL
在还原数据库时,首先要进行 备份的恢复。
参考答案:
完全 (或完整)
💡 解析:必须先恢复最基础的完全备份,再叠加增量或日志备份。
点击评论后加载...
#92 FILL
数据库系统的三级模式结构包括:外模式、________和内模式。
参考答案:
模式 (或概念模式)
💡 解析:三级模式:外模式(用户)、模式(全局逻辑)、内模式(物理)。
点击评论后加载...
#93 FILL
MySQL 的日志系统是保障数据库稳定运行和数据安全的重要机制。其中,________ 日志用于记录数据库启动、停止以及运行过程中发生的严重错误信息,是排查故障的首选。
参考答案:
错误 (error)
💡 解析:错误日志(Error Log)记录了引擎的重大启停与致命故障信息。
点击评论后加载...
#94 FILL
在 MySQL 中,用来给字段设置默认值的关键字是 ________ 。
参考答案:
DEFAULT
💡 解析:建表时使用 DEFAULT 关键字设置缺省值。
点击评论后加载...
#95 FILL
select <NULL<=>NULL> is NULL;以上SQL语句的结果为________。
参考答案:
0 (或 false)
💡 解析:NULL<=>NULL 会返回真(1);而 1 is NULL 为假,故返回 0。
点击评论后加载...
#96 FILL
当某字段要使用 AUTO_INCREMENT 的属性时,该字段必须是________类型的数据。
参考答案:
整数 (或INT等数值类型)
💡 解析:自增(AUTO_INCREMENT)只能作用于整数类型的列。
点击评论后加载...
#97 FILL
在 INSERT 触发器中,可以引用一个名为________的虚拟表,访问被插入的行。
参考答案:
NEW
💡 解析:INSERT 动作只有新数据产生,因此只能引用 NEW 表。
点击评论后加载...
#98 FILL
如果 MySQL 服务名为 MySQL5,则在 Windows 的命令窗口中,启动 MySQL 服务的指令是________。
参考答案:
net start MySQL5
💡 解析:Windows 服务启动命令固定格式为:net start [服务名]。
点击评论后加载...
#99 FILL
数据模型的三要素是指数据结构、数据操作和 。
参考答案:
完整性约束
💡 解析:三大基石:数据结构、数据操作、完整性约束条件。
点击评论后加载...
#100 FILL
在MySQL中,游标通常与 一起使用,以便逐行处理结果集中的数据。
参考答案:
存储过程
💡 解析:在 MySQL 中,游标(Cursor)由于其逐行处理的特性,通常只能被声明并使用在存储过程(或自定义函数)内部,配合循环结构来处理复杂的逻辑。
点击评论后加载...
#101 FILL
视图是从一个或多个表或视图中导出的 。
参考答案:
虚拟表
💡 解析:视图本身不存储物理数据,只是保存了查询逻辑,因此被称为虚拟表。
点击评论后加载...
#102 FILL
在MySQL中,如果对table1和table2进行连接,但没有指定任何连接条件,那么结果将是一个 ,即table1中的每一行都会与table2中的每一行进行组合。
参考答案:
笛卡尔积 (或 CROSS JOIN)
💡 解析:没有 ON 或 WHERE 条件的关联查询,会导致行数相乘,产生笛卡尔积爆发。
点击评论后加载...
#103 FILL
对employees表中的salary字段进行排序,并且按照从高到低的顺序显示,应该使用ORDER BY子句并指定 。
参考答案:
DESC
💡 解析:ASC 为默认升序,DESC (Descending) 为降序。
点击评论后加载...
#104 FILL
在MySQL中各存储引擎都使用了3种级别的锁定机制,分别为 、行级锁定和 。
参考答案:
表级锁定, 页级锁定
💡 解析:MySQL 的三大封锁粒度:表锁、页锁、行锁。
点击评论后加载...
#105 FILL
MySQL中,预设的、拥有最高权限超级用户的用户名为 。
参考答案:
root
💡 解析:默认生成的系统最高管理员超级账户是 root。
点击评论后加载...
#106 FILL
在MySQL数据库中,创建新用户可以直接操作MySQL权限表,可以使用 语句创建。
参考答案:
CREATE USER
💡 解析:标准的 DCL 语法中使用 CREATE USER 来创建新账户。
点击评论后加载...
#107 FILL
按照事务定义的方式可以将事务分为系统定义事务和 。
参考答案:
用户定义事务 (或 显式事务)
💡 解析:由用户使用 START TRANSACTION/BEGIN 显式界定的事务。
点击评论后加载...

三、判断题

#108 JUDGE
视图是观察数据的一种方法,只能基于基本表建立。( )
参考答案:
错
💡 解析:视图不仅可以基于基本表建立,也可以基于其他已经存在的视图建立。
点击评论后加载...
#109 JUDGE
InnoDB 引擎通过行锁解决并发修改同一行的数据冲突问题。( )
参考答案:
对
💡 解析:InnoDB 引擎支持行级锁定,能够高效解决并发修改同一行数据的冲突。
点击评论后加载...
#110 JUDGE
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。( )
参考答案:
对
💡 解析:DBMS 属于系统支撑软件,架设在用户应用程序与底层操作系统之间。
点击评论后加载...
#111 JUDGE
使用INSERT语句向表中插入元组时,元组的属性值顺序必须与表结构定义的顺序一致。( )
参考答案:
错
💡 解析:如果在 INSERT 语句中显式指定了列名列表,只需与声明的列表顺序一致即可,无需与表结构物理定义顺序一致。
点击评论后加载...
#112 JUDGE
在将E-R图转换为关系模式时,实体类型转换为关系模式,联系类型根据其类型转换为关系模式。( )
参考答案:
对
💡 解析:E-R模型中的实体和多对多等联系在逻辑设计阶段都会被转换为对应的关系模式。
点击评论后加载...
#113 JUDGE
两段锁协议可以保证并发调度的可串行化。( )
参考答案:
对
💡 解析:遵循两段锁协议(2PL)的多事务并发调度策略,一定能够保障其执行是可串行化的。
点击评论后加载...
#114 JUDGE
数据库中的“角色”是权限的集合,将一个角色授予用户,意味着该用户将继承此角色所拥有的所有权限。( )
参考答案:
对
💡 解析:角色(Role)用于简化权限管理,用户被授予某个角色后,自动拥有该角色集合内的全部权限。
点击评论后加载...
#115 JUDGE
如果事务中的任何一个操作失败,整个事务都会失败,数据库会回滚到事务开始前的状态。( )
参考答案:
对
💡 解析:这体现了数据库事务的原子性(Atomicity)特征,要么全做,要么全不做。
点击评论后加载...
#116 JUDGE
职称 in('教授',’副教授’)与 职称='教授’and 职称='副教授”等价。( )
参考答案:
错
💡 解析:IN 相当于逻辑“或”(OR),而 AND 是逻辑“与”,一个人不可能同时既是教授又是副教授,两者绝对不等价。
点击评论后加载...
#117 JUDGE
在实际应用中应尽量不要将数据库的隔离级别设置为Read Uncommitted。( )
参考答案:
对
💡 解析:Read Uncommitted(读未提交)会导致脏读,在实际生产环境中极少使用。
点击评论后加载...
#118 JUDGE
视图是虚拟表,不会实际保存物理数据。( )
参考答案:
对
💡 解析:视图只在数据字典中保存查询逻辑定义,不占用物理磁盘存储具体行数据。
点击评论后加载...
#119 JUDGE
事务的原子性指事务操作要么全部执行,要么全部回滚。( )
参考答案:
对
💡 解析:这是事务四大特性 ACID 中关于原子性的标准定义。
点击评论后加载...
#120 JUDGE
DELETE 语句删除表结构,DROP 语句只删除表中数据。( )
参考答案:
错
💡 解析:正好说反了。DELETE 仅删除表内数据,保留结构;DROP 会将数据连同表结构一起彻底销毁。
点击评论后加载...
#121 JUDGE
行级锁粒度更小,并发能力优于表级锁。( )
参考答案:
对
💡 解析:行级锁只对被操作的特定行加锁,冲突概率低,从而大大提升了并发处理能力。
点击评论后加载...
#122 JUDGE
BLOB 类型适合存储大文本、图片、文件等二进制数据。( )
参考答案:
对
💡 解析:BLOB (Binary Large Object) 是标准的二进制大型对象数据类型。
点击评论后加载...
#123 JUDGE
HAVING 子句可以使用聚合函数,WHERE 子句不可以。( )
参考答案:
对
💡 解析:WHERE 用于分组前的单行过滤;HAVING 用于分组后,天然常与聚合函数绑定联用。
点击评论后加载...
#124 JUDGE
REPEATABLE READ 是 InnoDB 默认事务隔离级别。( )
参考答案:
对
💡 解析:MySQL 的 InnoDB 存储引擎默认的隔离级别就是可重复读(REPEATABLE READ)。
点击评论后加载...
#125 JUDGE
主键索引属于聚簇索引,一张表只能有一个聚簇索引。( )
参考答案:
对
💡 解析:聚簇索引决定了行数据在物理磁盘上的实际排列顺序,因为物理顺序唯一,所以一张表只能有一个聚簇索引。
点击评论后加载...
#126 JUDGE
数据库完全备份适合数据量庞大、业务频繁的场景。( )
参考答案:
错
💡 解析:完全备份耗时极长且占用海量空间,对于数据庞大、频繁的业务,应采用完全备份配合增量备份的混合策略。
点击评论后加载...
#127 JUDGE
在SELECT语句的FROM子句中可以指定多个表或视图,相互之间要用逗号分隔。( )
参考答案:
对
💡 解析:多表查询时,FROM 子句后跟多个表名用逗号隔开,这属于隐式内连接语法。
点击评论后加载...
#128 JUDGE
事务中的语句要么都执行,要么都不执行。( )
参考答案:
对
💡 解析:再次考察事务的原子性(Atomicity)。
点击评论后加载...
#129 JUDGE
MySQL 是一种开源的关系型数据库管理系统。( )
参考答案:
对
💡 解析:MySQL 是目前全球最流行的开源关系型数据库。
点击评论后加载...
#130 JUDGE
可以通过SHOW ENGINE INNODB STATUS命令查看死锁信息。( )
参考答案:
对
💡 解析:该命令会打印 InnoDB 的运行状态,其中包含最近一次死锁的详细日志。
点击评论后加载...
#131 JUDGE
MyISAM支持外键约束,而InnoDB不支持外键。( )
参考答案:
错
💡 解析:完全相反。InnoDB 引擎完美支持事务和外键,而传统 MyISAM 不支持。
点击评论后加载...
#132 JUDGE
MySQL可以通过不同的连接器与多种编程语言(如Java、Python、PHP等)进行交互。( )
参考答案:
对
💡 解析:MySQL 提供了丰富的驱动程序(Connector)来支持各主流编程语言的连接交互。
点击评论后加载...
#133 JUDGE
E-R图是数据库设计的工具之一,它一般适用于建立数据库的逻辑模型。( )
参考答案:
错
💡 解析:E-R 图(实体-联系图)是概念设计阶段的工具,用于建立概念模型,而非逻辑模型。
点击评论后加载...
#134 JUDGE
SQL语言的视图定义和视图操作功能在一定程度上支持了数据的逻辑独立性。( )
参考答案:
对
💡 解析:视图可以向用户屏蔽底层基本表的结构变更,从而提供逻辑独立性。
点击评论后加载...
#135 JUDGE
在MySQL中,用户执行的每一条SQL语句,默认都会当成单独的事务自动提交。( )
参考答案:
对
💡 解析:MySQL 的 autocommit(自动提交)机制默认是开启的。
点击评论后加载...
#136 JUDGE
使用 DELIMITER 修改结束符为$$后,下次登录仍然有效。( )
参考答案:
错
💡 解析:DELIMITER 更改只在当前客户端会话生命周期内有效,退出重连后将恢复为默认的分号。
点击评论后加载...
#137 JUDGE
视图是观察数据的一种方法,只能基于基本表建立。( )
参考答案:
错
💡 解析:此题与第1题完全重复。视图既可以基于基本表建立,也可以基于已存在的视图建立。
点击评论后加载...

四、程序填空题

#138 CODE
Student(Sno,Sname,Ssex,Ssubject,Sscholarship) Course(Cno,Cname,Ccredit) SC(Sno,Cno,Grade) (1)根据成绩划分等级,60 及以上为合格,否则为不合格:请补全以下代码: SELECT Sno, Cno, Grade, ________ WHEN Grade>=60 THEN '及格' ________ '不及格' END AS 等级 FROM SC;
参考答案:
CASE, ELSE
💡 解析:条件分支语句,需填入 CASE 和 ELSE。
点击评论后加载...
#139 CODE
(2)查询选修课程人数大于 3 人的课程编号。请补全以下代码: SELECT Cno,COUNT(*) AS 选课人数 FROM SC GROUP BY Cno ________ COUNT(*) ________ 3;
参考答案:
HAVING, >
💡 解析:分组后的过滤使用 HAVING,大于填 >。
点击评论后加载...
#140 CODE
(3)利用窗口函数,按课程分组,对成绩进行降序排名。请补全以下代码: SELECT Sno,Cno,Grade, DENSE_RANK() ________(PARTITION BY Cno ________ Grade DESC) FROM SC
参考答案:
OVER, ORDER BY
💡 解析:窗口函数基础语法 OVER (PARTITION BY ... ORDER BY ...)。
点击评论后加载...
#141 CODE
(4)查询学生姓名、课程名,利用函数将奖学金为 null 时显示为 0。请补全以下代码: SELECT Sname,Cname,_______(Sscholarship,0) AS 奖学金 FROM Student JOIN SC _______ Student.Sno = SC.Sno JOIN Course ON SC.Cno = Course.Cno;
参考答案:
IFNULL, ON
💡 解析:空值处理函数 IFNULL,表连接条件关键字 ON。
点击评论后加载...
#142 CODE
(5)根据学生的奖学金金额进行判断。如果奖学金(Sscholarship)大于 5000,则标记为 'High',否则标记为 'Normal'。请补全以下代码: SELECT Sno, Sname, ________(Sscholarship > 5000, 'High', 'Normal') AS Level ________ Student;
参考答案:
IF, FROM
💡 解析:此题原卷存在代码缺失。缺失了 IF 和 FROM 关键字。
点击评论后加载...
#143 CODE
(6)根据课程的成绩(Grade)划分等级。如果成绩大于等于 90 分,显示 '优秀';如果成绩在 60 到 89 之间,显示 '及格';否则显示 '不及格'。请补全以下代码: ________ WHEN Grade >= 90 THEN '优秀' WHEN Grade >= 60 THEN '及格' ELSE '不及格' ________ AS Grade_Level FROM SC;
参考答案:
SELECT Sno, Cno, Grade, CASE END
💡 解析:此题原卷存在严重代码缺失。缺少开头的 SELECT 和 CASE 以及结尾的 END。
点击评论后加载...
#144 CODE
(7)在创建 Course 表时,你需要确保课程名称(Cname)不能为空,并且每门课程的学分(Ccredit)必须大于 0。请补全以下代码: CREATE TABLE Course ( Cno CHAR(10) PRIMARY KEY, Cname VARCHAR(50) ________ , Ccredit INT ________ (Ccredit > 0) );
参考答案:
NOT NULL, CHECK
💡 解析:非空约束 NOT NULL,检查约束 CHECK。
点击评论后加载...
#145 CODE
(8)创建存储过程,用来计算“数据库原理”这门课的平均分,并将结果保存下来以便后续使用。请补全以下代码: DELIMITER // CREATE PROCEDURE CalcDBAvg() BEGIN ________ v_avg_score DECIMAL(5,2); SELECT AVG(Grade) ________ v_avg_score FROM SC JOIN Course ON SC.Cno = Course.Cno WHERE Course.Cname = '数据库原理'; SELECT v_avg_score; END // DELIMITER ;
参考答案:
DECLARE, INTO
💡 解析:此题原卷漏写了声明。声明变量用 DECLARE,赋值用 INTO。
点击评论后加载...
#146 CODE
(9)SELECT name, CASE WHEN age < 18 THEN 'Teenager' WHEN age BETWEEN 18 AND 65 THEN 'Adult' ELSE 'Senior' END AS age_group FROM students; 这段程序的功能是 ________。
参考答案:
查询学生的姓名,并根据年龄(age)划分段:小于18岁标记为'Teenager',18到65岁之间标记为'Adult',其余标记为'Senior',别名为 age_group。
💡 解析:考察 CASE WHEN 多条件分支理解。
点击评论后加载...
#147 CODE
(10)REVOKE INSERT ON mydb.* FROM 'user123'@'hostname'; 这条语句的功能是 ________。
参考答案:
收回(注销)用户 'user123'@'hostname' 对 mydb 数据库下所有表的数据插入(INSERT)权限。
💡 解析:考察 REVOKE 撤销权限的含义。
点击评论后加载...
#148 CODE
(11)给名字是zhangsan的用户分配对数据库 studb中的stuinfo 表的查询和插入数据权限的语句是 ________。
参考答案:
GRANT SELECT, INSERT ON studb.stuinfo TO 'zhangsan'@'%';
💡 解析:考察 GRANT 赋权语句的书写。
点击评论后加载...
#149 CODE
(12) SET @length = 3; SELECT LEFT('Hello World', @length); 上述代码的结果为 ________。
参考答案:
Hel
💡 解析:LEFT 函数截取左侧指定长度的字符串。
点击评论后加载...
#150 CODE
(13)select 'Abc'='abc'; 的结果为 ________ ,select -2.0*4.0;的结果为 ________ 。
参考答案:
1, -8.0
💡 解析:MySQL 默认字符串比较大小写不敏感故为 1(True);简单乘法为 -8.0。
点击评论后加载...
#151 CODE
(14)create event direct2 on schedule at current_timestamp +interval 5 second do create table test2(timeline timestamp); 这条语句的功能是 ________。
参考答案:
创建一个定时事件任务 direct2,在当前时间过5秒钟之后,自动执行创建 test2 数据表的操作。
💡 解析:原卷此处换行错乱已保留。考察 EVENT 事件定时器。
点击评论后加载...
#152 CODE
(15) SELECT FLOOR(1 + RAND() * 100) AS random_number 这条语句的功能是 ________。
参考答案:
生成一个 1 到 100 之间(包含1和100)的随机整数,并将列名命名为 random_number。
💡 解析:考察 RAND() 和 FLOOR() 函数结合生成随机数。
点击评论后加载...

五、SQL语句大题

#153 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (1)查询“计算机系”所有教师的姓名(tname)和职称(prof),并按职称降序排列(假设职称文本可排序)。
参考答案:
SELECT tname, prof FROM Teacher WHERE dapartment = '计算机系' ORDER BY prof DESC;
💡 解析:使用 WHERE 子句过滤出指定的系别,并利用 ORDER BY ... DESC 关键字对职称执行降序排列。
点击评论后加载...
#154 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (2)查询选修了“数据库原理”课程的所有学生的姓名(sname)、平时成绩(daily)和期末成绩(final)。
参考答案:
SELECT s.sname, sc.daily, sc.final FROM Student s JOIN Score sc ON s.studentno = sc.studentno JOIN Course c ON sc.courseno = c.courseno WHERE c.cname = '数据库原理';
💡 解析:这是一道标准的多表内连接查询题。通过学生表、成绩表和课程表之间的主外键关联字段进行 JOIN,再用 WHERE 过滤目标课程名。
点击评论后加载...
#155 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (3)向 Student 表中插入一名新学生:学号 '2021003',姓名 '王五',性别 '男',生日 '2003-11-11',入学日期 '2021-09-01',电话 '13900139000',邮箱 '543598023@qq.com'。
参考答案:
INSERT INTO Student (studentno, sname, sex, birthday, entrance, phone, Email) VALUES ('2021003', '王五', '男', '2003-11-11', '2021-09-01', '13900139000', '543598023@qq.com');
💡 解析:标准数据插入语句,VALUES 括号内的数据顺序需要与前面声明的字段顺序严格一致,且字符串和日期类型需包裹单引号。
点击评论后加载...
#156 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (4)统计每门课程的平均期末成绩。显示课程号(courseno)和平均成绩,要求按平均成绩从高到低排序。
参考答案:
SELECT courseno, AVG(final) AS avg_final FROM Score GROUP BY courseno ORDER BY avg_final DESC;
💡 解析:使用 GROUP BY 按课程号分组,用聚集函数 AVG() 计算期末成绩平均值,并通过 ORDER BY ... DESC 执行降序排列。
点击评论后加载...
#157 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (5)查询无任何选课成绩的学生学号、姓名。
参考答案:
SELECT studentno, sname FROM Student WHERE studentno NOT IN ( SELECT DISTINCT studentno FROM Score );
💡 解析:使用子查询先从成绩表(Score)中找出所有有选课记录的学号,外层再通过 NOT IN 排除这些学号,即可得到没有任何选课成绩的学生。
点击评论后加载...
#158 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (6)查询每门课程的课程号、课程名、选课人数、期末平均分,统计选修该课程的学生数据,要求只筛选选课人数大于 3 人的课程。
参考答案:
SELECT c.courseno, c.cname, COUNT(sc.studentno) AS 选课人数, AVG(sc.final) AS 期末平均分 FROM Course c JOIN Score sc ON c.courseno = sc.courseno GROUP BY c.courseno, c.cname HAVING COUNT(sc.studentno) > 3;
💡 解析:双表连接加分组统计。切记:由于过滤条件(选课人数 > 3)是针对分组聚合后状态的过滤,因此必须编写在 HAVING 子句中,不能用 WHERE。
点击评论后加载...
#159 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (7)创建存储过程,要求查询指定教师所教授的全部课程信息,要求输出:课程名、学时、学期。
参考答案:
DELIMITER // CREATE PROCEDURE GetTeacherCourses(IN t_name VARCHAR(20)) BEGIN SELECT c.cname, c.period, c.term FROM Course c JOIN Teach_course tc ON c.courseno = tc.courseno JOIN Teacher t ON tc.teacherno = t.teacherno WHERE t.tname = t_name; END // DELIMITER ;
💡 解析:声明一个带有输入参数(IN)的存储过程,过程体内通过 Course、Teach_course 和 Teacher 三表联查获取对应教师的授课详情。
点击评论后加载...
#160 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (8)创建视图 v_first_term,查询第一学期开课的课程对应的学生姓名、课程名、平时成绩、期末成绩,要求通过该视图只能操作第一学期相关数据,禁止修改、插入非第一学期的课程记录。
参考答案:
CREATE VIEW v_first_term AS SELECT s.sname, c.cname, sc.daily, sc.final FROM Student s JOIN Score sc ON s.studentno = sc.studentno JOIN Course c ON sc.courseno = c.courseno WHERE c.term = 1 WITH CHECK OPTION;
💡 解析:本题的核心重难点在于末尾的 `WITH CHECK OPTION`。它可以确保任何通过该视图执行的 INSERT 或 UPDATE 操作,其数据都必须强行满足 `term = 1` 的视图过滤约束条件。
点击评论后加载...
#161 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (9)创建 student 表,并设置 studentno 为主键约束。
参考答案:
CREATE TABLE Student ( studentno CHAR(10) PRIMARY KEY, sname VARCHAR(20) NOT NULL, sex CHAR(2), birthday DATE, entrance DATE, phone VARCHAR(15), Email VARCHAR(50) );
💡 解析:使用 CREATE TABLE 标准语法建表,直接在学号字段(studentno)后面附加 PRIMARY KEY 关键字将其指定为主键实体完整性约束。
点击评论后加载...
#162 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (10)查询期末成绩比选修该课程的平均期末成绩低的学生的学号、课程号和期末成绩。(使用子查询)
参考答案:
SELECT a.studentno, a.courseno, a.final FROM Score a WHERE a.final < ( SELECT AVG(b.final) FROM Score b WHERE b.courseno = a.courseno );
💡 解析:本题采用相关子查询来实现。外层的每一行成绩记录(a)都会与子查询中根据同一课程号(b.courseno = a.courseno)实时计算出来的平均分进行横向动态比对。
点击评论后加载...
#163 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (11)查询学生姓名 sname 字段中以“赵”开头,以“江”结束,中间包含一个字符的学生信息。
参考答案:
SELECT * FROM Student WHERE sname LIKE '赵_江';
💡 解析:在 LIKE 模糊匹配中,百分号 `%` 代表任意长度占位,而下划线 `_` 则严格代表单个任意字符占位,因此三个字且符合首尾要求的名字需写成 '赵_江'。
点击评论后加载...
#164 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (12)在 student 表的 studentno 和 phone 列上创建唯一性索引 uq_stu, 并输出 student 表中的记录,查看输出结果的顺序。
参考答案:
CREATE UNIQUE INDEX uq_stu ON Student(studentno, phone); SELECT * FROM Student;
💡 解析:使用 `CREATE UNIQUE INDEX` 语法声明多列复合唯一索引。在没有指定 ORDER BY 的情况下,其默认输出顺序一般依据存储引擎的物理聚集索引(InnoDB通常按主键递增)排出。
点击评论后加载...
#165 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (13)创建存储过程 do_insert,向 score 表中插入一行记录,然后创建另一个存储过程 do_outer,调用存储过程 do_insert,并查询输出 score 表中插入的记录。
参考答案:
DELIMITER // CREATE PROCEDURE do_insert(IN sno CHAR(10), IN cno CHAR(10), IN d INT, IN f INT) BEGIN INSERT INTO Score(studentno, courseno, daily, final) VALUES (sno, cno, d, f); END // CREATE PROCEDURE do_outer() BEGIN -- 调用内部插入过程并传参 CALL do_insert('2021001', 'C001', 85, 90); -- 查询打印刚才插入的目标数据 SELECT * FROM Score WHERE studentno = '2021001' AND courseno = 'C001'; END // DELIMITER ;
💡 解析:本题考察存储过程之间的嵌套调用机制。在外部存储过程(do_outer)的内部,直接使用 `CALL 过程名(参数)` 语法即可触发子存储过程的执行。
点击评论后加载...
#166 PROG
已知教学数据库表结构如下: Student (studentno, sname, sex, birthday, entrance, phone, Email) Course (courseno,cname,type,period,term) Score(studentno, courseno,daily,final) Teacher(teacherno,tname,major,prof,dapartment) Teach_course(teacherno,courseno) (14)从 student 表中查询学号和入学成绩。若成绩大于或等于 700 分,显示“pass”,否则显示“bye!”, 输出前 3 条记录。(注:假设入学成绩字段为 entrance_score)
参考答案:
SELECT studentno, entrance_score, IF(entrance_score >= 700, 'pass', 'bye!') AS result FROM Student LIMIT 3;
💡 解析:利用 MySQL 内置的 `IF(expr1, expr2, expr3)` 双分支流函数执行逻辑判定,并搭配 `LIMIT 3` 关键字限制结果集只回显输出前 3 条记录。
点击评论后加载...