杰普软件数据库测试题及答案.docx
- 文档编号:3395620
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:9
- 大小:20.50KB
杰普软件数据库测试题及答案.docx
《杰普软件数据库测试题及答案.docx》由会员分享,可在线阅读,更多相关《杰普软件数据库测试题及答案.docx(9页珍藏版)》请在冰豆网上搜索。
杰普软件数据库测试题及答案
一.选择题(1分 ,共20分)
1.为了考虑数据的安全性,要求每个教师只能存取自己讲授的课程的学生成绩,应该创建__A______
a).视图 b).索引c).游标d).表
2.关于类型定义Number(9,2)说法正确的有____B____
a) 整数部分9位,小数部分2位,共11位
b) 整数部分7位,小数部分2位,共9位
c) 整数部分6位,小数点一位,小数部分2位,共9位
d) 以上说法均不正确
3.获取当前系统时间的查询语句是________C_____
a)Sysdate
b)Select sysdate
c)Select sysdate from dual;
d)以上都可以
4.在数据库中可以创建和删除表、视图、索引,可以修改表。
这是因为数据库管理系统提供了___A_______
a)数据定义功能 b)数据操纵功能
c)数据维护功能 d)数据控制功能
5.下列属于DDL语言的是:
(C)
A)insertB)select
C)createD)commit
6.数据库的并发操作可能带来的问题包括_____B____________
a).非法用户的使用 b)丢失更新
c).数据独立性会提高 d).增加数据冗余度
7.使用sql查询时,使用where子句指出的是(B)
a)查询目标b) 查询条件 c)查询视图 d)查询结果
8.在Oracle中,有一个教师表teacher的结构如下:
ID NUMBER(5)
NAME VARCHAR2(25)
EMAIL VARCHAR2(50)
下面哪个语句显示没有Email地址的教师姓名(C)
a).SELECT name FROM teacher WHERE email = NULL;
b).SELECT name FROM teacher WHERE email <> NULL;
c).SELECT name FROM teacher WHERE email IS NULL;
d).SELECT name FROM teacher WHERE email IS NOT NULL;
9.9.典型的jdbc程序按________顺序编写(DBECFA)
A.释放资源
B.获取与数据库的物理连接
C.执行Sql语句
D.注册jdbcdriver
E.创建不同类型的statement
F.如果有结果集,处理结果集
10.在Oracle中,下面哪条语句当COMM字段为空时显示0,不为空时显示COMM的值_____A______
a)SELECT ename, NVL(comm, 0) FROM emp;
b)SELECT ename, NULL(comm, 0) FROM emp;
c)SELECT ename, NULLIF(comm, 0) FROM emp;
d)SELECT ename, DECODE(comm, NULL, 0) FROM emp;
11.在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是____C_______
a).select seq.ROWNUM from dual;
b).select seq.ROWID from dual;
c).select seq.CURRVAL from dual;
d).select seq.NEXTVAL from dual;
12.有表一的查询结果如下,该表为学生成绩表:
select id,grade from student_grade
ID GRADE
-------- -----------
1 50
2 40
3 70
4 80
5 30
6 90
表二为补考成绩表
select id,grade from student_makeup
ID GRADE
-------- -----------
1 60
2 80
5 60
现在通过如下语句把补考成绩更新到成绩表中,并提交:
update student_grade s set s.grade =
(select t.grade from student_makeup t
where s.id=t.id);
commit;
请问之后查询:
select GRADE from student_grade where id = 3;结果为_________C_____
A.0
B.70
C.Null
D.以上都不对
13.在Oracle中,可用于提取日期时间特定字符串(如年、月、日、时、分、秒)的函数有______B_______
a).DATEPART b).TO_CHAR c).TRUNC d).TIMPSTAMP
14.MyBatis指定配置文件的根元素使用的是(B )。
a).
15.SQL语言按照用途可以分为三类,不包括下面选项中的(C)。
(A)DML(B)DCL(C)DQL(D)DDL
在sql语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_16_B),使用关键字(_17_A)可以把行屏蔽,如果在SELECT语句中使用组函数时,可以在后面使用(_18_A)。
(16)A、SELECT,INTOB、SELECT,FROMC、SELECT,GROUPD、SELECT
(17)A、DISTINCTB、UNIONC、ALLD、TOP
(18)A、GROUPBYB、COMPUTEBYC、HAVINGD、COMPUTE
19.下列关于PreparedStatement对象的说法错误的是__C_________
a)PreparedStatement对象继承了Statement对象
b)PreparedStatement可以有效的防止sql注入
c)PreparedStatement不能用于批量更新操作
d)PreparedStatement可以存储预编译的Sql,从而提升执行效率
20. 下面select语句的执行顺序正确的是___D____
a) select > where > group by > order by
b) select > group by > having > where > order by
c) where > group by > having > order by > select
d) where > group by > having > select > order by
二.填空题(1题2分,其余1分)
1.使用SELECT语句显示当前系统时间,显示格式为如:
2009-03-2520:
13:
43
selectto_char(sysdate,’yyyy-mm-ddhh24:
mi:
ss’)fromdual;
2.数据库事务的特性___原子性______、___一致性________、_____隔离性_______、____持久性______
3.执行脚本estore.sql文件的两种方式_____@________和___start______。
4.请写出两种清空表order中数据的方法____delete_________和_____truncate_______。
哪一种方式是彻底删除数据____truncate________
5.JDBC编程中负责事务管理的类是____Connection______;
6.设置name列显示长度为20个字符__colnameformata20________,设置salary列显示格式为$23,200.00
_colsalaryformat$99,999.00______。
7.oracle通配符:
“ _ ” 代表:
_通配一个字符______; “ % ” 代表_通配0到多个字符_______,通过____escape______关键字将字符转义。
以练习的s_emp表,写出查询last_name第二个字符为"g"的用户信息语句
selectlast_namefroms_empwherelast_namelike'_g%'
8.oracle数据库字符函数的substr(‘hello world’,3,4)操作的结果是:
___llo____
9.在mybatis的配置文件中,我们使用__typeAliases_____标签给类取别名
三.简答题(每题5分,共25分):
1.请分别简述xml中原生的解析方式有哪两种,并且各自特点是什么。
DOM和SAX的不同:
1.DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。
从而消耗很大的内存空间。
而SAX是基于事件的。
当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间。
2.DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据。
这也是SAX的一个缺点。
3.SAX的另一个缺点:
DOM我们可以指定要访问的元素进行随机访问,而SAX则不行。
SAX是从文档开始执行遍历的。
并且只能遍历一次。
也就是说我们不能随机的访问XML文件,只能从头到尾的将XML文件遍历一次(当然也可以中间截断遍历)。
2.MyBatis实现一对一有几种方式?
具体怎么操作的?
(1)使用嵌套结果ResultMap实现一对一关系映射,我们可以使用一个嵌套结果ResultMap方式来获取主表及其关联表信息,使用
(2)通使用嵌套select查询来获取主表及其关联表信息,此时
3.以练习的S_emp表为基表查看薪资高于Chang经理薪资的员工信息
select*froms_empwheresalary>(
selectsalary
froms_emp
whereid=(
selectmanager_id
froms_emp
wherelast_name='Chang'
)
);
4.查询平均工资大于1200的部门,并显示这些部门的部门编号,名字,和平均工资
selectsd.id,sd.name,avg(salary)
froms_empse,s_deptsd
wherese.dept_id=sd.id
groupbysd.id,sd.name
havingavg(salary)>1200;
selecta.dept_id,d.id,a.sal,d.name
from(selectavg(salary)sal,dept_id
froms_emp
groupbydept_id
havingavg(salary)>1200)a,s_deptd
wherea.dept_id=d.id
5.请简述Statement对象和PreparedStatement对象的关系和区别。
1、关系
PreparedStatement继承Statement,他们属于父与子的关系。
使用上来说Statement使用的地方都可以换成PreparedStatement。
2、安全性
Statement的直接执行SQL语句,无法防止SQL注入问题。
PreparedStatement可以使用占位符,可以防止SQL注入问题。
3、性能
PreparedStatement:
1)addBatch()将一组参数添加到PreparedStatement对象内部。
2)executeBatch()将一批参数提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
Statement:
1)addBatch(Stringsql)方法会在批处理缓存中加入一条sql语句。
2)executeBatch()执行批处理缓存中的所有sql语句。
从第一次执行的角度:
PreparedStatement由于占位符的使用,第一次执行需要很多额外的工作,例如占位符转换等等,这些都需要消耗一定的事件和资源。
而Statement直接执行相对来说效率要高、消耗要少一些。
从多次执行的角度:
PreparedStatement由于使用占位符进行预编译时,保存的执行代码被缓存,下次调用的时候就可以不再被编译而可以直接执行。
而Statement即使执行一样的操作,由于操作数据不同,所以执行语句也需要再次编译。
四.编程题
1.数据库中有Student表,以下为建表语句。
请将学生A的信息保存入数据库中,要求使用JDBC技术,采用两种方式(Statement,PreparedStatement)将此记录插入表中。
学生A信息为:
学号:
001;姓名:
张三;生日:
2012年1月12号。
create table Student_jdbc(
id number(3) primary key,
name varchar2(20),
birthday date
);
Class.forName("oracle.jdbc.driver.OracleDriver");
Connectionconnection=DriverManager.getConnection("jdbc:
oracle:
thin:
@localhost:
1521:
xe","briup16","briup16");
/*Stringsql="insertintoStudent_jdbcvalues(001,'张三','12-1月-2012')";
Statementstatement=connection.createStatement();
statement.execute(sql);
if(statement!
=null){
statement.close();
}*/
/*Stringsql="insertintoStudent_jdbcvalues(?
?
?
)";
PreparedStatementpreparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,001);
preparedStatement.setString(2,"张三");
preparedStatement.setDate(3,newDate(newSimpleDateFormat("yyyy-mm-dd").parse("2012-01-12").getTime()));
preparedStatement.execute();
if(preparedStatement!
=null){
preparedStatement.close();
}*/
if(connection!
=null){
connection.close();
}
2.现有用户表,以下为建表语句
createtablet_user(
idnumberprimarykey,
namevarchar(20)notnull,
agenumber
(2),
birthdaydate)
用户类(com.briup.mybatis.User)的属性如下
privateintuserid;
privateintage;
privateStringname;
privateDatebirthday;
映射文件内容为:
(1)向用户表中插入用户(写出:
insert标签,mapper接口方法)
insertintot_user(id,name,age,birthday)values(#{userid},#{name},#{age},#{birthday})
publicvoidinsertUser(Useruser);
(2)查询id为001的用户的编号,姓名,年龄和生日,并将结果封装成User对象(xml中的select标签,mapper接口方法,使用命名空间、接口两种方式的测试代码)
Xml
selectidasuserid,name,age,birthday
fromt_user
whereid=#{id}
Mapper
publicUserfindUserById(intid);
测试代码一
InputStreaminputStream=Resources.getResourceAsStream("com/briup/mybatis/mybatis-config.xml");
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(inputStream);
SqlSessionsession=factory.openSession();
ObjectselectOne=session.selectOne("com.briup.mybatis.mapper.UserMapper.findUserById",001);
测试代码二
InputStreaminputStream=Resources.getResourceAsStream("com/briup/mybatis/mybatis-config.xml");
SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(inputStream);
SqlSessionsession=factory.openSession();
UserMappermapper=session.getMapper(UserMapper.class);
UserfindUserById=mapper.findUserById(001);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 数据库 测试 答案