关系型数据库基础
嗯 上周五考试题 测试题(笔试) 关系型数据库基础 成都朗沃信息技术有限公司 不定项选择题( 30 题,每题 2.5 分,满分 75 分) 1) 关系型数据库的核心单元是?(单选) b a) 对象 b) 表 c) 行 d) 列 2) 对于关系型数据库来说,表之间存在下面那些关系()
嗯 上周五考试题
测试题(笔试)
关系型数据库基础
成都朗沃信息技术有限公司
不定项选择题(30题,每题2.5分,满分75分)
1) |
关系型数据库的核心单元是?(单选)b |
|
|
a) |
对象 |
|
b) |
表 |
|
c) |
行 |
|
d) |
列 |
2) |
对于关系型数据库来说,表之间存在下面那些关系()。(多选)abc |
|
|
a) |
一对一关系 |
|
b) |
一对多关系 |
|
c) |
多对多关系【需中间表描述】 |
|
d) |
继承关系 |
3) |
在SQL中,下面对于数据定义语言(DDL)描述正确的是(单选)d |
|
|
a) |
DDL是对数据的查询操作 |
|
b) |
完成数据的增、删、改、查操作 |
|
c) |
控制对数据库的访问 |
|
d) |
定义数据库的结构 |
4) |
下面哪些属于mysql中存在的数据类型()。(多选)abde |
|
|
a) |
Float【记到起】 |
|
b) |
datetime |
|
c) |
String |
|
d) |
char |
|
e) |
int |
5) |
根据数据完整性实施的方法,可以将其分为( )。(多选)acdf |
|
|
a) |
实体完整性 |
|
b) |
表完整性 |
|
c) |
域完整性 |
|
d) |
引用完整性【主表、从表】 |
|
e) |
记录完整性 |
|
f) |
用户自定义完整性 |
6) |
Collection有两个子接口,分别是()。(多选)ad |
|
|
a) |
List |
|
b) |
ArrayList |
|
c) |
Map |
|
d) |
Set |
7) |
如果一个字段的数据必须来源另一个表的主键,那么要在这个字段上建立( )。(单选)b |
|
|
a) |
PK(主键) |
|
b) |
FK(外键) |
|
c) |
UK(唯一键) |
|
d) |
复合主键 |
8) |
当子查询返回多行时,可以采用的解决办法是( )。(单选)c |
|
|
a) |
使用聚合函数 |
|
b) |
Where条件判断 |
|
c) |
使用IN运算符 |
|
d) |
使用Group by进行分组 |
【引申,若用,则后面只能返回单行】
9) |
下面题基于学生-课程数据库中的三个基本表: 学生信息表:s(sno, sname, sex, age, dept) 主键为sno 课程信息表:c(cno, cname, teacher) 主键为cno 学生选课信息表:sc(sno, cno, grade) 主键为(sno, cno) “从学生选课信息表中找出无成绩的学生信息”的SQL语句是( ) (单选) c |
|
|
a) |
SELECT * FROM sc WHERE grade=NULL |
|
b) |
SELECT * FROM sc WHERE grade IS ‘ ’ |
|
c) |
SELECT * FROM sc WHERE grade IS NULL |
|
d) |
SELECT * FROM sc WHERE grade =‘ ’ |
10) |
下面SQL是来源于考试成绩表t_exam:学号stuId、科目编号subId、成绩score,考试日期:ex_date。有以下sql,它表示的意思是:(单选)b |
|
|
|
Select stu_id,subId,count(*) as x From t_exam Where ex_date=’2008-08-08’ Group stu_id,subId Having count(*)>1 Order by x desc |
|
a) |
找出’2008-08-08’这天某科考试2次及以上的学生记录 |
|
b) |
找出’2008-08-08’这天,某科考试2次及以上的学生记录,考试次数多的放在前面 |
|
c) |
找出’2008-08-08’这天,某科考试2次及以上的学生记录,考试次数少的放在前面 |
|
d) |
根据学号和学科分组,找出每个人考试科数,最后考试次数多的放在前面 |
11) |
要打印出list储存的内容,以下语句正确的是()(多选)ab |
|
|
|
ArrayList list=new ArrayList(); list.add("a"); list.add("b"); Iterator it=list.iterator();【Iterator:迭代器】 |
|
|
|
|
a) |
while(it.hasNext()) System.out.println(it.next()); |
|
b) |
for(int i=0;i System.out.println(list.get(i)); |
|
c) |
while(list.hasNext()) System.out.println(list.next()); |
|
d) |
for(int i=0;i System.out.println(it(i)); |
12) |
EMP表如下所示,下面哪些SQL语句的返回值为3:(多选)bd |
|
|
|
EMP 雇员号 雇员名 部门号 工资 001 张山 02 2000 010 王宏达 01 1200 056 马林生 02 1000 101 赵敏 04 (null)
|
|
a) |
select count(*) from emp |
|
b) |
select count(distinct 部门号) from emp |
|
c) |
select count(*) from emp group by 雇员号 |
|
d) |
select count(工资) from emp |
13) |
关于HashMap和Hashtable描述正确的是( )(多选) bcf |
|
|
a) |
HashMap和Hashtable都是Map的子类 |
|
b) |
HashMap和Hashtable都是Map的实现类 |
|
c) |
HashMap允许空键和空值,Hashtable不允许 |
|
d) |
Hashtable允许空键和空值,HashMap不允许 |
|
e) |
HashMap线程安全,Hashtable线程不安全 |
|
f) |
HashMap线程不安全,Hashtable线程安全 |
14) |
下面关于SQL数据查询操作描述正确的有:( )(多选) abd |
|
|
a) |
投影操作是选择对表中的哪些列进行查询操作 |
|
b) |
使用DISTINCT关键字可以过滤查询中其它重复的记录 |
|
c) |
在模糊查询中,通配符“%”表示匹配单个字符,而“_”表示匹配零个或多个字符 |
|
d) |
在MySQL中使用LIMIT关键字限制从数据库中返回记录的行数 |
15) |
下面关于域完整性【列】的方法,不正确的是(单选)a |
|
|
|
|
|
a) |
主键约束 |
|
b) |
检查约束 |
|
c) |
非空约束 |
|
d) |
默认值 |
16) |
若要求查找S表中,姓名的第一个字为'王'的学生学号和姓名。下面列出的SQL语句中,哪个是正确的()(单选)b |
|
|
a) |
SELECT Sno,SNAME FROM S WHERE SNAME=′王%′ |
|
b) |
SELECT Sno,SNAME FROM S WHERE SNAME LIKE′王%′ |
|
c) |
SELECT Sno,SNAME FROM S WHERE SNAME LIKE′王_′ |
|
d) |
全部 |
17) |
下列哪个关键字在Select语句中表示所有列( )(单选)a |
|
|
a) |
* |
|
b) |
all |
|
c) |
desc |
|
d) |
DISTINCT |
18) |
下面可以通过聚合函数的结果来过滤查询结果集的SQL子句是( )。 (单选) c |
|
|
|
|
|
a) |
WHERE子句 |
|
b) |
GROUP BY子句 |
|
c) |
HAVING 子句 |
|
d) |
ORDER BY子句 |
19) |
下面有关JDBC说法正确的是:()(多选)ab |
|
|
|
|
|
a) |
JDBC就是一套接口,由SUN公司提出,各厂商实现 |
|
b) |
使用JDBC连接不同数据库时调用的接口是相同的 |
|
c) |
使用JDBC连接不同数据库时连接的字符串是相同的 |
|
d) |
由于数据库厂商不一致,JDBC在连接不同的数据库时使用的接口不是一致的。 |
20) |
若要求“查询选修了3门以上课程的学生的学生号”,正确的SQL语句是( )(单选)b |
|
|
a) |
SELECT Sno FROM SC GROUP BY Sno WHERE COUNT(*)> 3 |
|
b) |
SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)> 3 |
|
c) |
SELECT Sno FROM SC ORDER BY Sno WHERE COUNT(*)> 3 |
|
d) |
SELECT Sno FROM SC ORDER BY Sno HAVING COUNT(*)> 3 |
21) |
有关索引的说法正确的是( )(多选) bc |
|
|
|
|
|
a) |
索引的目的是为增加数据操作的速度 |
|
b) |
索引被用于优化查询 |
|
c) |
索引建立得太多,会降低数据增加、删除、修改速度 |
|
d) |
索引建立越多查询速度越快。 |
22) |
SQL中,“AGE IN(20,22)”的语义是( )。(单选) d |
|
|
|
|
|
a) |
AGE=20 |
|
b) |
AGE 20 |
|
c) |
AGE =20 AND AGE =22 |
|
d) |
AGE =20 OR AGE =22 |
23) |
SQL语言中,删除EMP表中全部数据的命令正确的是( )。(多选)cd |
|
|
|
|
|
a) |
delete * from emp |
|
b) |
drop table emp【全删没了,表都没了,题意是保留数据结构】 |
|
c) |
truncate table emp |
|
d) |
delete from emp |
24) |
关于Statement和PreparedStatement说法正确的是()(多选)ad |
|
|
|
|
|
a) |
Statement是PreparedStatement的父接口 |
|
b) |
PreparedStatement是Statement的父接口 |
|
c) |
Statement执行效率高 |
|
d) |
PreparedStatement执行效率高 |
25) |
在SQL语言中,条件“BETWEEN 20 AND 30”表示年龄在20到30之间,且( )(单选)a |
|
|
|
|
|
a) |
包括20岁和30岁 |
|
b) |
不包括20岁和30岁 |
|
c) |
包括20岁,不包括30岁 |
|
d) |
不包括20岁,包括30岁 |
26) |
有关SQL注入,说法正确的有:( )(多选)bd |
|
|
|
|
|
a) |
SQL注入就是通过工具反复猜登录的用户名和密码,直到破解。 |
|
b) |
SQL注入指的是在sql加入特殊命令,从而达到破坏数据库的效果。 |
|
c) |
Statement可以防止SQL注入 |
|
d) |
PreparedStatement可以防止SQL注入 |
27) |
SQL语言集数据查询、数据操作、数据定义和数据控制功能于一体,语句INSERT、DELETE、UPDATE实现哪类功能( )(单选)b |
|
|
|
|
|
a) |
数据查询 |
|
b) |
数据操纵(DML) |
|
c) |
数据定义(DDL) |
|
d) |
数据控制(DCL) |
28) |
在JDBC中,要将数据库表记录转化为对象数据时,需要使用()(单选)d |
|
|
|
|
|
a) |
Connection |
|
b) |
DriverManager |
|
c) |
PreparedStatement |
|
d) |
ResultSet |
29) |
关于List、Set、Map特点说法正确的是( )(多选)acd |
|
|
|
|
|
a) |
List元素可以重复,Set元素不可重复 |
|
b) |
Set元素可以重复,List元素不可重复 |
|
c) |
Map一个元素放两个对象,而List和Set只放一个对象 |
|
d) |
Map元素键不可重复。 |
|
e) |
Map元素键可以重复。 |
30) |
主键约束包括( )(多选)ac |
|
|
|
|
|
a) |
非空 |
|
b) |
必须使用自动增长 |
|
c) |
值不能重复 |
|
d) |
只能用int类型 |
书写以下SQL语句(共5题,每题5分,满分25分)
有员工表:employee(e_id,e_name,e_date,e_sex,d_id)
有部门表dept(d_id,d_name)
1. 为员工表的d_id增加外键约束。
Alter table employee add contraint fk_em foreign key(d_id) references dept(d_id)
2. 增加一条如下记录:张三,2008-1-2参工,分配到01部门,工号使用自动编号。
insert into employee(e_name,e_date,d_id) values('张三','2008-01-02',1);
3. 将所有没有性别的人员性别更新为“男”。
Update employee set e_sex='男' where e_sex is null;
4. 请统计各部门的员工数。
Select count(*) from dept d left join employee e on e.d_id=d.d_id group by d.d_id;
5. 查询各部门员工人数超过3人及以上部门编号和名称。
Select d.d_id,d.d_name from employee e join dept d on e.d_id=d.d_id group by d.d_id having count(*)>3
上一篇: 非常实用的PHP代码片段推荐,
下一篇: 一次失败的PHP扩展开发之