SQL Serever学习16——索引,触发器,数据库维护

简介: sqlserver2014数据库应用技术《清华大学出版社》 索引这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样数据库索引可以帮助我们快速定位数据在哪个存储页区,而不用扫描整个数据库索引一旦被创建就会数据库自动管理和维护,增删改插座数据库都会对索引...

 

sqlserver2014数据库应用技术

《清华大学出版社》 

索引

这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样

数据库索引可以帮助我们快速定位数据在哪个存储页区,而不用扫描整个数据库

索引一旦被创建就会数据库自动管理和维护,增删改插座数据库都会对索引做修改

索引分类:

  • 聚集索引
  • 非聚集索引
  • 包含性列索引
  • 索引视图
  • 全文索引
  • xml索引

聚集索引,就是相当于排序的字典(将表中的数据完全重新排序),一个表只有一个,所占空间相当于表中数据的120%,数据建立聚集索引,会改变数据行的存储物理结构

非聚集索引,不改变数据行的物理存储结构,CREATE INDEX默认建立非聚集索引,理论一个表可以有249个非聚集索引

索引和约束

设置主键,会自动创建PRIMARY KEY 和创建一个聚集索引

创建UNIQUE 约束会自动创建一个唯一非聚集索引

创建表的索引

 

使用SQL语句

CREATE INDEX IX_name_mj
ON 买家表(买家名称)
GO

 

 

 查看索引

EXEC sp_helpindex 买家表

分析索引

查看查询计划,使用的索引(优先使用聚集索引)

SET SHOWPLAN_ALL ON
GO
SELECT * FROM 买家表
GO

SET SHOWPLAN_ALL OFF
GO

显示统计信息,查看所花费的磁盘io活动量

SET STATISTICS IO ON
GO
SELECT * FROM 买家表
GO

SET STATISTICS IO OFF
GO

 

 维护索引

数据表的增删改操作会产生大量索引碎片,索引表不连续,降低索引性能,需要整理索引

查看索引碎片SQL

DBCC SHOWCONTIG(买家表,PK_买家表)
GO

 

 ssms查看索引

索引碎片整理

DBCC INDEXDEFRAG(销售管理,买家表,PK_买家表)

 

 触发器

触发器是一个高级的数据约束,他是特殊的存储过程,不能通过执行sql触发,由增删改等事件自动触发

sqlserver2014提供3种触发器:

  • DML触发器,包括事后触发器,替代触发器,CLR运行时触发器
  • DDL触发器,修改表结构触发
  • LOGIN触发器,登录的时候触发

DML触发器

INSERT触发器

如果员工年龄不到18岁不执行插入操作

CREATE TRIGGER Employee_Insert
	ON Employee
	AFTER INSERT
AS
BEGIN
	--从INSERTED表获取新插入员工的出生年月
	DECLARE @birthday date
	SELECT @birthday=birthday FROM inserted
	--判断新员工年龄
	IF(YEAR(GETDATE())-YEAR(@birthday)<18)
	BEGIN
		PRINT '该员工年龄不到18岁,不能入职!'
		ROLLBACK TRANSACTION  --回滚这个节点之前的所有操作,然后继续执行后面的语句
	END
END

验证

INSERT Employee VALUES('小明','2012-10-10')

再验证

INSERT Employee VALUES('小明','1912-10-10')

注意主键id仍然会增长,即使刚刚的操作回滚了,id还是增加了1

 UPDATE触发器

防止用户修改员工姓名name字段

 

CREATE TRIGGER Employee_Update
	ON Employee
	AFTER UPDATE
AS
BEGIN
	IF(UPDATE(NAME))
	BEGIN
		PRINT '禁止修改员工姓名!'
		ROLLBACK TRANSACTION  --回滚这个节点之前的所有操作,然后继续执行后面的语句
	END
END

验证

UPDATE Employee SET NAME='XX'

 

 

数据库的维护

备份

使用存储过程创建备份设备

EXEC sp_addumpdevice 'DISK','COMB','E"\DATA\COMB.BAK'

 

删除备份设备

EXEC sp_dropdevice 'COMB'

 

使用SQL创建数据库备份

BACKUP DATABASE 销售管理
TO COMB

 

使用SQL还原数据库

RESTORE DATABASE COMB
FROM DISK='E:/DATA/COMB.BAK'

 

目录
相关文章
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1071 152
|
5月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
838 156
|
5月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
560 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
4月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
316 6
|
5月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
403 0
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
173 0
|
SQL 关系型数据库 MySQL
15天学习MySQL计划-SQL语言学习(基础篇)-第二天
15天学习MySQL计划-SQL语言学习(基础篇)-第二天
277 1
|
SQL 网络协议 Ubuntu
简单学习SQL语言
简单学习SQL语言
281 0