【面试】数据库常见面试题

触发器的作用

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

什么是存储过程,用什么来调用?

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。**调用**1)可以用一个命令对象来调用存储过程。2}可以在外部程序程序中调用(如java程序)

存储过程的优缺点

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

存储过程与函数的区别

存储过程 函数
用于在数据库中完成特定的操作或者任务(如插入、删除等) 用于特定的数据(如选择)
程序头部声明用procedure 程序头部声明用function
程序头部声明时不需要描述返回类型 程序头部声明时要描述返回类型,而PL/SQL块中至少要包块一个有效的return语句
可以使用in/out/in out 三种模式的参数 可以使用in/out/in out 三种模式的参数
可作为一个独立的PL/SQL语句来执行 不能独立执行,必须作为表达式的一部分调用
可以通过out/in out 返回零个或多个值 通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量
SQL语句(DML 或 SELECT)中不可调用存储过程 SQL语句(DML或SELECT)中可以调用函数

索引的作用?和它的优点缺点是什么?

索引就是一种特殊的查询表,数据库的搜索可以利用它加速对数据的检索,它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
什么样的字段适合建索引:唯一、不为空、经常被查询的字段

索引类型有哪些

逻辑上
Single column 单行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based 函数索引
Domain 域索引
物理上:
Partitioned 分区索引
NonPartitionefe 非分区索引
B-tree :
Normal 正常型B树
Rever Key 反转型B树
Bitmap 位图索引

什么是事务?什么是锁?

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就失败,以后操作就会回滚到操作前状态,或者是上一个节点。为了确保要么执行,要么不执行,就可以使用事务。要将SQL语句作为事务考虑,就需要通过ACID测试也就是说的事务的(原子性,一致性,隔离性,和持久性)
在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性,与现实生活中的锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。

什么是视图?什么是游标?

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

游标:
是把查询出来的结果作为一个结果集来有效的处理。游标可以定在该单元的特定行,从结果集的当前行检索一行或者多行。可以对结果集当前行进行修改。(一般不适用游标,但是有遇到对逐条数据进行处理的时候,游标就显得很重要)

视图的优点:

  • 1)对数据库的访问,因为视图可以有选择性的选取数据库中的一部分。
  • 2)用户通过简单的查询可以从复杂查询得出结果。
  • 3)维护数据的独立性,视图可以从多个表检索数据。
  • 4)对于相同的数据可以通过不同的视图来呈现。

视图的缺点:
查询视图时,必须要把视图查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么更改数据起来就会比较麻烦,或者通过视图根本无法修改数据。

几种表连接方式,有什么区别?

内连接、自连接、外连接、交叉连接

内连接:只有两个元素表相匹配的才能在结果集中显示。

外连接:
左外连接:左边的数据表为主表,主表的数据全部显示,右边的数据表为匹配表,匹配表的数据匹配上的才能显示)
右外连接:右边的数据表为主表,跟左外连接相仿)
全外连接:只显示主表与匹配表中都有的数据)
笛卡尔效应:显示的结果是链接表数的乘积)

主键和外键的区别?

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

如何优化查询语句?

1、建立适当的索引。
2、减少表之间的关联。
3、尽量避免全表查询,没有用的字段不用,控制返回结果。
4、尽量用PreparedStatement查询,不用Statement。

数据库的三范式是什么?
第一范式:列不可再分。
第二范式:行可以唯一区分,主键约束。
第三范式:表的非主属性不能依赖于其他表的非主属性,外键约束,且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立在一二范式上。

union 和 union all 的区别?

union和union all都是将两个结果集合合并为一个。
1、union在进行表链接后会筛选掉重复的记录,union all不会。
2、union将会按照字段的顺序进行排序;union all 不会,只是简单的将两个结果合并后并返回。

注:从效率上因为union all 不对数据做去重处理,所以效率上要比union高。
varchar2 和 varchar 的区别?
char的长度是固定的,而varchar2的长度是可以变化的, 比如,存储字符串“abc”对于char(20),表示你存储的字符将占20个字节,包含17个空,而同样的varchar2(20)只占用了3个字节,20只是最大值,当你存储的字符小于20时,按实际长度存储。char的效率要比varchar2的效率高。目前varchar是varchar2的同义词,工业标准的varchar类型可以存储空字符串

序列的作用?

oracle使用序列来生成唯一编号,用来处理一个表中自增字段。oracle序列是原子对象,并且是一致的。也就是说,一旦访问了一个序列号,oracle将在处理下一个请求之前自动递增下一个编号,从而确保不会出现重复值。

表和视图的关系?

视图其实就是一条查询SQL语句,用于显示一个或多个表或其他视图中的相关数据。表就是关系数据库中实际存储数据用的。

oracle基本数据类型?

猜你喜欢

转载自blog.csdn.net/u013806366/article/details/79498722