1. 外连接有几种?和内连接有什么区别?
答:外连接包括左外连接、右外连接和全连接三种。区别:内连接查询操作列出查询条件(where或having)和连接条件匹配的数据行,它使用比较运算符比较连接列的列值。外连接返回查询结果中不仅包括符合连接条件的行,而且还包括左表(左外连接)、右表(右外连接)或者两个边接表(全外连接)中的所有数据行。
2. 什么是索引?索引的优点?
答:索引是数据库中一个单独的、物理的数据库结构,它是某个表中一列或者若干列的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
优点:(1)大大加快数据的检索速度。(2)创建唯一性索引,保证数据库表中每一行数据的唯一性。(3)加速表和表之间的连接。(4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:(1)索引需要占物理空间。(2)当对表中数据进行增删改的时候,索引也要动态的维护,降低了数据的维护速度。
3. 什么是触发器?触发器有哪些类型?
答:触发器是一个特殊的存储过程,他的执行不是由程序调用,也不是手工启动,而是由事件触发,比如,当对一个表进行操作(insert,delete,update)时就会激活它执行。它经常用于加强数据的完整性约束和业务规则等。
类型:在SQL Server中触发器可以分为:DML触发器、DDL触发器和登录触发器
DML触发器是当数据库服务器中发生数据操作语言(Data Manipulation Language)事件时执行的存储过程。DML触发器又分为两类:After触发器和Instead Of触发器。
DDL触发器是在响应数据定义语言(Data Definition Language)事件时执行的存储过程。DDL触发器一般用于执行数据库中管理任务。如审核和规范数据库操作,防止数据库表结构被修改等。
4. 对事务的理解?
答:数据库事务是指由一个或多个SQL语句组成的单个逻辑工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元。在并发环境中,多个事务同时访问相同的数据资源时,可能会造成各种并发问题,可通过设定数据库的事务隔离级别来避免,还可采用悲观锁和乐观锁来解决丢失更新这一并发问题。数据库事务必须具备ACID特征: A: Atomic原子性,整个事务不可分割,要么都成功,要么都撤销。 C: Consistency一致性,事务不能破坏关系数据的完整性和业务逻辑的一致性,例如转账,应保证事务结束后两个账户的存款总额不变。 I: Isolation隔离性,多个事务同时操纵相同数据时,每个事务都有各自的完整数据空间 D: Durability持久性,只要事务成功结束,对数据库的更新就必须永久保存下来,即使系统发生崩溃,重启数据库后,数据库还能恢复到事务成功结束时的状态。
5. 什么是存储过程?和普通SQL相比有什么优点?
答:存储过程是一组完成特定功能的SQL语句集合,是由流控制和SQL语句书写的过程,这个过程经过编译和优化后存储在数据库服务器中,可由应用程序通过一个调用执行,而且允许用户声明变量。同时,可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
优点:(1)大大增加SQL的功能和灵活性。(2)可以保证数据的安全性和完整性。(3)极大的改善SQL语句的性能。(4)降低网络的通信量。(5)使体现企业规则的运算程序放入数据库服务器中,以便集中控制。