欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql存儲過程與函數(shù)學(xué)習(xí)與實踐方式

 更新時間:2017年12月08日 10:14:51   作者:WalkerShen  
下面小編就為大家分享一篇mysql存儲過程與函數(shù)學(xué)習(xí)與實踐方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

什么是存儲過程?

存儲過程是一個預(yù)編譯的SQL語句,

優(yōu)點是允許模塊化的設(shè)計,就是說只需要創(chuàng)建一次,以后在該程序中就可以調(diào)用多次。

如果某次操作需要執(zhí)行多次SQL,使用存儲過程比單純SQL語句執(zhí)行要快。

其實就是跟編程語言一樣,編寫一個方法,然后可以進行復(fù)用的意思,例如可以編寫一個根據(jù)名字查詢學(xué)生數(shù)據(jù)的方法,然后就不需要每次都去寫了,使用的時候也方便很多

有哪些優(yōu)缺點?

優(yōu)點

  • 1)存儲過程是預(yù)編譯過的,執(zhí)行效率高。
  • 2)存儲過程的代碼直接存放于數(shù)據(jù)庫中,通過存儲過程名直接調(diào)用,減少網(wǎng)絡(luò)通訊。
  • 3)安全性高,執(zhí)行存儲過程需要有一定權(quán)限的用戶。
  • 4)存儲過程可以重復(fù)使用,減少數(shù)據(jù)庫開發(fā)人員的工作量。

缺點

  • 1)調(diào)試麻煩,但是用 PL/SQL Developer 調(diào)試很方便!彌補這個缺點。
  • 2)移植問題,數(shù)據(jù)庫端代碼當然是與數(shù)據(jù)庫相關(guān)的。但是如果是做工程型項目,基本不存在移植問題。
  • 3)重新編譯問題,因為后端代碼是運行前編譯的,如果帶有引用關(guān)系的對象發(fā)生改變時,受影響的存儲過程、包將需要重新編譯(不過也可以設(shè)置成運行時刻自動編譯)。
  • 4)如果在一個程序系統(tǒng)中大量的使用存儲過程,到程序交付使用的時候隨著用戶需求的增加會導(dǎo)致數(shù)據(jù)結(jié)構(gòu)的變化,接著就是系統(tǒng)的相關(guān)問題了,最后如果用戶想維護該系統(tǒng)可以說是很難很難、而且代價是空前的,維護起來更麻煩。

關(guān)鍵語法

聲明語句結(jié)束符,可以自定義:
DELIMITER $$ 或 DELIMITER //

聲明存儲過程:
CREATE PROCEDURE demo_in_parameter(IN p_in int)  

存儲過程開始和結(jié)束符號:
BEGIN .... END    

變量賦值:
SET @p_in=1  

變量定義:
DECLARE l_int int unsigned default 4000000; 

創(chuàng)建mysql存儲過程、存儲函數(shù):
create procedure 存儲過程名(參數(shù))

存儲過程體:
create function 存儲函數(shù)名(參數(shù))

使用案例

創(chuàng)建一個存儲過程,可以根據(jù)學(xué)生的名字去查詢學(xué)生的數(shù)據(jù)

1、創(chuàng)建表

CREATE TABLE `student` (
  `id` varchar(64) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `class_id` varchar(64) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、創(chuàng)建存儲過程|函數(shù)

# 函數(shù)定義開頭
delimiter $$
# create procedure 函數(shù)名(in|out|input 參數(shù)名 參數(shù)類型)
# 參數(shù)類型 如果是varchar的話要表明長度,如果是int的話就不需要
create procedure select_student(in s_name varchar(32))
# begin和end之前寫sql語句
begin
	select * from student s
	where s.name=s_name;
end
# 使用$$代表函數(shù)結(jié)束
$$

3、測試

# 先插入數(shù)據(jù)
insert into student(id,name,class_id) values(1,"walker","11")

# 設(shè)置變量,調(diào)用函數(shù)
set @s_name="walker";
call select_student(@s_name)

4、查詢結(jié)果

1    walker    11

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一篇文章看懂SQL中的開窗函數(shù)

    一篇文章看懂SQL中的開窗函數(shù)

    開窗函數(shù)也叫分析函數(shù)有兩類,一類是聚合開窗函數(shù),一類是排序開窗函數(shù),下面這篇文章主要給大家介紹了關(guān)于SQL中開窗函數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法

    mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法

    這篇文章主要介紹了mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • CentOS6.9下mysql 5.7.17安裝配置方法圖文教程

    CentOS6.9下mysql 5.7.17安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了CentOS6.9下mysql 5.7.17安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • mysql 優(yōu)化日記

    mysql 優(yōu)化日記

    mysql 優(yōu)化日記 使用mysql的朋友可以參考下,大家知道如果mysql優(yōu)化與沒優(yōu)化性能會相差不少呢。
    2009-07-07
  • MySQL主從同步中的server-id示例詳解

    MySQL主從同步中的server-id示例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL主從同步中server-id的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • mysql 8.0 安裝配置方法教程

    mysql 8.0 安裝配置方法教程

    這篇文章主要為大家分享了mysql 8.0安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-11-11
  • MySQL恢復(fù)中的幾個問題解決方法

    MySQL恢復(fù)中的幾個問題解決方法

    這篇文章主要介紹了MySQL恢復(fù)中的幾個問題,需要的朋友可以參考下
    2016-01-01
  • MySql nion與Limit查詢介紹

    MySql nion與Limit查詢介紹

    這篇文章主要為大家詳細介紹一下MySQL數(shù)據(jù)庫中union、limit查詢的使用,文中的示例代碼講解詳細,對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-09-09
  • mysql 控制臺操作

    mysql 控制臺操作

    其實MYSQL的對數(shù)據(jù)庫的操作與其它的SQL類數(shù)據(jù)庫大同小異,您最好找本將SQL的書看看。
    2009-06-06
  • linux服務(wù)器清空MySQL的history歷史記錄 刪除mysql操作記錄

    linux服務(wù)器清空MySQL的history歷史記錄 刪除mysql操作記錄

    mysql歷史記錄上可能留下了很多敏感信息,比如密碼什么的,需及時清空歷史記錄,下面分享一下inux服務(wù)器清空MySQL的history歷史記錄的方法
    2014-01-01

最新評論