MySQL高級教程 筆記_第1頁
MySQL高級教程 筆記_第2頁
MySQL高級教程 筆記_第3頁
MySQL高級教程 筆記_第4頁
MySQL高級教程 筆記_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、泰牛程序員 PHP學院 MySQL-高級1標題1錯誤!未定義書簽。1.1標題2錯誤!未定義書簽。1.1.1標題3錯誤!未定義書簽。1 概述MySQL中的SQL編程的話題.觸發(fā)器, 存儲函數(shù), 存儲過程以上的是三個名詞, 在SQL編程中, 地位是: 程序的載體, 程序的結果.編程所涉及的要素:變量, 數(shù)據(jù)類型, 流程控制, 函數(shù), 運算符, 表達式.2 函數(shù)2.1 內(nèi)置函數(shù)MySQL自動提供的函數(shù)!例如: database(), now(), md5()2.2 自定義函數(shù) 存儲函數(shù)用戶定義定義的, 存儲在MySQL中的函數(shù).2.2.1 create function, 創(chuàng)建函數(shù)適用語法:來創(chuàng)建函

2、數(shù)2.2.2 調用函數(shù)2.2.3 drop function , 刪除函數(shù) drop function if exists function-name;3 變量 編程要素程序 處理數(shù)據(jù). 數(shù)據(jù)在程序中的容器, 就是變量.強類型3.1 全局變量函數(shù)外定義的變量變量不需要聲明, 直接去設置即可!PS, 內(nèi)置的變量: set autocommit = off, 不以 開頭3.2 局部變量函數(shù)內(nèi)定義的變量使用declare來聲明.不需要使用, 表示是用戶自定義變量.強類型, 定義的局部變量, 必須定義為某種類型, 類型的表述與字段的類型一致!3.3 重疊(嵌套)作用域局部內(nèi), 可訪問到全局變量PS:

3、與JS保持一致13.4 變量的賦值3.4.1 set 變量 = 值 3.4.2 select into 變量當需要為變量賦值的數(shù)據(jù), 來源于SQL中select語句的查詢結果時, 可以使用select into完成變量的賦值.一次性, 賦值多個變量:函數(shù)內(nèi), 也可以使用4 流程控制 編程要素循環(huán)和分支4.1 分支- IF測試結果4.1.1 內(nèi)置分支函數(shù): if()不是分支, 是典型的 三元運算, 的函數(shù)封裝語法MySQL不支持三元運算符 ? :.4.2 分支-CASE測試結果4.3 循環(huán) while條件滿足, 則循環(huán)繼續(xù)其中標簽, 用于在循環(huán)終止時, 一次性的終止多層循環(huán)! 類似于JS的語法.

4、 例如:4.4 循環(huán) 終止終止當前循環(huán):(continue), iterate終止全部:(break), leave終止, 都需要配合 循環(huán)語句的標簽使用!ierate:leave:如果需要終止多層:需要在 后邊跟隨 不同的標簽即可5 過程 存儲過程 procedure與函數(shù)類似, 都是一段功能代碼的集合, 稱之為過程.與函數(shù)不一樣的是, 函數(shù)由于完成某個特定的操作點, 例如, md5(), 獲取md5摘要信息, 不是用來實現(xiàn)某中也無路基操作, 而是就是實現(xiàn)特定的操作. 過程是, 某個特定的業(yè)務邏輯. 當我們需要使用SQL完成某件事時候, 使用過程, 而在過程的完成中, 需要一些特殊的操作,

5、就是函數(shù).例如: 需要插入, 1000條記錄到某測試表中, 此時就應該創(chuàng)建過程.而在插入的時候, 需要隨機的獲取學生的姓名, 就可以定義一個函數(shù), 完成獲取隨機的學生姓名工作.映射到PHP程序: 瀏覽器所請求的一個URL, 對應的PHP代碼, 就是一段過程. (例如, 商品添加, 用戶注冊), 就是過程.而在完成這個過程中, 需要將用戶的密碼做md5處理, md5就是函數(shù).因此, 函數(shù)在意的是處理結果,函數(shù)具有返回值.而過程是一段執(zhí)行, 不具有返回值.語法5.1 創(chuàng)建過程: create procedure注意: 沒有返回值 參數(shù)有輸入方式之分.過程內(nèi)的寫法, 與函數(shù)是一致的. 5.2 調用過

6、程, call 過程()過程的調用不能出現(xiàn)在表達式中, 需要使用獨立的語法進行獨立調用. / 表達式中max(class_id) + 10;需要用 call5.3 刪除過程, drop procedure5.4 參數(shù)的輸入類型, in, out, inoutin, out, inout, 表示, 過程的參數(shù)的數(shù)據(jù)的傳遞方向. in: 由外向內(nèi)傳遞out: 由內(nèi)向外傳遞inout: 雙向傳遞, 即可內(nèi)向外, 也可外向內(nèi)內(nèi), 外, 指的是, 過程外和過程內(nèi).創(chuàng)建 過程外的三個變量:以三個變量作為實參, 調用過程:在獲取過程外三個變量的值:inout 雙向傳遞, 類似于 PHP中的引用傳遞!由于過程

7、沒有返回值, 需要在過程處理后, 得到過程的處理結果數(shù)據(jù), 就因該, 使用 帶有out類型的參數(shù).一個數(shù)據(jù)時被多個過程連續(xù)處理, 典型的需要 inout類型的參數(shù).6 練習一個純粹的MySQL管理員需要完成某些操作, 需要使用過程, MySQL自帶的編程方式.例如, 需要創(chuàng)建大量的測試數(shù)據(jù), 可以過程完成:確定測試表的結構確定需要插入的數(shù)據(jù)格式要求: 學號要 從1開始 遞增.班級ID, 從1-100 隨機姓名, 隨機得來說明: 任意編程實現(xiàn):編寫, 需要的函數(shù):獲取班級ID生成名字:生成信息生成學號從1開始 遞增it-0000001it-0000002取得已有的最大學號.調用過程即可:測試數(shù)據(jù)

8、7 觸發(fā)器 trigger事件驅動程序: 監(jiān)聽元素某些事件, 當事件被觸發(fā)時, 事件處理器被調用.(PS: 類似于JS的事件驅動)觸發(fā)器的事件: insert, delete, update擴展開共六種: before insert, after insertbefore delete, after deletebefore update, after update事件都是記錄對象的事件, row的before insert, row after insert.語法7.1 創(chuàng)建觸發(fā)器, create trigger綁定事件處理器, 到 row 元素上.測試, 在學生表的添加事件上 增加觸發(fā)器程

9、序:一旦學生表添加, 則在學生日志表中, 加入一條記錄檢測學生日志表:觸發(fā)程序被自動調用觸發(fā)器, 只是 調用方式不同于存儲過程而已, 都是功能的集合.7.2 刪除觸發(fā)器drop trigger tigger-name7.3 new, old預定義的變量, 表示觸發(fā)該事件的行對象.就是 事件源記錄. 使用 new, old 來引用這個事件源記錄.new 和 old的區(qū)別:new, 新紀錄old, 舊記錄.只有在update事件時, 才會出現(xiàn) 新舊記錄同時存在的情況. 更新: 將舊記錄更改成新紀錄.在 insert事件中, 只有new可用. before insert, after insert

10、, 都可以使用new.在delete事件中, 只有 old可用. before delete after delete 都可以使用 old無論是 before還是insert 都一樣.7.4 事件的觸發(fā)可能會出現(xiàn)執(zhí)行一條語句 , 觸發(fā)多個事件的情況.有些語句, 帶有邏輯判定功能:replace into, 嘗試插入, 如果沖突, 則替換(刪除舊的,插入新的)類似的: insert into on duplicate key update 沖突時更新一個表, 的一個事件, 僅僅可以綁定一個事件處理器.一個表 最多可以有6個觸發(fā)器.8 架構讀寫分離, 負載均衡.8.1 讀, 寫服務器分離設計:56

11、.101, MySQL 充當寫服務器.再添加2臺linux 充當讀服務器:初始化mac地址完全復制復制后, 啟動復制的服務器:刪除, 之前所保留的 虛擬化網(wǎng)卡的文件, 使新生成的網(wǎng)卡生效.修改 eth0的配置文件: 修改mac地址參數(shù):修改為, virtualbox生成的mac地址:保持一致init 6 重啟8.2 讀從寫服務器 復制數(shù)據(jù)在主服務器上開一個復制賬號, 從服務器利用這個復制賬號, 從主服務器進行復制.配置過程如下:8.2.1 主服務器8.2.1.1 開啟二進制日志8.2.1.2 指定唯一的服務器ID保證唯一即可!需要重啟 mysqld(可以與步驟一一起完成)8.2.1.3 增加復制賬號登錄主MySQL, 增加賬號, 刷新權限.8.2.1.4 記錄

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論