1.触发器的作用
是特殊的存储过程。主要通过事件来触发执行的。可以强化约束,来维护数据库的完整性和一致性。可以跟踪数据库内的操作而不允许未经许可的更新和变化。
2.存储过程、用什么调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计(即只需要创建一次,以后在该程序中可以多次调用),提高效率。
调用:
1)可以使用一个命令对象来调用存储过程。
2)可以供外部程序调用
3.存储过程的优缺点
优点:
1.存储过程预编译,执行效率高
2.存储过程的代码直接存放在数据库中,通过存储过程名直接调用,减少网络通讯。
3.安全性高,执行数据存储需要一定的权限的用户
4.存储过程可以重复使用,可以减少数据库开发人员的工作量
缺点:
移植性差
4.存储过程与函数的区别
存储过程 | 函数 |
用于在数据库中完成特定的操作或者任务(如插入、删除) | 用于特定的数据(如选择) |
程序头部声明用procedure,程序头部声明时不需要返回类型 | 程序头部声明用function,程序头部声明需要描述返回值类型。而PL/SQL块中至少要包括一个有效的return语句。 |
可以使用in/out/in out 三种模式的参数,可作为一个独立的PL/SQL语句来执行。可以通过out/in out 返回零个或多个值 | 可以使用in/out/in out 三种模式的参数,不能独立执行,必须作为表达式的一部分调用,通过return语句返回一个值,且改值要与声明部分一致,也可以是通过out类型的参数带出的变量 |
SQL语句中不可调用存储过程 | SQL语句可以调用函数 |
5.索引的作用?
索引是特殊的查询表,可以加快对数据的查询。索引是唯一的,他允许指定的那个列或者多个列。
适合建立索引的字段:不唯一、不为空、经常被查询的字段
缺点:
减慢了数据的录入熟读,增加了数据库的尺寸。
索引类型:
- 单行索引(单行索引)
- 多行索引(Concatenated)
- 唯一索引(Unique)
6.事务、锁
事务:指作为单个逻辑工作单元执行的一系列操作,要么完全的执行,要么完全不执行。
事务的四个特点:
- 原子性:在事务中进行的修改,要么全部执行,要么全不执行。
- 一致性:为了事务在查询和修改时数据不发生冲突。
- 隔离性:隔离性是一种用于控制数据访问的机制
- 持久性:在将数据修改写入到磁盘之前,总是先把这些修改写入到事务日志中。这样子,即使数据还没有写入到磁盘中,也可以认为事务是持久化的。
锁:锁是实现事务的关键,是控制资源。可以保证事务的完整性和并发行。
分类:排他锁和共享锁
7.视图、游标
视图:是一种虚拟表。核物理表具有相同的功能。可以进行增删改查。视图一般由一个表和多个表的行和列的子集。对试图修改可以影响基本表。(使获取数据更容易)
游标:是对查询出来的结果集作为一个单元来有效的处理。可以定位在该单元的特定的行。
视图本质上是一条SQL查询语句,而表是关系数据库中实际存储数据用的
8.视图的优缺点
优点:
1.维护数据库的独立性,视图可从多个表检索数据
2.方便数据的查询
缺点:
查询视图时,必须把视图的查询转化成对基本表的查询。
9.表的连接方式
内连接,自连接,外连接。(驱动表,驱动表的数据全部显示)
10.主键和外键
主键:在本表唯一的,不可为空。
外键:可以重复,可以为空。外键和另一表的主键关联,不能创建对应表中不存在的外键。
11.加快数据库查询的方法
- 建立索引
- 减少表之间的联系
- 优化SQL语句
- 简化查询字段
12.数据库的三范式
第一范式:列不可再分
第二范式:行可以唯一区分,主键约束
第三范式:表的非主属性不能依赖其他表的非主属性,外键约束
13.union和union all的区别
union:进行表连接后会筛选重复的记录。
union all 只是简单的将两个结果进行合并并返回。
14.Oracle和MySQL的区别
- 库函数不同
- Oracle是用表空间来管理的MySQL不是。
- 分页查询时,MySQL用limit,Oracle用rownum
- 显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行的脚本语句不同。
15.SQL语句类型
DDL(数据定义语言):create、drop、alter、Truncate
DML(数据操控语言):insert、delete、update、select
DCL(数据库控制语言):rollback、commit
16.order by 和group by区别
order by:排序查询 desc (降序) 、asc(升序)
group by:分组查询 having(条件字句)只能用于group by
17.什么是PL/SQL
PL/sql(过程化SQL语言,Oracle特有,MySQL目前不支持):在普通的sql语句中增加了编程语言的特性。
18.truncate 与delete区别
Truncate table :删除内容,释放空间但不删除定义。
delete table: 删除内容,不删除定义,不释放空间。
drop table: 删除内容和定义,释放空间
去重的关键字:distinct
19、完整性约束
实体完整性、参照完整性、用户定义完整性
20.死锁
定义:是一组进程中的各个进程均占用不会释放的资源,但因互相申请被其他进程所占用不会释放资源而处于一种永久等待的状态。
必要条件:
- 互斥条件
- 请求和保持条件
- 斐波多条件
- 循环等待条件
避免死锁:
- 按统一顺序访问对象
- 避免事物中的用户交互
- 保持事务简短并处于一个批处理中
- 使用较低的隔离级别