MySQL数据库重点总结

一、触发器的使用

MySQL的两种触发器:

after 触发器: 对表操作之后触发,定义操作执行之后触发

instead of 触发器: 不执行本身定义的操作,而执行触发器本身里面定义的内容

(1)after 触发器

1.after insert 触发器:在 insert 操作执行之后触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER   INSERT
AS
	T-SQL语句
[GO]

2.after update 触发器:在 update 操作之后触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER   UPDATE
AS
	T-SQL语句
[GO]

3.after delete 触发器:在 delete 操作之后触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
FOR/AFTER   DELETE
AS
	T-SQL语句
[GO]

(2)instead of 触发器

1.instead of insert 触发器: insert 操作之前触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF INSERT
AS
	T-SQL语句
[GO]

2.instead of update 触发器: update 操作之前触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF UPDATE
AS
	T-SQL语句
[GO]

3.instead of delete 触发器: delete 操作之前触发

CREATE/ALTER TRIGGER 触发器名称
ON 表名/视图名
INSTEAD OF DELETE
AS
	T-SQL语句
[GO]

(3)删除触发器

DROP TRIGGER 触发器名

二、索引的使用

(1)视图创建

CREATE VIEW <视图名>[<列名>,<列名>,[]]	[括号内可省略]
[WITH ENCRYPTION]	加密[可省略]
AS
<SELECT 语句>
[WITH CHECK OPTION]

(2)索引创建

CREATE [UNIQUE],[CLUSTERED],[NONCLUSTERED] INDEX 索引名
ON {表或视图} {列}		{括号内的一定要写}
WITH FILLFACTOR = n	填充因子0到100之间的整数

(3)存储过程创建

CREATE PROC 存储过程名 [可选的整数]	用来对同名的过程分组
[{@参数名称 参数类型} [=DEFAULT] [OUTPUT]]
[WITH {RECOMPILE 或ENCRYPTION 或RECOMPILE ,ENCRYPTION}]
AS
[BEGIN]
	<T-SQL语句>
[END]
[GO]

三、游标的使用

---1. 声明游标
DECLARE 游标名 CURSOR LOCAL	---GLOBAL全局游标(默认LOCAL)
FOR select_statement

---查询T-SQL
select 行 from 表 where 条件

---2. 打开游标
OPEN 游标名

---3. 读取游标	
NEXT 向下 PRIOR 向上 FIRST 第一个 LAST 最后一个 
ABSOLUTE n 绝对位置 RELATIVE n 从当前位置开始到第n个
DECLARE @name varchar(20)

---游标前进赋值 FETCH NEXT
FETCH NEXT FROM @varUser cursor ,@uId int ,@uName varchar(50) ,@age int
SET @varUser = user_cursor(游标名)
WHILE @@FETCH_STATUS = 0	---判断是否执行成功
BEGIN
	print cast(@uId as varchar)+‘,‘+@uName+‘,‘+convert(varchar,@age);
	<执行T-SQL语句>
	FETCH NEXT FROM 游标名 INTO @uId,@uName,@age	--移动游标
END

---4.关闭游标
CLOSE 游标名

---5.释放游标
DEALLOCATE 游标名
GO

附录:SQL速查表

MySQL数据库重点总结

MySQL数据库重点总结

MySQL数据库重点总结

上一篇:Vagrant环境下配置node_exporter、mysqld_exporter、prometheus、grafana


下一篇:28. Mysql之慢日志浅谈