在MySQL中,把Procedure和Function統稱為Routine,我們會把常用的程序用Stored Procedure或是Stored Function來表示,需要的時候就可以重複呼叫。 Stored Procedure(預儲程序):把一連串的SQL程序步驟儲存起來,最後透過 『call 預儲程序名稱;』來呼叫。 Stored Function(預儲函數):或稱為使用者定義函數,跟預儲程序很像,不過最後會傳回值。呼叫方式不是 call,而是Select,例如:『select 預儲函數名稱(引數值);』或『select 預儲函數名稱();』。 MySQL 正式支援觸發器(trigger)是在 MySQL 5.0.2 的版本之後。觸發器是註冊在資料庫表格上的程式。所以在事件發生(對資料列做新增/修改/刪除)時,資料庫會依照觸發條件(事件前/事件後)幫你執行預先儲存好的程式。 現在來看看一個實際需求的案例 ~ 資料表格式如下 Student(sid, idno, sname, did, syear, sclass) OpenCourse(oid, cid, tid, yearlimit, roomno, tot) Schedule(oid, ti…
MySQL使用者權限資訊用user、db、host、tables_priv和columns_priv表被儲存在mysql資料庫中。 關於使用者權限的相關指令,說明如下 (1)使用 root 進入 MySQL mysql> mysql -u root -p (2)遠端登入 mysql> mysql -u root -h remote_host_ip -p remote_host_ip 指你要登入的遠端MySQL (3)修改使用者密碼 mysql> SET PASSWORD FOR '目標使用者'@'主機' = PASSWORD(' 密碼 '); mysql> flush privileges; (4)建立使用者,並給予權限 grant usage on *.* to 'username'@'localhost' identified by ' yourpassword ' with grant option; grant all privileges on *.* to 'username'@&…
MySQL資料庫中,View元件可以用來保存一段你指定的查詢敘述。 MySQL View的實作請參考 https://www.mysql.tw/2023/05/mysql-view.html (1)CREATE VIEW語法 CREATE [ OR REPLACE ] [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ] [ DEFINER = { user | CURRENT_USER } ] [ SQL SECURITY { DEFINER | INVOKER } ] VIEW view_name [ ( column_list ) ] AS select_statement [ WITH [ CASCADED | LOCAL ] CHECK OPTION ] https://dev.mysql.com/doc/refman/8.0/en/create-view.html 範例 mysql> CREATE TABLE t (qty INT, price INT); mysql>…
Prepare, Execute, Deallocate是一個使用變數來執行的一個功能,主要目的是 : (1)在尚未寫入正式程式時做測試使用。 (2)當暫時需要做些重複動作時使用。 Prepare ~ 準備程序 Execute ~ 執行程序 Deallocate ~ 解除程序 範例 : mysql> PREPARE stmt1 FROM 'SELECT productCode, productName FROM products WHERE productCode = ?'; mysql> SET @pc = 'S10_1678'; mysql> EXECUTE stmt1 USING @pc; mysql> DEALLOCATE PREPARE stmt1; 範例 : mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'; mysql> SET @a = 3; mysql> SET @b = 4; mysql> EXECU…