1、c).数据独立性会提高d).增加数据冗余度7.使用sql查询时,使用where子句指出的是(B )a)查询目标 b)查询条件c)查询视图 d)查询结果8.在Oracle中,有一个教师表teacher的结构如下:IDNUMBER(5)NAMEVARCHAR2(25)EMAILVARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名( C)a) SELECTnameFROMteacherWHEREemail=NULL;b) SELECTc) SELECTISd) SELECTNOT9.9.典型的jdbc程序按_顺序编写(DBECFA)A.释放资源 B.获取与数据库的物理连接 C.执行S
2、ql语句D.注册jdbcdriver E.创建不同类型的statement F.如果有结果集,处理结果集10.在Oracle中,下面哪条语句当COMM字段为空时显示0,不为空时显示COMM的值_A_a)SELECTename,NVL(comm,0)emp;b)SELECTNULL(comm,c)SELECTNULLIF(comm,d)SELECTDECODE(comm,NULL,11.在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是_C_a). selectseq.ROWNUMb). selectseq.ROWIDc). selectseq.CURRV
3、ALd). selectseq.NEXTVAL12.有表一的查询结果如下,该表为学生成绩表:selectid,gradestudent_gradeGRADE-150240370480530690表二为补考成绩表student_makeup60现在通过如下语句把补考成绩更新到成绩表中,并提交:updatessets.grade(selectt.gradetwheres.id=t.id);commit;请问之后查询:id3;结果为_C_A 0B 70C NullD 以上都不对13.在Oracle中,可用于提取日期时间特定字符串(如年、月、日、时、分、秒)的函数有_B_a).DATEPARTb).T
4、O_CHARc).TRUNCd). TIMPSTAMP14.MyBatis指定配置文件的根元素使用的是(B)。a)b)c)d)15. SQL语言按照用途可以分为三类,不包括下面选项中的(C)。 (A)DML (B)DCL (C)DQL (D)DDL 在sql语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_16_B),使用关键字(_17_A)可以把行屏蔽,如果在SELECT语句中使用组函数时,可以在后面使用(_18_A)。(16)A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、SELECT (17)A、DISTINCT B、UNION C、
5、ALL D、TOP (18) A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 19.下列关于PreparedStatement对象的说法错误的是_C_a)PreparedStatement对象继承了Statement对象b)PreparedStatement可以有效的防止sql注入c)PreparedStatement不能用于批量更新操作d)PreparedStatement可以存储预编译的Sql,从而提升执行效率20.下面select语句的执行顺序正确的是_D_groupbyorderhavingby二填空题(1题2分,其余1分)1.使用SELECT语句
6、显示当前系统时间,显示格式为如:2009-03-25 20:13:43select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;2. 数据库事务的特性_原子性_、_一致性_、_隔离性_、_持久性_3. 执行脚本estore.sql文件的两种方式_和_start_。4. 请写出两种清空表order中数据的方法_delete_和_truncate_。哪一种方式是彻底删除数据_truncate_5.JDBC编程中负责事务管理的类是_Connection_;6. 设置name列显示长度为20个字符_col name format a20_,设置sa
7、lary列显示格式为$23,200.00_col salary format $99,999.00_。7.oracle通配符:“_”代表:_通配一个字符_;%代表_通配0到多个字符_,通过_escape_关键字将字符转义。以练习的s_emp表,写出查询last_name第二个字符为g的用户信息语句select last_name from s_emp where last_name like _g%8.oracle数据库字符函数的substr(helloworld,3,4)操作的结果是:_llo _9.在mybatis的配置文件中,我们使用_typeAliases_标签给类取别名三简答题(每题
8、5分,共25分):1.请分别简述xml中原生的解析方式有哪两种,并且各自特点是什么。 DOM和SAX的不同: 1. DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。而SAX是基于事件的。当某个事件被触发时,才获取相应的XML的部分数据,从而不管XML文件有多大,都只占用了少量的内存空间。 2. DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据。这也是SAX的一个缺点。 3.SAX的另一个缺点:DOM我们可以指定要访问的元素进行随机访问,而SAX则不行。SAX是从文档开始执行遍历的。并且只能遍历
9、一次。也就是说我们不能随机的访问XML文件,只能从头到尾的将XML文件遍历一次(当然也可以中间截断遍历)。2.MyBatis实现一对一有几种方式?具体怎么操作的?(1)使用嵌套结果ResultMap实现一对一关系映射,我们可以使用一个嵌套结果ResultMap方式来获取主表及其关联表信息,使用引用另外的在同一个XML文件中定义的。(2)通使用嵌套select查询来获取主表及其关联表信息,此时( select salary from s_emp where id = ( select manager_id from s_emp where last_name=Chang );4.查询平均工资大于
10、1200的部门,并显示这些部门的部门编号,名字,和平均工资select sd.id,sd.name,avg(salary)from s_emp se,s_dept sdwhere se.dept_id = sd.idgroup by sd.id,sd.namehaving avg(salary)1200;select a.dept_id,d.id,a.sal ,d.namefrom (select avg(salary) sal,dept_id group by dept_id having avg(salary)1200) a,s_dept dwhere a.dept_id=d.id5.请简
11、述Statement对象和PreparedStatement对象的关系和区别。1、关系 PreparedStatement继承Statement,他们属于父与子的关系。使用上来说Statement使用的地方都可以换成PreparedStatement。2、安全性 Statement的直接执行SQL语句,无法防止SQL注入问题。PreparedStatement可以使用占位符,可以防止SQL注入问题。3、性能PreparedStatement:1) addBatch()将一组参数添加到PreparedStatement对象内部。2) executeBatch()将一批参数提交给数据库来执行,如果
12、全部命令执行成功,则返回更新计数组成的数组。Statement:1) addBatch(String sql)方法会在批处理缓存中加入一条sql语句。2) executeBatch()执行批处理缓存中的所有sql语句。从第一次执行的角度:PreparedStatement由于占位符的使用,第一次执行需要很多额外的工作,例如占位符转换等等,这些都需要消耗一定的事件和资源。而Statement直接执行相对来说效率要高、消耗要少一些。从多次执行的角度:PreparedStatement由于使用占位符进行预编译时,保存的执行代码被缓存,下次调用的时候就可以不再被编译而可以直接执行。而Statement
13、即使执行一样的操作,由于操作数据不同,所以执行语句也需要再次编译。四编程题1.数据库中有Student表,以下为建表语句。请将学生A的信息保存入数据库中,要求使用JDBC技术,采用两种方式(Statement,PreparedStatement)将此记录插入表中。学生A信息为:学号:001;姓名:张三;生日:2012年1月12号。createtableStudent_jdbc(number(3)primarykey,varchar2(20),birthdaydateClass.forName(oracle.jdbc.driver.OracleDriver Connection connecti
14、on = DriverManager.getConnection(jdbc:oracle:thin:localhost:1521:xe,briup16 /*String sql = insert into Student_jdbc values(001,张三,12-1月-2012); Statement statement = connection.createStatement(); statement.execute(sql); if(statement!=null) statement.close(); */insert into Student_jdbc values(?,? Prep
15、aredStatement preparedStatement = connection.prepareStatement(sql); preparedStatement.setInt(1, 001); preparedStatement.setString(2, 张三 preparedStatement.setDate(3, new Date(new SimpleDateFormat(yyyy-mm-dd).parse(2012-01-12).getTime(); preparedStatement.execute(); if(preparedStatement! preparedState
16、ment.close(); if(connection! connection.close(); 2.现有用户表,以下为建表语句create table t_user(id number primary key,name varchar(20) not null,age number(2),birthday date)用户类(com.briup.mybatis.User)的属性如下private int userid;private int age;private String name;private Date birthday;映射文件内容为:mapper namespace=com.br
17、iup.mybatis.mapper.UserMapper/mapper(1)向用户表中插入用户(写出:insert标签,mapper接口方法)insert id=insertUser parameterType=Userinsert into t_user(id,name,age,birthday) values(#userid,#name,#age,#birthday)/insertpublic void insertUser(User user);(2)查询id为001的用户的编号,姓名,年龄和生日,并将结果封装成User对象(xml中的select标签,mapper接口方法, 使用命名
18、空间、接口两种方式的测试代码)Xmlselect id=findUserByIdint resultType= select id as userid,name,age,birthday from t_userwhere id=#id/selectMapperpublic User findUserById(int id);测试代码一InputStream inputStream=Resources.getResourceAsStream(com/briup/mybatis/mybatis-config.xmlSqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = factory.openSession();Object selectOne = session.selectOne(com.briup.mybatis.mapper.UserMapper.findUserById,001);测试代码二UserMapper mapper = session.getMapper(UserMapper.class);User findUserById = mapper.findUserById(001);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1