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, 以下代码输出结果是()
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选项同理,两次更新如果条件一样肯定会相互影响。
例如:
C:与A选项同理。
D:另一个操作只有是查询时,不会冲突,但如果是插入,修改,删除,都存在冲突。
E:与A选项同理。
F:不冲突,结果一致。
所以选择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~