1.数据库中,数据类型char与varchar有什么区别?性能方面各有什么优势?

char表示的是固定长度,所占存储空间为你定义时的大小,数据量较大的时候以char字段为查询条件时查询的快一些。
varchar表示的是实际长度的数据类型,所占存储空间为实际大小,前提是不超过你定义时的长度,如果存储的字段不是定长,用varchar好一些。

2.你怎么知道查询SQL的性能高还是低?

1)简单的通过查看执行SQL的运行时间
2)可以通过查看数据库提供的语句执行计划来分析相应的数据信息,例如查看执行计划中对应的cost(即成本耗费)值,反应了运行这段SQL的总体估计成本,通过cost低的执行计划要好一些。

3.在开发过程中遇到过数据锁吗?怎样解锁?

1)如果Oracle中有事务未提交,又打开一个窗口去提交一个新的事务则可能会产生数据库锁。
2)解锁的方式:
a)结束当前的session(会话)自动解锁。例如,退出当前数据库连接的工具或应用程序。
b)利用dba权限强行关闭掉执行Lock操作的session。

4.怎样处理并发数据?

就数据库来说是通过加锁的概念来确保并发数据操作下事务的完整性和数据库的一致性。
数据库主要有共享锁和排它锁,当你在修改数据的时候,别人也可以查看,但是他不能修改数据并提交,只能优先你的操作,等你向数据库提交了数据之后他才能执行增删改的操作,这就是排它锁。共享锁就是你和另外一个用户可以同时共享数据(查看),但是你和他不能修改。

5.delete from table 与truncate table 的区别?drop table?

1)Truncate是数据定义语言(DDL)做的修改是不能回滚的,就是不可恢复的操作,用了这个命令就收回了表空间。Delete是数据操作语言(DML)删除是把数据写入系统回滚段(rollback segement)中以便恢复时使用。
2)两者都是删除表中的数据而不会影响到表的结构和定义。
3)使用drop的话就会删除表的结构

6.union和union all有什么不同?

union在进行表连接后会筛选掉重复的记录,所以在表连接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
而union all只是简单的将两个结果集合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,union all要比union快的多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么久使用union all。

7.JDBC访问数据库的步骤?(重点)

1)加载JDBC驱动
2)与数据库建立链接
3)发送SQL语句,并得到返回结果
4)处理返回结果
5)关闭资源

8.大数据量下的分页解决办法。

最好的办法是利用sql语句进行分页。这样每次查询出的结果几种就只包含某页的数据内容。在sql语句无法实现分页的情况下,可以考虑对大的结果集通过游标定位方式来获取某页的数据。不同数据库下的分页方案各不相同,下面是主流的三种数据库的分页sql:
sql server:

String sql = "select top "+pageSize+" * from students where id not in"+"(select top "+pageSize*(pageNumber-1)+" id from students order by id)"+"order by id";

mysql:

String sql = "select * from students order by id limit "+pageSize*(pageNumber-1)+","+pageSize;

oracle

String sql = "select * from "+(select *,rownum rid from(select * from students order by postime desc)where rid<="+pageSize*pageNumber+")as t"+"where t>"+pageSize*(pageNumber-1);

9.简述建立索引的作用和索引的分类?

索引的作用:通过使用索引,大大提高数据库的检索速度,改善数据库性能
索引的分类
1)唯一索引:唯一索引不允许两行具有相同的索引值
2)主键索引:在数据库关系图中为表定义一个主键自动创建主键索引,主键索引是唯一索引的特殊类型。
3)聚集索引:在聚集索引中表中各行的事物顺序与键值的逻辑(索引)顺序相同且唯一
4)非聚集索引:非聚集索引奖励在索引页上,在查询数据是可以从索引中找到记录存放的位置。
5)复合索引:在创建索引时,并不是只能在其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为符合索引。
6)全文索引:全文索引是一种特殊类型的基于标记的功能性索引,由SQL Server中全文引擎服务创建和维护。

10.什么是存储过程,有什么优缺点?(重点)

**存储过程(Stored Procedure)**是一组为了完成特定功能的SQL语句集,是由流程控制和SQL语句书写的命名语句块,经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可,可以通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来调用
使用存储过程有以下的优点:
a)具有良好的安全性:可保证数据的安全性和完整性。通过存储过程可以使没有权限直接访问相应数据库对象的用户受控制的间接地执行数据库相关操作,从而保证数据的安全。
b)执行数据快,效率高:在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。
c)减少网络流量:可以降低网络的通信量。
d)模块化程序设计:存储过程可以封装业务逻辑,并存入数据服务器中,当业务逻辑发生变化是,无需修改调用存储过程的应用程序,只需要修改存储过程即可。
使用存储过程的缺点是:
a)相对而言,调式比较麻烦
b)移植问题,数据库端代码当然是与具体数据库相关的。
c)代码可读性差