国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

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

2024-07-25 19:08:38
字體:
供稿:網(wǎng)友

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

前言

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

筆者環(huán)境

系統(tǒng):Windows 7

MySQL:MySQL 5.0.96

準備工作

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);

實現(xiàn)功能說明

1.打印student1中的部分信息

2.把student1中的部分數(shù)據(jù)復制到student2中

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

注意事項

在編寫存儲結(jié)構(gòu)的時候,我們不能以分號(;)結(jié)束。因為我們的SQL語句就是以分號(;)結(jié)尾的。這里我們要修改一下存儲結(jié)構(gòu)的結(jié)束符號(&&)。

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

關(guā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 age<19;'; prepare stmt from @sentence; execute stmt; deallocate prepare stmt;END &&DELIMITER ;

2.復制表存儲過程的編寫(不帶參數(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.復制表存儲過程的編寫(帶參數(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);

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


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 师宗县| 沧州市| 大姚县| 罗江县| 岢岚县| 怀安县| 峨眉山市| 客服| 卢龙县| 若尔盖县| 祁连县| 鄯善县| 娱乐| 三门县| 玉山县| 彭州市| 九江县| 青海省| 扎赉特旗| 南涧| 莒南县| 唐河县| 余干县| 湘阴县| 桦川县| 麦盖提县| 大港区| 万安县| 留坝县| 阜城县| 永善县| 耿马| 荔波县| 永济市| 阿克苏市| 瑞安市| 偏关县| 寿阳县| 常德市| 陕西省| 丹巴县|