嗯 上周五考试题
测试题(笔试)
关系型数据库基础
成都朗沃信息技术有限公司
不定项选择题(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<list.size();i++) System.out.println(list.get(i)); |
| c) | while(list.hasNext()) System.out.println(list.next()); |
| d) | for(int i=0;i<list.size();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<=22 AND AGE >=20 |
| b) | AGE <22 OR 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