1. 程式人生 > >Java學習總結(十七)——MySQL數據庫(3)存儲過程,觸發器,數據庫權限,數據庫設計三大範式

Java學習總結(十七)——MySQL數據庫(3)存儲過程,觸發器,數據庫權限,數據庫設計三大範式

MySQL數據庫 存儲過程 觸發器 MySQL數據庫權限 數據庫設計三大範式

一.MySQL存儲過程
1.概念:帶有邏輯的sql語句,之前的sql語句中沒有條件判斷,沒有循環,存儲過程中帶上流程控制語句。
2.特點:
(1)執行效率非常快,存儲過程是在 數據庫的服務端執行的;
(2)移植性很差,不同的數據庫存儲過程不能一直;
3.存儲過程的語法:

技術分享圖片

例(我們以employee表為例):
(1)不帶參數的存儲過程:
創建存儲過程:

技術分享圖片
存儲過程創建成功,調用執行:
技術分享圖片
顯示結果:
技術分享圖片

(2)帶參數的存儲過程:
#1.創建帶輸入存儲過程(利用員工編號查詢員工信息):
技術分享圖片
存儲過程創建成功,調用執行:
技術分享圖片
顯示結果:
技術分享圖片
#2.創建帶輸出參數的儲存過程(輸出hello word):
技術分享圖片
存儲過程創建成功
刪除存儲過程:
技術分享圖片
前:技術分享圖片後:技術分享圖片
#3.帶輸出參數的存儲過程調用

mysql的變量
1)全局變量(內置變量):mysql數據庫內置的變量 (所有連接都起作用)
技術分享圖片

2)會話變量: 只存在於當前客戶端與數據庫服務器端的一次連接當中。如果連接斷開,那麽會話變量全部丟失!

技術分享圖片

3)局部變量: 在存儲過程中使用的變量就叫局部變量。只要存儲過程執行完畢,局部變量就丟失!!
首先建立存儲過程:
技術分享圖片
建立成功,現在調用,定義一個會話變量a:
技術分享圖片
調用成功,訪問變量a:
技術分享圖片
顯示結果:
技術分享圖片
#4.帶有輸入輸出參數的存儲過程:
創建存儲過程:
技術分享圖片
創建成功,開始調用:
*輸入參數
技術分享圖片
顯示結果:
技術分享圖片
輸出參數:
技術分享圖片
顯示結果:
技術分享圖片
(3)帶有條件判斷的存儲過程
根據需求完成存儲過程建立(輸入一個整數,如果1,則返回“星期一”,如果2,返回“星期二”,如果3,返回“星期三”。其他數字,返回“錯誤輸入”):

建立存儲過程:
技術分享圖片
調用存儲過程:
技術分享圖片
顯示結果:
技術分享圖片
(4)帶循環功能的存儲過程:
註意:循環控制 leave 相當於break,iterate相當於contiune;
根據需求建立存儲過程(輸入一個整數,求和。例如,輸入100,統計1-100的和):
技術分享圖片
存儲過程創建完成,開始調用:
技術分享圖片
顯示結果:
技術分享圖片
(5)帶循環控制功能的存儲過程
技術分享圖片
存儲過程建立成功,開始調用:
技術分享圖片
顯示結果:
技術分享圖片

二.觸發器
1.觸發器的作用:當操作了某張表時,希望同時觸發一些動作/行為,可以使用觸發器完成;
2.語法:

技術分享圖片

例1:( 當向員工表插入一條記錄時,希望同時往日誌表插入數據)
建立日誌表:
技術分享圖片
創建觸發器:
技術分享圖片
向表中插入新的數據:
技術分享圖片
查看日誌表:
技術分享圖片
顯示結果:
技術分享圖片
例2.(修改表時觸發日誌表)
創建修改觸發器:

技術分享圖片
修改表中數據:
技術分享圖片
查看日誌表:
技術分享圖片
例3.(表數據時觸動日誌表)
建立刪除觸發器:
技術分享圖片
刪除表中一條數據:
技術分享圖片
查詢日誌表數據:
技術分享圖片

三.MySQL的權限
1.mysql數據庫權限問題:root :擁有所有權限(可以幹任何事情)
(1)權限賬戶,只擁有部分權限(CURD)例如,只能操作某個數據庫的某張表
(2)如何修改mysql的用戶密碼?
技術分享圖片

2.mysql數據庫,用戶配置 : user表

技術分享圖片

3.分配權限賬戶
(1)權限: select insert delete update drop create/ 或,all
(2)@ 後面可以是localhost 也可以是ip 也可以給% 那%代表任意一臺計算機都可以連接上來
(3)語法:

技術分享圖片

4.數據庫備份和還原 註意備份還原不需要登陸數據庫

技術分享圖片

四.數據的設計
1.遵循三大範式:
(1)第一大範式:要求表的每個字段必須是不可分割的獨立單元
技術分享圖片

(2)第二大範式:在第一範式的基礎上,要求每張表只表達一個意思。表的每個字段都和表的主鍵有依賴。

技術分享圖片

(3)第三大範式: 在第二範式基礎,要求每張表的主鍵之外的其他字段都只能和主鍵有直接決定依賴關系。

技術分享圖片

例:
工程號 工程名稱 職工號 姓名 職務 薪水 工時
A1 花園大廈 1001 楊國明 工程師 65 13
A1 花園大廈 1002 班建斌 技術員 60 16
A1 花園大廈 1004 伍嶽林 律師 100 19
A2 立交橋 1001 楊國明 工程師 65 13
A2 立交橋 1003 鞠明亮 工人 55 17
A3 臨江飯店 1002 班建斌 技術員 60 18
A3 臨江飯店 1004 伍嶽林 律師 100 14

假設某建築公司要設計一個數據庫。公司的業務規則概括說明如下:
?公司承擔多個工程項目,每一項工程有:工程號、工程名稱、施工人員等
?公司有多名職工,每一名職工有:職工號、姓名、性別、職務(工程師、技術員)等
?公司按照工時和小時工資率支付工資,小時工資率由職工的職務決定(例如,技術員的小時工資率與工程師不同)
正確解析:
技術分享圖片

                                                                                        【本次總結完畢】

Java學習總結(十七)——MySQL數據庫(3)存儲過程,觸發器,數據庫權限,數據庫設計三大範式