1. 程式人生 > 其它 >mysql建立圖書館系統的過程_MySQL呼叫儲存過程,建立定時任務

mysql建立圖書館系統的過程_MySQL呼叫儲存過程,建立定時任務

技術標籤:mysql建立圖書館系統的過程

3053537fc1695b11768d15e95d3aca29.png

建立資料表

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個地方,

  1. RETURNS: 需指定返回型別
  2. 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;