MySQL存儲(chǔ)結(jié)構(gòu)用法案例分析
本文實(shí)例講述了MySQL存儲(chǔ)結(jié)構(gòu)用法。分享給大家供大家參考,具體如下:
前言
今天公司老大讓我做一個(gè)MySQL的調(diào)研工作,是關(guān)于MySQL的存儲(chǔ)結(jié)構(gòu)的使用。這里我會(huì)通過(guò)3個(gè)例子來(lái)介紹一下MySQL中存儲(chǔ)結(jié)構(gòu)的使用過(guò)程,以及一些需要注意的點(diǎn)。
筆者環(huán)境
系統(tǒng):Windows 7
MySQL:MySQL 5.0.96
準(zhǔn)備工作
1.新建兩張數(shù)據(jù)表:student1, student2
新建student1
DROP TABLE IF EXISTS student1; CREATE TABLE student1 ( id INT NOT NULL auto_increment, name TEXT, age INT, PRIMARY KEY(id) );
新建student2
DROP TABLE IF EXISTS student2; CREATE TABLE student2 ( id INT NOT NULL auto_increment, name TEXT, age INT, PRIMARY KEY(id) );
2.向student1中新增數(shù)據(jù)
INSERT INTO student1 (name, age) VALUES ('xiaoming', 18); INSERT INTO student1 (name, age) VALUES ('xiaohong', 17); INSERT INTO student1 (name, age) VALUES ('xiaogang', 19); INSERT INTO student1 (name, age) VALUES ('xiaoyu', 18); INSERT INTO student1 (name, age) VALUES ('xiaohua', 20);
實(shí)現(xiàn)功能說(shuō)明
1.打印student1中的部分信息
2.把student1中的部分?jǐn)?shù)據(jù)復(fù)制到student2中
3.傳入?yún)?shù)作為限制條件,把student1中的部分?jǐn)?shù)據(jù)復(fù)制到student2中
注意事項(xiàng)
在編寫存儲(chǔ)結(jié)構(gòu)的時(shí)候,我們不能以分號(hào)(;)結(jié)束。因?yàn)槲覀兊腟QL語(yǔ)句就是以分號(hào)(;)結(jié)尾的。這里我們要修改一下存儲(chǔ)結(jié)構(gòu)的結(jié)束符號(hào)(&&)。
這里我們使用MySQL中的DELIMITER進(jìn)行修改,并在存儲(chǔ)結(jié)構(gòu)創(chuàng)建完畢時(shí),再改為分號(hào)(;)結(jié)束即可。
關(guān)于這一點(diǎn)在后面的例子中有所體現(xiàn)。在編寫MySQL的觸發(fā)器中,也會(huì)用到類似的情況。
使用方式
1.打印student1中的部分信息
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro1; --------------------------------------------------------------- DELIMITER && CREATE PROCEDURE test_pro1() BEGIN set @sentence = 'select * from student1 where age<19;'; prepare stmt from @sentence; execute stmt; deallocate prepare stmt; END && DELIMITER ;
2.復(fù)制表存儲(chǔ)過(guò)程的編寫(不帶參數(shù))
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro2; --------------------------------------------------------------- DELIMITER && create procedure test_pro2() begin DECLARE stop_flag INT DEFAULT 0; DECLARE s_name TEXT default ''; DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<19); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1; open cur1; fetch cur1 into s_name, s_age; while stop_flag<>1 DO insert into student2(name, age) values(s_name, s_age); fetch cur1 into s_name, s_age; end while; close cur1; end && DELIMITER ;
3.復(fù)制表存儲(chǔ)過(guò)程的編寫(帶參數(shù))
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro3; --------------------------------------------------------------- DELIMITER && create procedure test_pro3(IN p_age INT) begin DECLARE stop_flag INT DEFAULT 0; DECLARE s_name TEXT default ''; DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<p_age); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1; open cur1; fetch cur1 into s_name, s_age; while stop_flag<>1 DO insert into student2(name, age) values(s_name, s_age); fetch cur1 into s_name, s_age; end while; close cur1; end && DELIMITER ;
這里的SQLSTATE '02000'和NOT FOUND系統(tǒng)返回值是一樣的。
4.使用方式
call test_pro1();
or
call test_pro1(123);
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
- MySQL兩種表存儲(chǔ)結(jié)構(gòu)MyISAM和InnoDB的性能比較測(cè)試
- Mysql通過(guò)Adjacency List(鄰接表)存儲(chǔ)樹(shù)形結(jié)構(gòu)
- mysql 存儲(chǔ)過(guò)程中變量的定義與賦值操作
- mysql存儲(chǔ)過(guò)程詳解
- 更改Mysql數(shù)據(jù)庫(kù)存儲(chǔ)位置的具體步驟
- mysql存儲(chǔ)過(guò)程 游標(biāo) 循環(huán)使用介紹
- mysql 海量數(shù)據(jù)的存儲(chǔ)和訪問(wèn)解決方案
- MySQL存儲(chǔ)引擎總結(jié)
- MySQL存儲(chǔ)毫秒數(shù)據(jù)的方法
- MySql存儲(chǔ)過(guò)程與函數(shù)詳解
相關(guān)文章
MySQL 使用事件(Events)完成計(jì)劃任務(wù)
事件(Events) 是在 MySQL 5.1后引入的,有點(diǎn)類似操作系統(tǒng)的計(jì)劃任務(wù)(cron),但是周期性任務(wù)是內(nèi)置在 MySQL 服務(wù)端執(zhí)行的。本文講述MySQL如何用事件完成計(jì)劃任務(wù)2021-05-05完美解決mysql客戶端授權(quán)后連接失敗的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決mysql客戶端授權(quán)后連接失敗的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03mysql刪除重復(fù)行的實(shí)現(xiàn)方法
這篇文章主要介紹了mysql刪除重復(fù)行的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06