来源:MySQL专项练习选择题
1.有一个User用户表,要删除整张表(指完全删除表数据和结构),下面正确的MySQL语句是:
A.DELETE TABLE User;
B.DROP TABLE User;
C.TRUNCATE TABLE User;
D.DELETE FROM User ;
解析:选B。A选项错在DELETE后面应该是接FROM+表格名,而不是TABLE...;
B选项是完全删除表数据和表结构。
C和D选项仅可以删除表里的数据,但是无法删除表结构。
2.下列操作在视图上无法完成的是?
A.视图数据查询
B.更新视图数据
C.在视图中定义新的基本表
D.在视图中定义新视图
解析:选C。在视图中也可以定义新的视图,却无法创建表,因为视图是个虚表,视图在数据库中没有原本的物理存储,只是相当于临时表。
3.下面哪些字符最可能会导致sql注入?
A.'(单引号)
B./
C."(双引号)
D.$
解析:选A。单引号作为MySQL中的字段值封装方式,最容易被用作注入攻击。SQL注入的关键是单引号的闭合,双引号里不能再放双引号,但单引号里可以放双引号。
4.学生、书店和图书三个实体集之间的联系属于()
A.二元联系
B.多元联系
C.自反联系
D.一对一联系
解析:选B。参与联系的实体集个数大于2个时,为多元联系;A选项,二元联系指只有两个实体集参与的联系;C选项,自反联系描述了同一实体集内两部分实体之间的联系,是一种特殊的二元联系;D选项,是二元联系下的一种细分。
5.假设有一份绝密文件存于某台机器的secretData数据库中的某个表里面,现在出于数据安全的考虑,对于新创建的用户都只能拥有该机器的登录权限,而不能拥有数据库的其他权限,那么新创建tqhf用户满足这一要求的语句是()
A.grant usage on *.* with 'tqhf'@'%';
B.grant usage on secretData.* to 'tqhf'@'%';
C.grant usage on secretData.* with 'tqhf'@'%';
D.grant usage on *.* to 'tqhf'@'%';
解析:选D。数据库赋予登录权限的语句是grant usage on ... to。因此答案A、C都不正确。题目中只说secretData数据库中的某个表有绝密文件,但是对新创建的用户可拥有登录权限,而没有其他权限。并没有说只对secretData数据库,因此题目引入该数据库只是一个干扰信息,所以答案B错误。
6.在STUDENT表中按class_type统计数据行数分组情况后,筛选出数据行数为大于10行的组
A.SELECT class_type,COUNT(*) FROM STUDENT GROUP BY class_type HAVING COUNT(*)>10
B.SELECT class_type,COUNT(*) FROM STUDENT GROUP BY class_type WHERE COUNT(*)=10
C.SELECT class_type,COUNT(*) FROM STUDENT HAVING COUNT(*)>10 GROUP BY class_type
D.SELECT class_type,COUNT(*) FROM STUDENT WHERE COUNT(*) >10 GROUP BY class_type
解析:选A。由题意得,若要筛选出数据行数大于10的,第一时间肯定会想到WHERE子句,但是由于使用GROUP BY后COUNT应该写在HAVING后,因此选A,BCD均属于用法错误,故排除。WHERE不能接聚合函数(MAX、MIN、COUNT、SUM、AVG等)。HAVING后可以接聚合函数。WHERE用在GROUP BY前,先过滤后分组;HAVING用在GROUP BY之后,先分组后过滤。且使用HAVING一定要用到GRUOP BY,但用到GROUP BY不一定有HAVING。顺序:FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY。
7.决定不再使用一张备份数据表waterinfo001表,需永久删除。选出符合要求的语句。
A.DELETE TABLE waterinfo001
B.DELETE FROM TABLE waterinfo001
C.DROP TABLE waterinfo001
D.DROP FROM TABLE waterinfo001
解析:选C。
1. drop是完全删除表,包括表结构
2. delete是删除表数据,保留表的结构,而且可以加where,只删除一行或者多行
3. truncate 只能删除表数据,会保留表结构,而且不能加where
8.在创建完一张数据表后,发现少创建了一列,此时需要修改表结构,应该用哪个语句进行操作?
A.MODIFY TABLE
B.INSERT TABLE
C.ALTER TABLE
D.UPDATE TABLE
解析:选C。由题意得,通过ALTER TABLE进行表结构修改;INSERT是插入语句;MODIFY只是ALTER功能下的一个功能模块,只能修改字段属性;UPDATE是更新语句故不符合题意
9.现在有一个学生表student,需要回收所有机器的tqhf用户对学生表student所在数据库user的update和insert权限,则下列语句中能够实现这一功能的语句是()
A.revoke update,insert on user.* to 'tqhf'@'%';
B.revoke update,insert on *.* to 'tqhf'@'%';
C.revoke update,insert on user.* from 'tqhf'@'%';
D.revoke update,insert on *.* from 'tqhf'@'%';
解析:选C。回收表的操作功能语句revoke ... on ... from。因此答案A、B不正确。由于题目要求是回收所有机器的tqhf用户对user表的update和insert权限,而答案D是回收所有数据库的update和insert权限,因此答案D不正确。@'%' 是表示任何主机的通配符,@:划分用户名和主机,%:代表"任何"。
10.在MySql中进行数据查询时,如果要对查询结果的列名重新命名,将sno列重新命名为学号,则下列语句正确的是( )
A.select sno as 学号 from T
B.select 学号= sno from T
C.select sno 学号 from T

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



