1. 程式人生 > 其它 >MySQL資料庫重點總結

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速查表