最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

什么是存儲(chǔ)過(guò)程?

存儲(chǔ)過(guò)程是一個(gè)預(yù)編譯的SQL語(yǔ)句,

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

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

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

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

優(yōu)點(diǎn)

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

缺點(diǎn)

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

關(guān)鍵語(yǔ)法

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

聲明存儲(chǔ)過(guò)程:
CREATE PROCEDURE demo_in_parameter(IN p_in int)  

存儲(chǔ)過(guò)程開始和結(jié)束符號(hào):
BEGIN .... END    

變量賦值:
SET @p_in=1  

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

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

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

使用案例

創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,可以根據(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)建存儲(chǔ)過(guò)程|函數(shù)

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

3、測(cè)試

# 先插入數(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é)

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

相關(guān)文章

  • MySQL修改存儲(chǔ)過(guò)程的詳細(xì)步驟

    MySQL修改存儲(chǔ)過(guò)程的詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于MySQL修改存儲(chǔ)過(guò)程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • MySQL中使用表別名與字段別名的基本教程

    MySQL中使用表別名與字段別名的基本教程

    這篇文章主要介紹了MySQL中使用表別名與字段別名的基本教程,利用SELECT語(yǔ)句和AS子句進(jìn)行取別名的操作,需要的朋友可以參考下
    2015-12-12
  • mysql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn)與操作小結(jié)

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn)與操作小結(jié)

    這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn)與操作,總結(jié)分析了mysql數(shù)據(jù)庫(kù)修改數(shù)據(jù)表、增刪改查及數(shù)據(jù)庫(kù)函數(shù)基本功能,需要的朋友可以參考下
    2020-01-01
  • MySQL中符號(hào)@的作用

    MySQL中符號(hào)@的作用

    本文主要介紹了MySQL中符號(hào)@的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • mysql數(shù)據(jù)庫(kù)數(shù)據(jù)批量插入的實(shí)現(xiàn)

    mysql數(shù)據(jù)庫(kù)數(shù)據(jù)批量插入的實(shí)現(xiàn)

    本文介紹了在MySQL數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)批量插入和性能測(cè)試的方法,包括使用Navicat批量插入數(shù)據(jù)、編寫SQL測(cè)試、索引的創(chuàng)建和使用、查詢測(cè)試以及提升SQL性能的優(yōu)化方法,感興趣的可以參考一下
    2024-11-11
  • MySQL數(shù)據(jù)庫(kù)中的安全設(shè)置方案

    MySQL數(shù)據(jù)庫(kù)中的安全設(shè)置方案

    MySQL 是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器,它是一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn)。MySQL是現(xiàn)在流行的關(guān)系數(shù)據(jù)庫(kù)中其中的一種,相比其它的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)來(lái)說(shuō),MySQL具有小巧、功能齊全、查詢迅捷等優(yōu)點(diǎn)。MySQL 主要目標(biāo)是快速、健壯和易用。
    2015-04-04
  • MySQL 元數(shù)據(jù)鎖及問題排查的解決

    MySQL 元數(shù)據(jù)鎖及問題排查的解決

    MySQL中的元數(shù)據(jù)鎖主要用于管理并發(fā)操作下的數(shù)據(jù)字典一致性,本文主要介紹了MySQL 元數(shù)據(jù)鎖及問題排查的解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • 解壓版MYSQL安裝及遇到的錯(cuò)誤及解決方法

    解壓版MYSQL安裝及遇到的錯(cuò)誤及解決方法

    這篇文章主要介紹了解壓版MYSQL安裝及遇到的錯(cuò)誤及解決方法,需要的朋友可以參考下
    2018-11-11
  • MySQL root密碼忘記后更優(yōu)雅的解決方法

    MySQL root密碼忘記后更優(yōu)雅的解決方法

    這篇文章主要給大家介紹了關(guān)于MySQL root密碼忘記后更優(yōu)雅的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 連接mysql報(bào)錯(cuò)——沒有設(shè)置“usessl=false”的問題

    連接mysql報(bào)錯(cuò)——沒有設(shè)置“usessl=false”的問題

    這篇文章主要介紹了連接mysql報(bào)錯(cuò)——沒有設(shè)置“usessl=false”的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論

宝坻区| 黑山县| 密山市| 长岛县| 广丰县| 大城县| 襄樊市| 萍乡市| 将乐县| 积石山| 尼玛县| 阜新市| 岳西县| 礼泉县| 隆林| 当阳市| 白河县| 仙居县| 兴文县| 太白县| 陆川县| 海兴县| 马山县| 嵊泗县| 昔阳县| 中阳县| 金秀| 德格县| 无为县| 朝阳区| 汕头市| 新野县| 鄯善县| 云南省| 宁明县| 德惠市| 鲜城| 北辰区| 墨脱县| 资兴市| 武安市|