SQL数据库——易错选择题总结

1. 一个关系数据库文件中的各条记录 () 。

A. 前后顺序不能任意颠倒,一定要按照输入的顺序排序

B. 前后顺序可以任意颠倒,不影响库中的数据关系

C. 前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同

D. 前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列

答案:B 

解析:

        关系数据库的逻辑性强而物理性弱,因此关系数据库中的各条记录前后顺序可以任意颠倒,不影响库中数据的关系。

2. 下列关于视图的说法错误的是:

A. 视图是从一个或多个基本表导出的表,它是虚表

B. 视图一经定义就可以和基本表一样被查询、删除和更新

C. 某一用户可以定义若干个视图

D. 视图可以用来定义新的视图

答案:B

解析:

        视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。但是视图并不在数据库中以存储的数据值集形式存在。行和列数据来自 由定义视图的查询所引用的表,并且在引用视图时动态生成。

        视图一经定义就无法修改,可以查询和删除,但是不能更新。

3. 在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:4

A. delete from 订单表 where 订购日期

B. delete from 订单表 where 订购日期

C. delete from 订单表 where 订购日期

D. delete from 订单表 where 订购日期

答案:D

解析:

DATEADD()函数在日期中添加或减去指定的时间间隔。

语法:

DATEADD(datepart,number,date)

-datapart参数的取值范围是{yy/yyyy,qq/q,mm/m,dy/y,dd/d,wk/ww,dw/w,hh,mi/n,ss/s,ms,mcs,ns}

-number 是您希望添加的间隔数

-date 参数是合法的日期表达式

GETDATE()函数是从SQL Server 返回当前的时间和日期。

mysql中获取当前日期和时间的函数为row(),mysql中没有getdate()函数

mysql中也有dateadd()函数,语法为DATE_ADD(date, INTERVAL expr type)

-date参数是合法的日期表达式,expr参数是您希望添加的时间间隔。

所以本题A,C不符合语法,因为是前3年,所以是-3,选择D。

4. 负责数据库中查询操作的数据库语言是( )。

A. 数据定义语言

B. 数据管理语言

C. 数据操纵语言

D. 数据控制语言

答案:C

解析:

数据定义语言(DDL)——用来创建数据库中的各种对象:表,视图,索引,同义词,聚簇等。

数据操纵语言(DML)——主要负责数据的基本操作,包括查询及增加,删除,修改等操作。

数据控制语言(DCL)——数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。

5. SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是()

A. HAVING在查询语句中必须依赖于GROUP BY

B. WHERE子句用来限制SELECT语句从表中指定选取的行

C. GROUP BY子句用来分组WHERE子句的输出结果集

D. HAVING子句用来从分组的结果中筛选列

答案:D

解析:

group by是分组语句。

where是分组前过滤,having是分组后过滤。

having是分组查询时,在分组后条件过滤,这里的过滤是针对来过滤,不是筛选列。

6. 定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程 名、先修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( )

A. 第二范式

B. 第一范式

C. 第三范式

D. BCNF范式

答案:A

解析:

第一范式(1NF):列不可再分。

第二范式(2NF):属性完全依赖于主键。

第三范式(2NF):属性不依赖于其他非主属性,属性直接依赖于主键。数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。

BCNF范式:所有属性都不传递依赖于关系的任何候选键。

        本题满足第二范式,学生表S中,学生所在系(Sd)依赖学号(S),而所在系的系主任(Dc)又依赖学生所在系(Sd),存在依赖传递,不满足第三范式,所以选A。

7. 某关系表有:员工(部门编号,部门名称,员工编号,姓名,性别,年龄),则其主码为()。

A. 部门编号、员工编号

B. 员工编号

C. 姓名

D. 部门编号

答案:A

解析:

主键,又称为主码。

这里看员工编号能不能重复,如果员工编号可以重复,那么就需要加上部门编号作为主键。

根据业务来设计表:

(1). 员工编号:可以标识数据(员工编号唯一,主键就是员工编号)

(2). 员工编号有重复,不同部门,有相同的员工编号(主键就是员工编号+部门编号)

所以这里保险起见选A。

8. 给出数据表 score(stu-id,name,math,english,Chinese), 下列语句正确的是( )

A. Select sum(math),avg(chinese) from score

B. Select *,sum(english) from score

C. Select stu-id, sum(math) from score

D. Delete * from score

答案:A

解析:

如果使用了聚合函数,剩下的查询条件也只能是聚合函数,所以B,C错误。

D选项语法错误。如果想删除表中所有的数据:Delete from score,后面不加where条件即可。

9. 设有一个数据库mydb中有一个表tb1,表中有六个字段,主键为ID,有十条记录,ID从0到9, 以下代码输出结果是()

SQL数据库——易错选择题总结_第1张图片

A. 6

B. 4

C. 3

D. 5

答案:C

解析:

        查询了三个字段:id,name,age,所以选择C。

10. 在一个含有group by的查询sql中,同时存在having和where,sql在解析执行的时候,先执行的是哪一个?

A. having

B. where

答案:B

解析:

group by进行分组查询:

(1). 先进行where条件过滤

(2). group by分组

(3). 进行having分组后的条件过滤。

所以选B。

11. 数据库做join操作时,至少要涉及到几张表?

A. 3

B. 1

C. 2

D. 4

答案:B

解析:

自连接,只涉及到一张表,选B。

12. 在Mysql中,语句 SELECT IF(-1,5,2) 的返回值是:

A. 2

B. 6

C. -1

D. 5

答案:D

解析:

if()函数的具体用法如下:

IF(expr1, expr2, expr3),如果expr1的值为真(boolean值为true,或不为0的数值),则返回expr2的值,否则返回expr3的值。

在本题中,expr1 = -1,是不为0的数,所以返回expr2的值,即返回5,选D。

13. 在关系型是数据库中,有两个不同的事务同时操作数据库中同一表的同一行,不会引起冲突的是:

A. 其中一个DELETE操作,一个是SELECT操作

B. 其中两个都是UPDATE

C. 其中一个是SELECT,一个是UPDATE

D. 其中一个SELECT

E. 其中一个是DELETE,另一个是UPDATE

F. 两个都是DELETE

答案:F

解析:

a-f选项:一个操作属于一个会话,另一个操作,属于另一个会话。

冲突:两个会话的操作,同时执行时,是否会相互影响。

A:先查询,再删除,再查询记录已经删除,两次查询不一致,冲突。

B:与A选项同理,两次更新如果条件一样肯定会相互影响。

例如:

SQL数据库——易错选择题总结_第2张图片

C:与A选项同理。

SQL数据库——易错选择题总结_第3张图片

D:另一个操作只有是查询时,不会冲突,但如果是插入,修改,删除,都存在冲突。

SQL数据库——易错选择题总结_第4张图片

E:与A选项同理。

F:不冲突,结果一致。

SQL数据库——易错选择题总结_第5张图片

所以选择F。

14. 以下哪个不是与Mysql服务器相互作用的通讯协议()

A. TCP/IP

B. UDP

C. 共享内存

D. Socket

答案:B

解析:

TCP/IP协议:连接MySql,各自主要编程语言都是根据这个协议实现了连接模块。

UDP协议:无连接,不可靠,不能保证数据传输的可靠,但是数据库服务一定要求数据可靠。

Share Memory协议(共享内存):只有Windows可以使用,使用此协议,一个host上只能有一个server,一般不用。

Socket协议: 是传输层协议的具体软件实现,它封装了协议底层的复杂实现方法,为开发人员提供了便利的网络连接。Socket 是网络编程的基石,像 Http 的请求,MySQL 数据库的连接等绝大部分的网络连接都是基于 Socket 实现的。

所以选B。

15. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()

A. ALTER TABLE S DROP Age

B. ALTER TABLE S ‘Age’

C. UPDATE S Age

D. DELETE Age from S

答案:A

解析:

删除字段—>修改表结构—>alter table表名,再跟具体修改的语句:

添加表字段:

alter table table_name add 字段名称 字段类型

删除表字段:

alter table table_name drop 字段名称

修改表字段:

alter table table_name change 旧字段名称 新字段名称 字段类型

alter table table_name modify 字段名称 字段类型

所以选择A。

16. 下列选项中,不属于SQL约束的是:

A. UNIQUE

B. PRIMARY KEY

C. FOREIGN KEY

D. BETWEEN

答案:D

解析:

A:唯一约束。

B:主键约束。

C:外键约束。

D:条件过滤关键字。

所以选择D。

17. 下列对于数据库索引的说法一定是错误的()

A. 索引可以提升查询,分组和排序的性能

B. 索引不会影响表的更新、插入和删除操作的效率

C. 全表扫描不一定比使用索引的执行效率低

D. 对于只有很少数据值的列,不应该创建索引

答案:B

解析:

A:创建索引:根据一列或多列来创建,查询条件依赖的列,分组列,排序列都可以使用这些列上的索引,所以可以提高性能。

B:数据量越大,数据更新的操作(插入,修改,删除)对索引的效率影响越大。

C:数据量很少的时候,全表扫描(一行一行的遍历)可能比根据索引来检索数据更快。

D:比如性别这个字段,只有男和女,此时创建索引就没有必要(索引后续的维护效率会比较低)。

所以选择B。

18. 在oracle中,下面哪个SQL命令用来向表中添加列()

A. MODIFY TABLE TableName ADD COLUMN ColumnName

B. MODIFY TABLE TableName ADD ColumnName

C. ALTER TABLE TableName ADD COLUMN ColumnName

D. ALTER TABLE TableName ADD ColumnName Type

答案:D

解析:

添加字段—>修改表结构—>alter table表名,再跟具体修改的语句:

添加表字段:

alter table table_name add 字段名称 字段类型

删除表字段:

alter table table_name drop 字段名称

修改表字段:

alter table table_name change 旧字段名称 新字段名称 字段类型

alter table table_name modify 字段名称 字段类型

所以选择D。

19. 如下SQL语句中,____可能返回null值。

(1) select count(*) from t1;

(2) select max(col1) from t1;

(3) select concat('max=',max(col1)) from t1;3.25 1

A. (1)可能,(2)和(3)不可能

B. (2)可能,(1)和(3)不可能

C. (3)可能,(1)和(2)不可能

D. (1)不可能,(2)和(3)可能

E. 都不可能

F. 都可能

答案:D

解析:

(1). count(*)一定可以返回数值,如果t1中没有数据,返回0。

(2). 两种情况返回null:

第一种:t1中没有数据;

第二种:coll字段,全部都是null。

(3). concat()函数:字符串拼接函数,在数据库中,字符串不能使用+拼接。

根据(2)可知,max(coll)可能为null,在concat()函数中,如果拼接的其中一个字符串是null,结果就是null。

所以(1)不可能,(2),(3)有可能,选择D。

20. 在Sql server中,以下哪一句从表TABLE_NAME中提取前10条记录?

A. select * from TABLE_NAME where rowcount=10

B. select TOP 10 * from TABLE_NAME

C. select TOP of 10 * from TABLE_NAME

D. select * from TABLE_NAME where rowcount<=10

答案:B

解析:

top:是sql server关键字,用于求前n条数据(如果要查从m到n条,要写子查询)。

语法:select top n 查询字段 from ...

所以选择B。

21. 电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法 执行速度最慢的是___

A. select count(*) from t_phonebook where phoneno >= ‘321’ and phoneno < ‘321A’

B. select count(*) from t_phonebook where phoneno like ‘321%’

C. select count(*) from t_phonebook where substr(phoneno,1,3) = ‘321’

D. 都一样快

答案:C

解析:

A:phoneno是数字组成(使用数值数据类型),和字符串可以比较,但是会进行类型转换(有点耗时)。

B:模糊匹配:可以使用索引。

C:使用函数,不会再使用索引:全表扫描(全部数据遍历);函数本身的执行也是需要耗时。

所以综上所述,应该是C选项综合耗时最长。 

如有建议或想法,欢迎一起讨论学习~

如果觉得有帮助的话就点个赞8~

你可能感兴趣的:(刷题记录,数据库,mysql)