【面试准备】数据库部分

数据库部分

致自己的面试准备题,加入自己以及整合其他人分享的!

1.触发器的作用?

触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

2.什么是存储过程?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。

3.存储过程如何调用?

1、可以用一个命令对象来调用存储过程。
2、可以供外部程序调用,比如:java程序。

4.存储过程的优缺点

优点:
1、存储过程是预编译过的,执行效率高。
2、存储过程的代码直接存放于数据库中,通过存储过程名直接调用,减少网络通讯。
3、安全性高,执行存储过程需要有一定权限的用户。
4、存储过程可以重复使用,可减少数据库开发人员的工作量。

缺点:
移植性差

5.什么是索引?

索引是对数据库表中一个或多个列的值进行排序的结构。

6.索引的优缺点?

优点:
1、大大加快数据的检索速度;
2、创建唯一性索引,保证数据库表中每一行数据的唯一性;
3、加速表和表之间的连接;
4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

缺点:
1、减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
2、索引需要占用数据表以外的物理存储空间
3、创建索引和维护索引要花费一定的时间
4、当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。

7.什么样的字段适合建索引

唯一、不为空、经常被查询的字段

8.索引类型有哪些?

逻辑上:
Single column 单行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based 函数索引
Domain 域索引

物理上:
Partitioned 分区索引
NonPartitioned 非分区索引

B-tree :
Normal 正常型B树
Rever Key 反转型B树
Bitmap 位图索引

9.游标是什么?

游标:是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

10.什么叫视图?

视图:是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表。它使得我们获取数据更容易,相比多表查询

11.视图的优缺点

优点:
1、对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。 2、用户通过简单的查询可以从复杂查询中得到结果。
3、维护数据的独立性,试图可从多个表检索数据。
4、对于相同的数据可产生不同的视图。

缺点:
查询视图时,必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么就无法更改数据。

12.列举几种表连接方式,有什么区别?

内连接、自连接、外连接(左、右、全)、交叉连接 内连接:只有两个元素表相匹配的才能在结果集中显示。 外连接: 左外连接:左边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 右外连接:右边为驱动表,驱动表的数据全部显示,匹配表的不匹配的不会显示。 全外连接:连接的表中不匹配的数据全部会显示出来。 交叉连接: 笛卡尔效应,显示的结果是链接表数的乘积。

13.主键和外键的区别?

主键在本表中是唯一的、不可唯空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

14.在数据库中查询语句速度很慢,如何优化?

1、建索引
2、减少表之间的关联
3、优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据 量大的表排在前面
4、简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
5、尽量用PreparedStatement来查询,不要用Statement

15.数据库的三大范式

第1范式:确保每列的原子性
第2范式:1张表只描述1件事情
第3范式:用外键做表的关联

16.Oracle和Mysql的区别?

1、库函数不同。
2、Oracle是用表空间来管理的,Mysql不是。
3、显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同。
4、分页查询时候时候,mysql用limit oracle用rownum

17.什么是PL/SQL?

PL/SQL是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的。

18.truncate与 delete区别

TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE,DELETE,DROP 放在一起比较:
TRUNCATE TABLE :删除内容、释放空间但不删除定义。
DELETE TABLE: 删除内容不删除定义,不释放空间。
DROP TABLE :删除内容和定义,释放空间。

19.oracle获取系统时间

select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss') from dual;

20.oracle怎么去除去重

使用distinct关键字

猜你喜欢

转载自blog.csdn.net/weixin_43266090/article/details/90720144