1.事务
什么是事务?
事务是一个不可分割的工作逻辑单元
事务是作为单个逻辑工作单元执行的一系列操作
为什么需要事务?
SQL Server通过支持事务机制以保证事务的一致性
事务属性:
1.原子性
事务是一个完整的操作,事务的各步操作是不可分的,要么都执行,要么都不执行。
2.一致性
当事务完成时,数据必须处于一致状态。
3.隔离性
并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务。
4.持久性
事务完成后,它对数据库的修改被永久保持。
如何执行事务?
1.执行事务的语法
开始事务的语法:
BEGIN TRANSACTION --标记一个事务的起始点
提交事务的语法:
COMMIT TRANSACTION --标志一个事务成功结束
回滚(撤销)事务的语法:
ROLLBACK TRANSACTON --清除自事务起始点该语句做的所有操作
事务例子:
DECLARE @NUM INT
SET @NUM=0 --初始值设为0
--开启事务
UPDATE Bank SET Money = Money -1000 WHERE Name='张三'
SET @NUM=@NUM+@@ERROR
UPDATE Bank SET Money = Money +1000 WHERE Name='李四'
SET @NUM=@NUM+@@ERROR
IF @NUM>0
BEGIN
PRINT '交易失败,事务回滚'
ROLLBACK TRANSACTION --回滚事务
END
ELSE
BEGIN
PRINT '交易成功'
COMMIT TRANSACTION --提交事务
END
2.事务分类
显式事务:用BEGIN TRANSACTION明确指定事务的开始。
隐式事务:通过设置SET IMPLICIT_TRANSACTIONS ON语句,将隐 式事务模式设置为打开。
其后的T-SQL语句自动启动一个新事务。
提交或回滚一个事务后,下一个T-SQL语句又将启动一个新事务。
自动提交事务:这是SQL Server的默认模式,
它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提 交。如果错误,则自动回滚。
实际开发中最常用的就是显式事务,它明确地指定事务的开始边界。
**
2.视图
视图是保存在数据库中的SELECT查询
使用视图的原因:
一个是出于安全考虑,用户不必看到整个数据库的结构,而隐藏部分数据。
另一个是符合用户日常业务逻辑,使他们对数据更容易理解。
为什么需要视图?
通过不同的视图为企业不同岗位的员工提供对员工信息表数据的不同访问范围,以保证数据访问的安全性。
什么是视图?
视图是另一种查看数据库中一个或多个表中数据的方法
视图是一种虚拟表,通常是作为执行查询的结果而创建的
视图充当着查询中指定表筛选器
视图的用途:
筛选表中的行。
防止未经许可的用户访问敏感数据
降低数据库的复杂程度
将多个物理数据表抽象为一个逻辑数据表。
使用视图的好处:
对最终用户的好处:结果更容易理解。获得数据更容易。
对开发人员的好处:限制数据检索更容易。维护应用程序更方便
如何创建和使用视图:
1.创建视图的语法:
CREATE VIEW view_name
AS
SELECT 语句
2.删除视图的语法:
DROP VIEW view_name
3.查看视图数据的语法:
SELECT col_name1,col_name2,.... FROM view_name
例子:
CREATE VIEW S
AS
SELECT Name FROM Bank ---创建视图
SELECT name FROM s -----查看视图
4.使用视图的的注意事项
1.每个视图中可以使用多个表。
2.与查询相似,一个视图可以嵌套另一个视图,但最好不要超过3层。
3.视图定义中的SELECT语句不能包括下列内容
ORDER BY 子句,除非在SELECT语句的选择列表中也有一个TOP子句
INTO关键字
引用临时表或表变量
3.索引
什么是索引?**
索引是SQL Server编排数据的内部方法,是检索表中数据的直接通道。
索引的作用:
通过使用索引,大大提高数据库的检索速度,改善数据库性能。
索引分类:
1.唯一索引
唯一索引不允许两行具有相同的索引值。
2.主键索引
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
3.聚集索引
在聚集索引中,表中的各行的物理顺序与键值的逻辑(索引)顺序相同。
一个表只能有一个聚集索引,这是因为聚集索引决定数据的物理存储顺序。
4.非聚类索引
非聚集索引建立在索引页上,当查询数据时可以从索引中找到记录存放的位置。
一个表可以有多个非聚集索引,非聚集索引指定表中数据的逻辑顺序。
5.复合索引
在创建索引时,并不是只能对其中一列创建索引,与创建主键一样,可以将多个列组合作为索引,这种索引称为复合索引。
6.全文索引
全文索引是一种特殊类型的基于标记的功能性索引,由SQL Server中全文引擎服务创建和维护。
创建索引的语法:
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
INDEX index_name
ON table_name (column_name[, column_name]…)
[WITH FILLFACTOP=x]
UNIQUE指定唯一索引,可选。
CLUSTERED、NONCLUSTERED指定是聚集索引还是非聚集索引,可选
FILLFACTOR表示填充因子,指定一个0~100的值,该值指示索引页填满的空间所占的百分比
例子:
CREATE NONCLUSTERED
INDEX index_username
ON Student(StudentName)
WITH FILLFACTOR =30
删除索引的语法:
DROP INDEX table_name.index_name
注意:
删除表时,该表的所有索引将同时被删除
如果要删除表的所有索引,则先要删除非聚集索引,再删除聚集索引。
使用索引可加快数据检索速度,但没有必要每个列都建立索引。因为索引自身也需要维护、并占用一定的资源,可以按照下列标准选择建立索引的列:
频繁搜索的列。
经常用作查询选择的列。
经常排序、分组的列。
经常用作连接的列(主键/外键)。
请不要使用下面的列创建索引:
仅包含几个不同值的列。
表中仅包含几行。
使用索引时注意事项:
查询时减少使用*返回全部列,不要返回不需要的列
索引应该尽量小,在字节数小的列上建立索引
WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前
避免在ORDER BY 子句中使用表达式
根据业务数据发生频率,定期重新生成或重新组织索引,进行碎片整理
索引的优缺点:
优点:
加快访问速度
加强行的唯一性
缺点:
带索引的表在数据库中需要更多的存储空间
操纵数据的命令需要更长的处理时间,因为它们需要对索引进行更新
查看索引:
1.用系统存储过程sp_helpindex查看的语法:
exec sp_helpindex Table_name
2.用视图sys.indexes查看的语法:
SELECT * FROM sys.indexes