佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > MySQL存儲結(jié)構(gòu)用法案例分析

MySQL存儲結(jié)構(gòu)用法案例分析

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) 呼叫中心市場需求 服務(wù)外包 Linux服務(wù)器 地方門戶網(wǎng)站 百度競價(jià)排名 AI電銷

本文實(shí)例講述了MySQL存儲結(jié)構(gòu)用法。分享給大家供大家參考,具體如下:

前言

今天公司老大讓我做一個MySQL的調(diào)研工作,是關(guān)于MySQL的存儲結(jié)構(gòu)的使用。這里我會通過3個例子來介紹一下MySQL中存儲結(jié)構(gòu)的使用過程,以及一些需要注意的點(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)功能說明

1.打印student1中的部分信息

2.把student1中的部分?jǐn)?shù)據(jù)復(fù)制到student2中

3.傳入?yún)?shù)作為限制條件,把student1中的部分?jǐn)?shù)據(jù)復(fù)制到student2中

注意事項(xiàng)

在編寫存儲結(jié)構(gòu)的時候,我們不能以分號(;)結(jié)束。因?yàn)槲覀兊腟QL語句就是以分號(;)結(jié)尾的。這里我們要修改一下存儲結(jié)構(gòu)的結(jié)束符號()。

這里我們使用MySQL中的DELIMITER進(jìn)行修改,并在存儲結(jié)構(gòu)創(chuàng)建完畢時,再改為分號(;)結(jié)束即可。

關(guān)于這一點(diǎn)在后面的例子中有所體現(xiàn)。在編寫MySQL的觸發(fā)器中,也會用到類似的情況。

使用方式

1.打印student1中的部分信息

---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro1;
---------------------------------------------------------------
DELIMITER 
CREATE PROCEDURE test_pro1()
BEGIN
 set @sentence = 'select * from student1 where age19;';
 prepare stmt from @sentence;
 execute stmt;
 deallocate prepare stmt;
END 
DELIMITER ;

2.復(fù)制表存儲過程的編寫(不帶參數(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 age19);
    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ù)制表存儲過程的編寫(帶參數(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 agep_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存儲過程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》

希望本文所述對大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

您可能感興趣的文章:
  • MySQL兩種表存儲結(jié)構(gòu)MyISAM和InnoDB的性能比較測試
  • Mysql通過Adjacency List(鄰接表)存儲樹形結(jié)構(gòu)
  • mysql 存儲過程中變量的定義與賦值操作
  • mysql存儲過程詳解
  • 更改Mysql數(shù)據(jù)庫存儲位置的具體步驟
  • mysql存儲過程 游標(biāo) 循環(huán)使用介紹
  • mysql 海量數(shù)據(jù)的存儲和訪問解決方案
  • MySQL存儲引擎總結(jié)
  • MySQL存儲毫秒數(shù)據(jù)的方法
  • MySql存儲過程與函數(shù)詳解

標(biāo)簽:仙桃 衡水 銅川 湘潭 黃山 崇左 蘭州 湖南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL存儲結(jié)構(gòu)用法案例分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    三门县| 仙桃市| 徐水县| 颍上县| 梧州市| 宜昌市| 隆回县| 大余县| 米泉市| 休宁县| 武威市| 安仁县| 滦平县| 通许县| 武安市| 宿迁市| 黄冈市| 黔西县| 漾濞| 阿坝| 军事| 华坪县| 珲春市| 海城市| 巩义市| 福泉市| 邢台市| 商洛市| 资源县| 上虞市| 满洲里市| 文安县| 双江| 罗定市| 乐亭县| 册亨县| 平原县| 河东区| 金坛市| 吴川市| 秦安县|