mysql建立圖書館系統的過程_MySQL呼叫儲存過程,建立定時任務
阿新 • • 發佈:2021-02-12
技術標籤:mysql建立圖書館系統的過程
建立資料表
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; CREATE TABLE `test_demo_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
建立函式或者儲存過程
儲存過程
基本語法
create procedure name ([params])
UNSIGNED [characteristics] routine_body
params : in|out|inout 指定引數列表 代表輸入與輸出
routine_body: SQL程式碼內容,以begin ........ end
characteristics: 指定儲存過程特性,包含5種
1 DETERMINISTIC 不確定的
2 NO SQL 沒有SQl語句,當然也不會修改資料
3 READS SQL DATA 只是讀取資料,當然也不會修改資料
4 MODIFIES SQL DATA 要修改資料
5 CONTAINS SQL 包含了SQL語句
Demo
CREATE DEFINER = `root` @`%` PROCEDURE `test_1`() MODIFIES SQL DATA
BEGIN
INSERT INTO test_demo_table ( id, `name` ) VALUES ( 0, 'xiaosan' );
END
儲存過程函式中可以通過mysql查詢結果為其引數複製: 其語句為select .... into
函式
基本語法
CREATE FUNCTION name ([params]) UNSIGNED [characteristics] routine_body
注意: 建立函式需要注意3個地方,
- RETURNS: 需指定返回型別
- UNSIGNED NO SQL 需指定儲存過程特性
3.return: 返回需要的資料
Demo
CREATE DEFINER=`root`@`%` FUNCTION `test_2`(f_id INT(3)) RETURNS VARCHAR(20) CHARSET utf8mb4
BEGIN
DECLARE o_name VARCHAR(20);
SELECT name INTO o_name FROM test_demo_table WHERE id = f_id;
RETURN o_name;
END
DEFINER:指明誰有權力來執行。
DELIMITER 的使用
”DELIMITER //“ 表示設定“//”符號為結束語,因為mysql中預設語句結束為分號‘;’,為了避免儲存過程與mysql語句符號衝突,所以有時使用DELIMITER來改變結束語符號,要配合end //來使用;
示例:建立一個root賬戶執行的儲存過程,輸出給定字串的長度
declare: 儲存過程及函式內部定義變數
default:預設值
檢視資料庫是否開啟了定時任務
# 返回on就是開啟了
show variables like '%event_scheduler%';
建立定時任務計劃
資料庫配置my.cnf裡面新增配置資訊
# 開啟定時任務
event_scheduler=ON
啟動定時任務
alter event finish_data on completion preserve enable;