目錄
前言:
笔者环境:
准备工作:
1.新建两张数据表:student1, student2
2.向student1中新增数据
实现功能说明:
注意事项:
4.使用方式:
1.打印student1中的部分信息
2.复制表存储过程的编写(不带参数)
3.复制表存储过程的编写(带参数)
首頁 資料庫 mysql教程 MySQL存储结构的使用_MySQL

MySQL存储结构的使用_MySQL

Jun 02, 2016 am 08:49 AM
結構

前言:

今天公司老大让我做一个MySQL的调研工作,是关于MySQL的存储结构的使用。这里我会通过3个例子来介绍一下MySQL中存储结构的使用过程,以及一些需要注意的点。

笔者环境:

系统:Windows 7

MySQL:MySQL 5.0.96

准备工作:

1.新建两张数据表: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中新增数据

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);
登入後複製

实现功能说明:

1.打印student1中的部分信息
2.把student1中的部分数据复制到student2中
3.传入参数作为限制条件,把student1中的部分数据复制到student2中

注意事项:

在编写存储结构的时候,我们不能以分号(;)结束。因为我们的SQL语句就是以分号(;)结尾的。这里我们要修改一下存储结构的结束符号(&&)。

这里我们使用MySQL中的DELIMITER进行修改,并在存储结构创建完毕时,再改为分号(;)结束即可。

关于这一点在后面的例子中有所体现。在编写MySQL的触发器中,也会用到类似的情况。

使用方式:

1.打印student1中的部分信息

---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro1;
---------------------------------------------------------------
DELIMITER &&
CREATE PROCEDURE test_pro1()
BEGIN
  set @sentence = &#39;select * from student1 where age<19;&#39;;
  prepare stmt from @sentence;
  execute stmt;
  deallocate prepare stmt;
END &&
DELIMITER ;
登入後複製

2.复制表存储过程的编写(不带参数)

---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro2;
---------------------------------------------------------------
DELIMITER &&
create procedure test_pro2()
begin
    DECLARE stop_flag INT DEFAULT 0;
    DECLARE s_name TEXT default &#39;&#39;;
    DECLARE s_age INT default 0;
    
    DECLARE cur1 CURSOR FOR (select name, age from student1 where age<19);
        DECLARE CONTINUE HANDLER FOR SQLSTATE &#39;02000&#39; 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.复制表存储过程的编写(带参数)

---------------------------------------------------------------
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 &#39;&#39;;
    DECLARE s_age INT default 0;
    
    DECLARE cur1 CURSOR FOR (select name, age from student1 where age<p_age); continue="" cur1="" declare="declare" fetch="" for="" handler="" into="" open="" set="" sqlstate="" stop_flag="1;" while="">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 ;</p_age);>
登入後複製

4.使用方式:

call test_pro1();
or
call test_pro1(123);
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

lambda 表達式的語法和結構有什麼特色? lambda 表達式的語法和結構有什麼特色? Apr 25, 2024 pm 01:12 PM

Lambda表達式是無名稱的匿名函數,其語法為:(parameter_list)->expression。它們具有匿名性、多樣性、柯里化和閉包等特徵。在實際應用中,Lambda表達式可用於簡潔地定義函數,如求和函數sum_lambda=lambdax,y:x+y,並透過map()函數應用於列表來進行求和操作。

internet的基本結構與技術起源於什麼 internet的基本結構與技術起源於什麼 Dec 15, 2020 pm 04:48 PM

internet的基本架構與技術起源於ARPANET。 ARPANET是電腦網路技術發展中的一個里程碑,它的研究成果對促進網路技術的發展起到了重要的作用,並未internet的形成奠定了基礎。 arpanet(阿帕網)為美國國防部高級研究計劃署開發的世界上第一個運營的數據包交換網絡,它是全球互聯網的始祖。

深入解析MySQL.proc表的結構及用途 深入解析MySQL.proc表的結構及用途 Mar 15, 2024 pm 02:36 PM

MySQL.proc表是MySQL資料庫中儲存預存程序和函數資訊的系統表,透過深入了解其結構及用途,可以更好地理解預存程序和函數在MySQL中的運作機制,並進行相關的管理和最佳化。以下將詳細解析MySQL.proc表的結構及用途,並提供具體的程式碼範例。 1.MySQL.proc表的結構MySQL.proc表是一個系統表,儲存了所有預存程序和函數的定義和相關信息

如何使用HTML和CSS實作一個具有固定導航選單的佈局 如何使用HTML和CSS實作一個具有固定導航選單的佈局 Oct 26, 2023 am 11:02 AM

如何使用HTML和CSS實現一個具有固定導航選單的佈局在現代網頁設計中,固定導航選單是常見的佈局之一。它可以使導航選單始終保持在頁面頂部或側邊,使用戶可以輕鬆瀏覽網頁內容。本文將介紹如何使用HTML和CSS實作一個具有固定導航選單的佈局,並提供具體的程式碼範例。首先,需要建立一個HTML結構來呈現網頁的內容和導覽選單。以下是一個簡單的範例

如何在MySQL中設計商城的評估表結構? 如何在MySQL中設計商城的評估表結構? Oct 31, 2023 am 08:27 AM

如何在MySQL中設計商城的評估表結構?在一個商城系統中,評價是非常重要的功能之一。評價不僅可以提供給其他使用者參考,還可以幫助商家了解使用者對商品的回饋和意見。設計一個合理的評價表結構對於商城系統的運作和使用者體驗至關重要。本文將介紹如何在MySQL中設計商城的評估表結構,並提供具體的程式碼範例。首先,我們需要建立兩個基本的表:商品表和使用者表。商品表(produc

Python中常見的流程控制結構有哪些? Python中常見的流程控制結構有哪些? Jan 20, 2024 am 10:38 AM

Python中有四種常見的製程控制結構,分別是順序結構、條件結構、循環結構、跳轉結構。下面將一一介紹並提供對應的程式碼範例。順序結構:順序結構是程式從上到下依照預定的順序執行的結構,沒有特定的關鍵字或語法。範例程式碼:print("這是順序結構範例1")print("這是順序結構範例2")print("這是順

探秘Linux檔案系統的內部結構 探秘Linux檔案系統的內部結構 Mar 21, 2024 am 10:03 AM

標題:探秘Linux檔案系統的內部結構Linux作業系統以其穩定性和靈活性而聞名,檔案系統作為其核心之一,扮演著關鍵的角色。深入了解Linux檔案系統的內部結構不僅有助於我們理解作業系統的工作原理,還可以幫助我們更好地進行系統管理和最佳化。本文將以詳細的程式碼範例與解釋,探討Linux檔案系統的內部結構。一、檔案系統簡介檔案系統是電腦用於組織和儲存檔案以及對文

Oracle主目錄的結構與管理技巧 Oracle主目錄的結構與管理技巧 Mar 07, 2024 pm 04:03 PM

Oracle主目錄的結構與管理技巧Oracle資料庫作為業界領先的企業級資料庫管理系統,其主目錄結構與管理技巧對於資料庫管理員來說是非常重要的。本文將詳細介紹Oracle主目錄的架構、重要目錄和管理技巧,並提供具體的程式碼範例,幫助讀者更好地理解和管理Oracle資料庫。 Oracle主目錄結構在Oracle資料庫中,主目錄包含兩個重要的目錄:ORACLE_BA

See all articles