分类: 数据库开发技术
2011-06-06 17:15:29
1、主键和唯一索引的区别?
答:主键顺序为数据的物理顺序;
主键不能为空,唯一索引可以为空;
主键每个表只能有一个,唯一索引可以有多个;
主键被默认将是聚簇索引,唯一索引默认将是非聚簇索引。
2、什么是分布式数据库?
答:数据库分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力,可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。
3、恢复和并发的基本单位?
答:事务。
4、存储过程、触发器、函数三者之间的区别?
答:存储过程是一组为了完成特定功能的SQL语句集,是利用SQL语言编写的程序,它涉及到对特定的表或其他对象的操作,用户可以调用存储过程。
触发器是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如,当对一个表进行操作(insert、delete、update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
函数通常是数据库已经定义好的方法,用户给出相应的参数就会返回某种类型的结果,它不像存储过程一样会涉及某个特定的用户表。
5、事务是什么?
答:事务是作为一个逻辑单元执行的一系列操作。一个逻辑工作单元必须有4个属性,称为ACID属性,只有这样才能称为一个事务。
A原子性:事务必须是原子工作单元,对于其数据修改,要么全部执行,要么全都不执行。
C一致性:事务在完成时,必须使所有的数据都保持一致。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结果(如B树索引或双向链表)都必须是正确的。
I隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发事务之间不能互相干扰。
D持久性:持续性也称为永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。
6、游标?游标作用?如何知道游标已经到了最后?
答:游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断其是否到了最后,通常此变量不等于表示出错或到了最后。
7、事前触发器和事后触发器的区别?语句级触发器和行级触发器有何区别?
答:事前触发器运行于触发事件发生之前,事后触发器运行于触发事件发生之后。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器影响的每一行触发一次。
8、SQL结构化查询语言
9、表、索引、视图的定义语法?
答:定义表:Create Table 表名(列名1 数据类型 [列级完整性约束],
列名2 数据类型 [列级完整性约束],……..
表级完整性约束);
修改表:
Alter Table 表名 Add 列名 数据类型 列级完整性约束
Alter Table 表名 Modify 列名 数据类型
Alter Table 表名 drop 完整性约束
删除表:
Drop Table 表名
定义索引:
Create [Unique][Cluster] Index 索引名 On 表名 (列名1 ASC/DESC,列名2 ASC/DESC………...)
删除索引:
Drop Index 索引名
定义视图:
Create View 视图名 As 子查询 [With Check Option]
删除视图:
Drop View 视图名
更新视图:
Insert, Update, Delete,但并非所有的视图都能够执行更新操作。
10、查询select?
答:select中用到的相关信息
where表示条件,有> < = != >= <=等以及加not,is null is not null,between and not between and,like not like % _,And Or,in not in,
order by 列名 ASC/DESC
集函数:Count(ALL/DISTINCT *) Count(ALL/DISTINCT 列名)
Sum(ALL/DISTINCT 列名) Avg(ALL/DISTINCT 列名)
MAX(ALL/DISTINCT 列名) MIN(ALL/DISTINCT 列名)
分组:group by 列名,按照列名进行分组,即该列名中值相同的为一组,这时一般都要用到集函数,对分组的结果进行统计,如统计总数,平均值等。
having,该判断用在分组时。
select可以对单表查询,其比较简单,也可以连接查询,对多个表进行查询,如有等值连接,自然连接,自身廉洁,笛卡尔乘积、外连接,复合条件连接,嵌套查询(即含有子查询,一般子查询的结果为一个集合,因此此时在第一层查询中经常都使用带IN的查询;带有ANY、ALL的子查询;带有EXIST的子查询)。
11、数据更新?
答:Insert into 表名(列名1,列名2,……)values(值1,值2……)或者
Insert into 表名(列名1,列名2…….)子查询
Update 表名 set 列名=新值 where …..
Delete from 表名 where …..