SQL笔试面试题总结
1)数据库表建立复合索引tab_index(“name”, “age”),下面那些语句能用上索引?(C)
A)select *from table where age=18 and name=’test’;
B)select *from table where name=’test’ and age=18;
C)select *from table where name like”%test%” and age=18;
D)select *from table where name like”%test” and age=18;
2)如下SQL语句中,__可能返回null值。
(1) select count(*) from t1;
(2) select max(col1) from t1;
(3) select concat(‘max=’,max(col1)) from t1;
A:(1)可能,(2)和(3)不可能
B:(2)可能,(1)和(3)不可能
C:(3)可能,(1)和(2)不可能
D:(1)不可能,(2)和(3)可能
答案解析:(1)返回的是表的行数,如果没有记录,应该返回0,不会出现NULL,(2)和(3)正常情况下不会出现NULL,但是如果表里面没有记录,则会出现NULL。
3)小明设计了如下的学籍管理系统:已知关系:学籍(学号,学生姓名) PK=学号;成绩(科目号,成绩,学号) PK=科目代码,FK=学号;已有表记录如下,请给出能够插入的成绩记录:(BD)
A)(1,99,2)
B)(5,68,1)
C)(3,70,3)
D)(7,45,null)
4)关系模式R(a,b,c,d)中关系代数表达式σ3<‘4’(R)等价于SQL语句(C)
A)select * from R where d<3
B)select * from R where
C)select c from R where c<4
D)select c,d from R having d<2
5)下列SQL语句中,能够实现“收回用户LILEI对职员表(STAFF)中工资(SALARY)的修改权”这一功能的是(A)
A)REVOKE UPDATE(SALARY) ON STAFF FROM LILEI
B)REVOKE UPDATE(SALARY) ON STAFF FROM PUBLIC
C)REVOKE UPDATE(SALARY) ON TABLE FROM LILEI
D)REVOKE UPDATE(SALARY) ON TABLE FROM PUBLIC
6)数据库设计里,视图(View)可以使得我们为一个或多个数据表定义一个特殊的表现形式,视图在行为上与数据表没啥特别区别,可以使用基本的select,insert,update等命令修改数据,但对于update操作,也有一些限制,下面那些是受限的原因(AB)
A)初始View定义的Select语句里如果包含了GROUP BY,DISTINCT,LIMIT或HAVING等命令时
B)如果视图里数据来自多张字表时
C)如果视图里缺少主键索引,唯一索引,外键约束条件锁涉及的全部数据列时
D)当Creat View之后又使用Replace View对已存在视图做了更名操作后
7)SQL中关于视图操作,错误的说法是(C)
A)更新视图包括插入、删除、修改三类操作
B)安全起见,更新视图时需要在定义视图时增加with check option 子句
C)视图是实际数据库实体
D)视图多用于查询
8)给定关系R、S如下图所示,则=(D)
A)
B)
C)
D)
8)已知关系R(F,G,H,I,J)及其上的函数相关性集合,F=(F->G,J->F,HJ->I),该关系的候选关键字是:(B)
A)FJ
B)HJ
C)HI
D)IJ
9)mysql数据库有选课表learn(student_id int,course_id int),字段分别表示学号和课程编号,现在想获取每个学生所选课程的个数信息,请问如下的sql语句正确的是(B)
A)select student_id,sum(course_id)from learn
B)select student_id,count(course_id)from learn group by student_id
C)select student_id,count(course_id)from learn
D)select student_id,sum(course_id)from learn group by student_id
10)数据库设计里,视图(View)可以使得我们为一个或多个数据表定义一个特殊的表现形式,视图在行为上与数据表没啥特别区别,可以使用基本的select,insert,update等命令修改数据,但对于update操作,也有一些限制,下面那些是受限的原因(AB)
A)初始View定义的Select语句里如果包含了GROUP BY,DISTINCT,LIMIT或HAVING等命令时
B)如果视图里数据来自多张字表时
C)如果视图里缺少主键索引,唯一索引,外键约束条件锁涉及的全部数据列时
D)当Creat View之后又使用Replace View对已存在视图做了更名操作后
11)表toutiao_tb如下,查询title中包含cv且type是1的记录(B)
title data auther type
abc 2016.2.23 bob 1
bcv 2016.3.3 http 1
cvt 2016.3.3 http 1
bcvvcm 2016.3.5 js 2
nmhh 2016.2.3 html 2
hhj 2016.3.3 java 3
rrr 2016.3.2 cc 1
A)select * from where title = “cv” and type=”1”
B)select * from where title = “%cv%” and type=”1”
C)select * from where title = “*cv” and type=”1”
D)select * from where title =”cv” and type=”1”
12)假设MySQL数据库表:
create table T{
k int unsigned not null auto_increment,
a date,
b varchar(24),
c int,d varchar(24),
primary key(k),unique key a_index (a DESC,b DESC),
key k1(b),key k2(c),key k3(d));
如下哪些sql语句查询能较好的利用索引?(AD)
A)select b from WHERE b like “aaa%”;
B)select a,b from T WHERE a=”2015-10-25” ORDER BY b ASC,c ASC;
C)select a,b,c from T WHERE a=”2015-10-25” ORDER BY b ASC;
D)select a,b,c from T WHERE a=”2015-10-25” ORDER BY a,b;
13)对于满足SQL92标准的SQL语句:select foo,count(foo)from pokes where foo>10group by foo having count (*)>5 order by foo 其执行顺序应该是(A)
A)FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY
B)FROM->GROUP BY->WHERE->HAVING->SELECT->ORDER BY
C)FROM->WHERE->GROUP BY->HAVING->ORDER BY->SELECT
D)FROM->WHERE->ORDER BY->GROUP BY->HAVING->SELECT
14)mysql数据库中一张user表中,其中包含字段A,B,C,字段类型如下:A:int,B:int,C:int根据字段A,B,C按照ABC顺序建立复合索引idx_A_B_C,以下查询语句中使用到索引idx_A_B_C的语句有哪些(ABD)
A)select *from user where A=1 and B=1
B)select *from user where 1=1 and A=1 and B=1
C)select *from user where B=1 and C=1
D)select *from user where A=1 and C=1