MySQL資料庫重點總結
阿新 • • 發佈:2021-08-01
一、觸發器的使用
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