<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [toc] # 一、系統變量 系統變量分為全局變量(<b>global</b>)和會話變量(<b>session</b>) 說明:變量由系統定義,不是用戶定義,屬于服務器層面 注意:全局變量要加global關鍵字,若不寫默認是會話級別 ~~~ //1.全局變量 show global variables; //查看所有全局變量 show global variables like "%char"; //查看滿足條件的部分全局變量 select @@global.autocommit; //查看指定的系統變量的值 set @@global.autocommit=0; //為變量賦值 //2.會話變量 show session variables; //查看所有會話變量,其他同上,就不一一贅述 ~~~ # 二、自定義變量 自定義變量分為用戶變量和局部變量 說明:變量由用戶自定義,要求用戶聲明、賦值,然后才能使用 ## 1.用戶變量 ~~~ 賦值操作符:=或:= ①聲明并初始化 SET @變量名=值; SET @變量名:=值; SELECT @變量名:=值; ②賦值(更新變量的值) 方式一: SET @變量名=值; SET @變量名:=值; SELECT @變量名:=值; 方式二: SELECT 字段 INTO @變量名 FROM 表; ③使用(查看變量的值) SELECT @變量名; ~~~ ## 2.局部變量 ~~~ /* 作用域:僅僅在定義它的begin end塊中有效 應用在 begin end中的第一句話 */ ①聲明 DECLARE 變量名 類型; DECLARE 變量名 類型 【DEFAULT 值】; ②賦值(更新變量的值) 方式一: SET 局部變量名=值; SET 局部變量名:=值; SELECT 局部變量名:=值; 方式二: SELECT 字段 INTO 具備變量名 FROM 表; ③使用(查看變量的值) SELECT 局部變量名; ~~~ 關鍵點:用戶變量和局部變量主要差別在<b>聲明</b>部分,用戶變量聲明用set,局部變量使用declare # 三、存儲過程 含義:一組預先編譯好的SQL語句的集合,理解成批處理語句 1、提高代碼的重用性 2、簡化操作 3、減少了編譯次數并且減少了和數據庫服務器的連接次數,提高了效率 ## 1.創建語法 ~~~ CREATE PROCEDURE 存儲過程名(參數列表) BEGIN 存儲過程體(一組合法的SQL語句) END /* 注意: 1、參數列表包含三部分 參數模式 參數名 參數類型 舉例: in stuname varchar(20) 參數模式: in:該參數可以作為輸入,也就是該參數需要調用方傳入值 out:該參數可以作為輸出,也就是該參數可以作為返回值 inout:該參數既可以作為輸入又可以作為輸出,也就是該參數既需要傳入值,又可以返回值 2、如果存儲過程體僅僅只有一句話,begin end可以省略 存儲過程體中的每條sql語句的結尾要求必須加分號。 存儲過程的結尾可以使用 delimiter 重新設置 語法: delimiter 結束標記 案例: delimiter $ */ ~~~ ## 2.調用語法 ~~~ call 存儲過程名(實參列表); ~~~ 案例演示: ~~~ 案例1:創建存儲過程實現 根據女神名,查詢對應的男神信息 CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGIN SELECT bo.* FROM boys bo RIGHT JOIN beauty b ON bo.id = b.boyfriend_id WHERE b.name=beautyName; END; 調用 CALL myp2('柳巖'); ~~~ # 四、函數 含義:一組預先編譯好的SQL語句的集合,理解成批處理語句 1、提高代碼的重用性 2、簡化操作 3、減少了編譯次數并且減少了和數據庫服務器的連接次數,提高了效率 區別: 存儲過程:可以有0個返回,也可以有多個返回,適合做批量插入、批量更新 函數:有且僅有1 個返回,適合做處理數據后返回一個結果 ## 1.創建語法 ~~~ CREATE FUNCTION 函數名(參數列表) RETURNS 返回類型 BEGIN 函數體 END /* 注意: 1.參數列表 包含兩部分: 參數名 參數類型 2.函數體:肯定會有return語句,如果沒有會報錯 如果return語句沒有放在函數體的最后也不報錯,但不建議 return 值; 3.函數體中僅有一句話,則可以省略begin end 4.使用 delimiter語句設置結束標記 */ ~~~ ## 2.調用語法 ~~~ SELECT 函數名(參數列表) ~~~ 案例演示 ~~~ 1.無參有返回 案例:返回公司的員工個數 CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c INT DEFAULT 0;#定義局部變量 SELECT COUNT(*) INTO c#賦值 FROM employees; RETURN c; END ; SELECT myf1(); 2.有參有返回 案例1:根據員工名,返回它的工資 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN SET @sal=0;#定義用戶變量 SELECT salary INTO @sal #賦值 FROM employees WHERE last_name = empName; RETURN @sal; END ; SELECT myf2('k_ing') ; ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看