一、选择题
下列mysql数据库的说法,正确的是( )。
参考答案:
D
💡 解析:D项是正确的重命名表语法。A项是在test库中创建t1表;B项同表中字段名不可重复;C项update并非必须连用where(尽管不连用会更新全表)。
点击评论后加载...
登录 后可参与评论
从E-R模型向关系模型转换,一个M:N的联系转换成一个关系模式时,该关系模式的主键是( )。
参考答案:
C
💡 解析:多对多(M:N)联系转换成关系模式时,必须由两端实体的主键共同组合构成新关系模式的主键。
点击评论后加载...
登录 后可参与评论
关于Truncate table, 以下( )描述是错误的。
参考答案:
A
💡 解析:Truncate 是 DDL 语句,直接清空整表并重置自增序列,绝对不能带有 Where 条件从句。
点击评论后加载...
登录 后可参与评论
在使用insert语句插入记录时,使用( )关键字会忽略导致重复关键字的错误记录。
参考答案:
B
💡 解析:INSERT IGNORE 语句在遇到主键或唯一键冲突时,会忽略错误并跳过该条记录的插入。
点击评论后加载...
登录 后可参与评论
在select语句中用于实现关系的选择运算的语句是( )。
参考答案:
C
💡 解析:关系代数中的“选择”运算对应 SQL 语句中通过 WHERE 子句进行的条件过滤。
点击评论后加载...
登录 后可参与评论
下列对于“select * from city limit 5,10”的描述正确的是( )。
参考答案:
C
💡 解析:LIMIT 5, 10 意味着跳过前5条(即从第6条开始),向后读取10条记录,所以范围是第6到第15条。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,关于普通索引的描述,错误的是( )。
参考答案:
C
💡 解析:一张表完全可以根据查询需求创建多个普通单列或组合索引,并没有“只能建一个”的限制。
点击评论后加载...
登录 后可参与评论
下列关于 MySQL唯一索引的说法,正确的是( )。
参考答案:
C
💡 解析:唯一索引(UNIQUE)的特性是值不可重复,但在MySQL的绝大多数引擎中,允许插入多个不受限制的 NULL 值。
点击评论后加载...
登录 后可参与评论
关于 MySQL视图,下列说法错误的是( )。
参考答案:
C
💡 解析:包含聚合函数、GROUP BY 或复杂联表的视图是无法直接执行 UPDATE/DELETE 等更新操作的。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,下列哪种场景最不适合创建索引?( )
参考答案:
B
💡 解析:当表的数据量极小(比如几十条记录)时,全表扫描往往比走索引树更快,此时建索引不仅多余还会增加开销。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,下列用于多条件分支判断,功能类似多重 IF…ELSEIF 的控制流函数是( )。
参考答案:
C
💡 解析:CASE WHEN 是 SQL 标准中用于实现多重条件分支逻辑的控制流语句。
点击评论后加载...
登录 后可参与评论
下列关于 MySQL 自定义函数的说法,正确的是( )。
参考答案:
C
💡 解析:自定义函数必须通过 RETURNS 子句声明返回的数据类型,并且必须有返回值。
点击评论后加载...
登录 后可参与评论
下列关于 MySQL 存储过程的描述,正确的是( )。
参考答案:
B
💡 解析:存储过程(Stored Procedure)执行时必须使用专门的 CALL 指令来调用。
点击评论后加载...
登录 后可参与评论
关于 MySQL 触发器,下列说法错误的是( )。
参考答案:
C
💡 解析:触发器由特定的 DML 事件自动激活,属于被动机制,用户无法通过命令(如 CALL)手动调用执行。
点击评论后加载...
登录 后可参与评论
在 MySQL InnoDB 中,为了解决多个事务同时修改同一行数据导致的数据不一致问题,主要采用的机制是( )。
参考答案:
B
💡 解析:InnoDB 默认支持行级锁(Row Lock),在并发事务修改同一行记录时,能通过加锁排队解决冲突。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,想要授予用户 user01 在 所有数据库所有表 上拥有查询权限,正确的语句是( )。
参考答案:
A
💡 解析:查询权限为 SELECT,所有数据库所有表使用通配符 *.*,因此 A 最为准确。
点击评论后加载...
登录 后可参与评论
在Windows系统上,如果想要启动MySQL服务,应该使用( )。
参考答案:
C
💡 解析:在 Windows 中,启动服务的命令是 net start [服务名]。
点击评论后加载...
登录 后可参与评论
MySQL安装目录下,用于存放客户端程序和可执行脚本的目录是( )。
参考答案:
A
💡 解析:bin 目录存放了数据库的核心二进制可执行文件,如 mysql.exe, mysqldump.exe 等。
点击评论后加载...
登录 后可参与评论
存储电话号码并且电话号码的长度可能不同,应该选择( )数据类型。
参考答案:
C
💡 解析:电话号码可能包含前导零且长度不一,不能用 INT,应选择节省空间的可变长字符串 VARCHAR。
点击评论后加载...
登录 后可参与评论
查找电话号码以"123"开头或以"456"结尾的所有联系人,应使用( )。
参考答案:
A
💡 解析:'123%' 匹配 123 开头,'%456' 匹配 456 结尾,题目要求“或”的关系,所以用 OR 连接。
点击评论后加载...
登录 后可参与评论
从一个结果集中获取第11到20条记录,你应该使用( )LIMIT子句。
参考答案:
C
💡 解析:LIMIT offset, count。跳过前10条(offset为10),取10条(count为10),即为 LIMIT 10, 10。
点击评论后加载...
登录 后可参与评论
使用GROUP BY对数据进行分组后,你想过滤出那些分组后的某个聚合值大于10的组,应该使用( )子句。
参考答案:
B
💡 解析:WHERE 用于分组前的单行过滤,HAVING 专门用于分组后对聚合函数结果进行条件筛选。
点击评论后加载...
登录 后可参与评论
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。
点击评论后加载...
登录 后可参与评论
合并两个SELECT语句的结果集,并且保留重复的行,应该使用( )操作符。
参考答案:
B
💡 解析:UNION 会自动去重,而 UNION ALL 会保留所有的合并结果行,不去重。
点击评论后加载...
登录 后可参与评论
以下子查询( )能找出订单金额超过平均值的订单。
参考答案:
A
💡 解析:必须在右侧以括号将聚合函数包装成一个独立的子查询: > (SELECT AVG(...) FROM ...)。
点击评论后加载...
登录 后可参与评论
在创建表时,可以使用( )关键字使当前建立的表为临时表。
参考答案:
B
💡 解析:[此为原卷重复题] 使用 CREATE TEMPORARY TABLE 可以创建临时表。
点击评论后加载...
登录 后可参与评论
下列对于“select * from city limit 5,10”的描述正确的是( )。
参考答案:
C
💡 解析:[此为原卷重复题] LIMIT 5, 10 表示跳过5条,取10条,即第6到15条。
点击评论后加载...
登录 后可参与评论
含有“with check option ”属性参数的视图没有对基表的( )进行限制。
参考答案:
B
💡 解析:WITH CHECK OPTION 能够拦截不符合视图条件的 INSERT 和 UPDATE 操作,但不对 DELETE 产生拦截。
点击评论后加载...
登录 后可参与评论
SELECT * FROM stuinfo WHERE StuNO( )(SELECT StuNo FROM stuMarks),括号中应填的字符为( )。
参考答案:
B
💡 解析:子查询返回的是一个集合结果列,外层条件进行多值匹配必须用 IN 关键字。
点击评论后加载...
登录 后可参与评论
假设有一份绝密文件存于某台机器的secretData数据库中的某个表里面,现在出于数据安全的考虑,对于新创建的用户都只能拥有该机器的登录权限,而不能拥有数据库的其他权限,那么新创建tqhf用户满足这一要求的语句是( )。
参考答案:
D
💡 解析:GRANT USAGE 意思是仅仅授予最基础的登录连接权限(无实际操作权),全局授权对应 *.*。
点击评论后加载...
登录 后可参与评论
在MySQL数据库中,通常使用( )语句来指定一个已有数据库作为当前工作数据库。
参考答案:
D
💡 解析:USE database_name; 命令用于切换到目标数据库上下文。
点击评论后加载...
登录 后可参与评论
关于MySQL常见索引的描述正确是( )。
参考答案:
C
💡 解析:A错在UNIQUE允许包含多个NULL;D错在非聚集索引并不改变物理数据的存储顺序。组合索引必须遵循“最左前缀”。
点击评论后加载...
登录 后可参与评论
关于维护参照完整性约束的策略,下列选项描述不正确的是( )。
参考答案:
A
💡 解析:(有争议选C也可以)当使用级联 CASCADE 或 SET NULL 策略时,系统不会拒绝执行更新,而是同步修改相关数据,故 A 说法过于绝对而错误。
点击评论后加载...
登录 后可参与评论
下列选项中关于数据库事务的特性描述正确的是( )。
参考答案:
D
💡 解析:D 完美对应了事务 ACID 中的“隔离性(Isolation)”,即多个并发事务相互之间不会互相干扰和泄露。
点击评论后加载...
登录 后可参与评论
在控制台中执行( )语句可以退出MySQL。
参考答案:
D
💡 解析:[此为原卷重复题] 键入 exit 或 quit 回车均可断开并退出 MySQL 终端。
点击评论后加载...
登录 后可参与评论
下列( )语句来定义游标。
参考答案:
C
💡 解析:游标标准声明语法:DECLARE cursor_name CURSOR FOR select_statement; 。
点击评论后加载...
登录 后可参与评论
死锁发生的原因是( )。
参考答案:
A
💡 解析:死锁是由多个并发进程/事务为了争夺系统资源而陷入了互相无限等待的僵局,本质上是因为并发调度与控制策略所引发的副作用。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,若要定义一个用户自定义变量并在当前会话中使用,该变量名必须以什么符号开头?( )。
参考答案:
D
💡 解析:用户级会话变量使用一个 @ 作为前缀开头,比如 @user_id。
点击评论后加载...
登录 后可参与评论
关于数据库中的空值,下列描述正确的是( )。
参考答案:
C
💡 解析:NULL 值是一种专门用来代表“未知”、“缺失”概念的标记,它不同于0或空字符串,与任何值做算术运算结果仍是 NULL。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,用于在 WHERE 子句中进行正则表达式匹配的操作符是( )。
参考答案:
B
💡 解析:MySQL 使用 REGEXP (或 RLIKE) 关键字来支持复杂的正则模式匹配。
点击评论后加载...
登录 后可参与评论
以下哪个窗口函数会为相同值的行分配相同的排名,并跳过后续排名?( )。
参考答案:
B
💡 解析:RANK() 函数在遇到并列数据时排名相同,并且其后的排名会出现跳跃不连续现象(如1,2,2,4)。
点击评论后加载...
登录 后可参与评论
关于 MySQL 中的临时表,下列说法错误的是( )。
参考答案:
D
💡 解析:MySQL 的临时表可以使用 InnoDB、MyISAM 等各种引擎,并非必须存放在纯内存的 MEMORY 引擎中。
点击评论后加载...
登录 后可参与评论
含有with check option属性参数的视图没有对基表的( )限制。
参考答案:
B
💡 解析:[此为原卷重复题] WITH CHECK OPTION 不会对 DELETE (删除) 操作进行任何条件监测拦截。
点击评论后加载...
登录 后可参与评论
MySQL所支持的触发器不包括( )。
参考答案:
C
💡 解析:触发器挂载在表的 DML 操作事件上(Insert/Update/Delete),不存在专门针对 Check 完整性校验的触发器事件。
点击评论后加载...
登录 后可参与评论
(原卷序号14错误插空)下列关于 MySQL 中游标的描述,不正确的是( )。
参考答案:
A
💡 解析:游标用于逐行遍历整个集合(多行数据),而 SELECT INTO 只能接收单行数据,两者在数据结构应对上是截然不同的。
点击评论后加载...
登录 后可参与评论
下列关于 MySQL 存储过程的叙述中,正确的是( )。
参考答案:
C
💡 解析:存储过程无法嵌入 SELECT 中,无 RETURNS 声明,但支持定义 IN/OUT/INOUT 参数并必须用 CALL 指令执行。
点击评论后加载...
登录 后可参与评论
关系数据库中,实现主键标识元组的作用是通过( )来实现的。
参考答案:
A
💡 解析:实体完整性规则强制要求每个关系的主键不能取空值且必须唯一标识一个元组实体。
点击评论后加载...
登录 后可参与评论
SQL语言具有( )功能。
参考答案:
B
💡 解析:SQL 是标准的综合性数据库语言,拥有 DDL(数据定义)、DML(数据操纵)和 DCL(数据控制)三大核心模块。
点击评论后加载...
登录 后可参与评论
二、填空题
MySQL支持多种数据类型,其中 类型用于存储定长字符串,而 类型用于存储可变长字符串。
参考答案:
CHAR, VARCHAR
💡 解析:CHAR为定长字符串;VARCHAR为变长字符串。
点击评论后加载...
登录 后可参与评论
DECIMAL(M,D)类型,M和D可以省略,如果省略,则M默认为 ,D默认为 。
参考答案:
10, 0
💡 解析:省略时默认格式为 DECIMAL(10, 0)。
点击评论后加载...
登录 后可参与评论
外连接查询包括 和 。
参考答案:
左外连接, 右外连接
💡 解析:即 LEFT JOIN 和 RIGHT JOIN(全外连接MySQL一般用UNION实现)。
点击评论后加载...
登录 后可参与评论
sql语言有____,______,______,______四部分(填英文简写)。
参考答案:
DDL, DML, DQL, DCL
💡 解析:分别代表:数据定义语言、数据操纵语言、数据查询语言、数据控制语言。
点击评论后加载...
登录 后可参与评论
IS NULL 关键字用于判断字段的值是否为空值,该关键字通常放在 子句之后。
参考答案:
WHERE
💡 解析:IS NULL 作为过滤条件,放在 WHERE 后面。
点击评论后加载...
登录 后可参与评论
MySQL的命令可以通过\字母的方式来表示,其中清除当前输入语句的指令是________。
参考答案:
\c
💡 解析:输入 \c 可以直接清空当前正在编写的错乱 SQL 语句。
点击评论后加载...
登录 后可参与评论
MySQL中的 是用于执行复杂查询和数据操作的强大工具,它允许用户将多个查询组合成一个单独的查询。
参考答案:
子查询
💡 解析:嵌套在另一个查询内部的查询称为子查询。
点击评论后加载...
登录 后可参与评论
触发器是一种特殊的存储过程,它可以在对一个表上进行update、 和 delete 操作中的任一种或几种操作时被自动调用执行。
参考答案:
insert
💡 解析:触发器绑定的三大 DML 事件:INSERT、UPDATE、DELETE。
点击评论后加载...
登录 后可参与评论
约束中, 约束可以保证字段值唯一且非空。
参考答案:
主键 (PRIMARY KEY)
💡 解析:主键的特性就是:唯一(UNIQUE)且非空(NOT NULL)。
点击评论后加载...
登录 后可参与评论
用SELECT进行模糊查询时,可以使用匹配符,但要在条件值中使用 或%等通配符来进行查询。
参考答案:
_ (下划线)
💡 解析:% 代表任意长字符,_ (下划线) 代表单个任意字符。
点击评论后加载...
登录 后可参与评论
修改自己的MySQL服务器密码的命令是 。
参考答案:
ALTER USER
💡 解析:在现代 MySQL 中,推荐使用 ALTER USER 语句修改密码。
点击评论后加载...
登录 后可参与评论
数据库系统的三级模式结构包括:外模式、________和内模式。
参考答案:
模式 (或概念模式)
💡 解析:三级模式:外模式(用户)、模式(全局逻辑)、内模式(物理)。
点击评论后加载...
登录 后可参与评论
MySQL 的日志系统是保障数据库稳定运行和数据安全的重要机制。其中,________ 日志用于记录数据库启动、停止以及运行过程中发生的严重错误信息,是排查故障的首选。
参考答案:
错误 (error)
💡 解析:错误日志(Error Log)记录了引擎的重大启停与致命故障信息。
点击评论后加载...
登录 后可参与评论
在 MySQL 中,用来给字段设置默认值的关键字是 ________ 。
参考答案:
DEFAULT
💡 解析:建表时使用 DEFAULT 关键字设置缺省值。
点击评论后加载...
登录 后可参与评论
select <NULL<=>NULL> is NULL;以上SQL语句的结果为________。
参考答案:
0 (或 false)
💡 解析:NULL<=>NULL 会返回真(1);而 1 is NULL 为假,故返回 0。
点击评论后加载...
登录 后可参与评论
当某字段要使用 AUTO_INCREMENT 的属性时,该字段必须是________类型的数据。
参考答案:
整数 (或INT等数值类型)
💡 解析:自增(AUTO_INCREMENT)只能作用于整数类型的列。
点击评论后加载...
登录 后可参与评论
在 INSERT 触发器中,可以引用一个名为________的虚拟表,访问被插入的行。
参考答案:
NEW
💡 解析:INSERT 动作只有新数据产生,因此只能引用 NEW 表。
点击评论后加载...
登录 后可参与评论
如果 MySQL 服务名为 MySQL5,则在 Windows 的命令窗口中,启动 MySQL 服务的指令是________。
参考答案:
net start MySQL5
💡 解析:Windows 服务启动命令固定格式为:net start [服务名]。
点击评论后加载...
登录 后可参与评论
在MySQL中,游标通常与 一起使用,以便逐行处理结果集中的数据。
参考答案:
存储过程
💡 解析:在 MySQL 中,游标(Cursor)由于其逐行处理的特性,通常只能被声明并使用在存储过程(或自定义函数)内部,配合循环结构来处理复杂的逻辑。
点击评论后加载...
登录 后可参与评论
在MySQL中,如果对table1和table2进行连接,但没有指定任何连接条件,那么结果将是一个 ,即table1中的每一行都会与table2中的每一行进行组合。
参考答案:
笛卡尔积 (或 CROSS JOIN)
💡 解析:没有 ON 或 WHERE 条件的关联查询,会导致行数相乘,产生笛卡尔积爆发。
点击评论后加载...
登录 后可参与评论
对employees表中的salary字段进行排序,并且按照从高到低的顺序显示,应该使用ORDER BY子句并指定 。
参考答案:
DESC
💡 解析:ASC 为默认升序,DESC (Descending) 为降序。
点击评论后加载...
登录 后可参与评论
在MySQL中各存储引擎都使用了3种级别的锁定机制,分别为 、行级锁定和 。
参考答案:
表级锁定, 页级锁定
💡 解析:MySQL 的三大封锁粒度:表锁、页锁、行锁。
点击评论后加载...
登录 后可参与评论
在MySQL数据库中,创建新用户可以直接操作MySQL权限表,可以使用
语句创建。
参考答案:
CREATE USER
💡 解析:标准的 DCL 语法中使用 CREATE USER 来创建新账户。
点击评论后加载...
登录 后可参与评论
按照事务定义的方式可以将事务分为系统定义事务和 。
参考答案:
用户定义事务 (或 显式事务)
💡 解析:由用户使用 START TRANSACTION/BEGIN 显式界定的事务。
点击评论后加载...
登录 后可参与评论
三、判断题
InnoDB 引擎通过行锁解决并发修改同一行的数据冲突问题。( )
参考答案:
对
💡 解析:InnoDB 引擎支持行级锁定,能够高效解决并发修改同一行数据的冲突。
点击评论后加载...
登录 后可参与评论
数据库管理系统是位于用户与操作系统之间的一层数据管理软件。( )
参考答案:
对
💡 解析:DBMS 属于系统支撑软件,架设在用户应用程序与底层操作系统之间。
点击评论后加载...
登录 后可参与评论
使用INSERT语句向表中插入元组时,元组的属性值顺序必须与表结构定义的顺序一致。( )
参考答案:
错
💡 解析:如果在 INSERT 语句中显式指定了列名列表,只需与声明的列表顺序一致即可,无需与表结构物理定义顺序一致。
点击评论后加载...
登录 后可参与评论
在将E-R图转换为关系模式时,实体类型转换为关系模式,联系类型根据其类型转换为关系模式。( )
参考答案:
对
💡 解析:E-R模型中的实体和多对多等联系在逻辑设计阶段都会被转换为对应的关系模式。
点击评论后加载...
登录 后可参与评论
数据库中的“角色”是权限的集合,将一个角色授予用户,意味着该用户将继承此角色所拥有的所有权限。( )
参考答案:
对
💡 解析:角色(Role)用于简化权限管理,用户被授予某个角色后,自动拥有该角色集合内的全部权限。
点击评论后加载...
登录 后可参与评论
如果事务中的任何一个操作失败,整个事务都会失败,数据库会回滚到事务开始前的状态。( )
参考答案:
对
💡 解析:这体现了数据库事务的原子性(Atomicity)特征,要么全做,要么全不做。
点击评论后加载...
登录 后可参与评论
职称 in('教授',’副教授’)与 职称='教授’and 职称='副教授”等价。( )
参考答案:
错
💡 解析:IN 相当于逻辑“或”(OR),而 AND 是逻辑“与”,一个人不可能同时既是教授又是副教授,两者绝对不等价。
点击评论后加载...
登录 后可参与评论
在实际应用中应尽量不要将数据库的隔离级别设置为Read Uncommitted。( )
参考答案:
对
💡 解析:Read Uncommitted(读未提交)会导致脏读,在实际生产环境中极少使用。
点击评论后加载...
登录 后可参与评论
DELETE 语句删除表结构,DROP 语句只删除表中数据。( )
参考答案:
错
💡 解析:正好说反了。DELETE 仅删除表内数据,保留结构;DROP 会将数据连同表结构一起彻底销毁。
点击评论后加载...
登录 后可参与评论
BLOB 类型适合存储大文本、图片、文件等二进制数据。( )
参考答案:
对
💡 解析:BLOB (Binary Large Object) 是标准的二进制大型对象数据类型。
点击评论后加载...
登录 后可参与评论
HAVING 子句可以使用聚合函数,WHERE 子句不可以。( )
参考答案:
对
💡 解析:WHERE 用于分组前的单行过滤;HAVING 用于分组后,天然常与聚合函数绑定联用。
点击评论后加载...
登录 后可参与评论
REPEATABLE READ 是 InnoDB 默认事务隔离级别。( )
参考答案:
对
💡 解析:MySQL 的 InnoDB 存储引擎默认的隔离级别就是可重复读(REPEATABLE READ)。
点击评论后加载...
登录 后可参与评论
主键索引属于聚簇索引,一张表只能有一个聚簇索引。( )
参考答案:
对
💡 解析:聚簇索引决定了行数据在物理磁盘上的实际排列顺序,因为物理顺序唯一,所以一张表只能有一个聚簇索引。
点击评论后加载...
登录 后可参与评论
数据库完全备份适合数据量庞大、业务频繁的场景。( )
参考答案:
错
💡 解析:完全备份耗时极长且占用海量空间,对于数据庞大、频繁的业务,应采用完全备份配合增量备份的混合策略。
点击评论后加载...
登录 后可参与评论
在SELECT语句的FROM子句中可以指定多个表或视图,相互之间要用逗号分隔。( )
参考答案:
对
💡 解析:多表查询时,FROM 子句后跟多个表名用逗号隔开,这属于隐式内连接语法。
点击评论后加载...
登录 后可参与评论
可以通过SHOW ENGINE INNODB STATUS命令查看死锁信息。( )
参考答案:
对
💡 解析:该命令会打印 InnoDB 的运行状态,其中包含最近一次死锁的详细日志。
点击评论后加载...
登录 后可参与评论
MyISAM支持外键约束,而InnoDB不支持外键。( )
参考答案:
错
💡 解析:完全相反。InnoDB 引擎完美支持事务和外键,而传统 MyISAM 不支持。
点击评论后加载...
登录 后可参与评论
MySQL可以通过不同的连接器与多种编程语言(如Java、Python、PHP等)进行交互。( )
参考答案:
对
💡 解析:MySQL 提供了丰富的驱动程序(Connector)来支持各主流编程语言的连接交互。
点击评论后加载...
登录 后可参与评论
E-R图是数据库设计的工具之一,它一般适用于建立数据库的逻辑模型。( )
参考答案:
错
💡 解析:E-R 图(实体-联系图)是概念设计阶段的工具,用于建立概念模型,而非逻辑模型。
点击评论后加载...
登录 后可参与评论
SQL语言的视图定义和视图操作功能在一定程度上支持了数据的逻辑独立性。( )
参考答案:
对
💡 解析:视图可以向用户屏蔽底层基本表的结构变更,从而提供逻辑独立性。
点击评论后加载...
登录 后可参与评论
在MySQL中,用户执行的每一条SQL语句,默认都会当成单独的事务自动提交。( )
参考答案:
对
💡 解析:MySQL 的 autocommit(自动提交)机制默认是开启的。
点击评论后加载...
登录 后可参与评论
使用 DELIMITER 修改结束符为$$后,下次登录仍然有效。( )
参考答案:
错
💡 解析:DELIMITER 更改只在当前客户端会话生命周期内有效,退出重连后将恢复为默认的分号。
点击评论后加载...
登录 后可参与评论
四、程序填空题
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。
点击评论后加载...
登录 后可参与评论
(2)查询选修课程人数大于 3 人的课程编号。请补全以下代码:
SELECT Cno,COUNT(*) AS 选课人数
FROM SC
GROUP BY Cno
________ COUNT(*) ________ 3;
参考答案:
HAVING, >
💡 解析:分组后的过滤使用 HAVING,大于填 >。
点击评论后加载...
登录 后可参与评论
(3)利用窗口函数,按课程分组,对成绩进行降序排名。请补全以下代码:
SELECT Sno,Cno,Grade,
DENSE_RANK() ________(PARTITION BY Cno ________ Grade DESC)
FROM SC
参考答案:
OVER, ORDER BY
💡 解析:窗口函数基础语法 OVER (PARTITION BY ... ORDER BY ...)。
点击评论后加载...
登录 后可参与评论
(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。
点击评论后加载...
登录 后可参与评论
(5)根据学生的奖学金金额进行判断。如果奖学金(Sscholarship)大于 5000,则标记为 'High',否则标记为 'Normal'。请补全以下代码:
SELECT Sno, Sname,
________(Sscholarship > 5000, 'High', 'Normal') AS Level
________ Student;
参考答案:
IF, FROM
💡 解析:此题原卷存在代码缺失。缺失了 IF 和 FROM 关键字。
点击评论后加载...
登录 后可参与评论
(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。
点击评论后加载...
登录 后可参与评论
(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。
点击评论后加载...
登录 后可参与评论
(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。
点击评论后加载...
登录 后可参与评论
(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 多条件分支理解。
点击评论后加载...
登录 后可参与评论
(10)REVOKE INSERT ON mydb.* FROM 'user123'@'hostname';
这条语句的功能是 ________。
参考答案:
收回(注销)用户 'user123'@'hostname' 对 mydb 数据库下所有表的数据插入(INSERT)权限。
💡 解析:考察 REVOKE 撤销权限的含义。
点击评论后加载...
登录 后可参与评论
(11)给名字是zhangsan的用户分配对数据库 studb中的stuinfo 表的查询和插入数据权限的语句是 ________。
参考答案:
GRANT SELECT, INSERT ON studb.stuinfo TO 'zhangsan'@'%';
💡 解析:考察 GRANT 赋权语句的书写。
点击评论后加载...
登录 后可参与评论
(12) SET @length = 3;
SELECT LEFT('Hello World', @length);
上述代码的结果为 ________。
参考答案:
Hel
💡 解析:LEFT 函数截取左侧指定长度的字符串。
点击评论后加载...
登录 后可参与评论
(13)select 'Abc'='abc'; 的结果为 ________ ,select -2.0*4.0;的结果为 ________ 。
参考答案:
1, -8.0
💡 解析:MySQL 默认字符串比较大小写不敏感故为 1(True);简单乘法为 -8.0。
点击评论后加载...
登录 后可参与评论
(14)create event direct2
on schedule at current_timestamp +interval 5 second
do
create table test2(timeline timestamp);
这条语句的功能是
________。
参考答案:
创建一个定时事件任务 direct2,在当前时间过5秒钟之后,自动执行创建 test2 数据表的操作。
💡 解析:原卷此处换行错乱已保留。考察 EVENT 事件定时器。
点击评论后加载...
登录 后可参与评论
(15) SELECT FLOOR(1 + RAND() * 100) AS random_number
这条语句的功能是 ________。
参考答案:
生成一个 1 到 100 之间(包含1和100)的随机整数,并将列名命名为 random_number。
💡 解析:考察 RAND() 和 FLOOR() 函数结合生成随机数。
点击评论后加载...
登录 后可参与评论
五、SQL语句大题
已知教学数据库表结构如下:
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 关键字对职称执行降序排列。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 过滤目标课程名。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 括号内的数据顺序需要与前面声明的字段顺序严格一致,且字符串和日期类型需包裹单引号。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 执行降序排列。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 排除这些学号,即可得到没有任何选课成绩的学生。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 三表联查获取对应教师的授课详情。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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` 的视图过滤约束条件。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 关键字将其指定为主键实体完整性约束。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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)实时计算出来的平均分进行横向动态比对。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 模糊匹配中,百分号 `%` 代表任意长度占位,而下划线 `_` 则严格代表单个任意字符占位,因此三个字且符合首尾要求的名字需写成 '赵_江'。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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通常按主键递增)排出。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 过程名(参数)` 语法即可触发子存储过程的执行。
点击评论后加载...
登录 后可参与评论
已知教学数据库表结构如下:
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 条记录。
点击评论后加载...
登录 后可参与评论