찾다
데이터 베이스MySQL 튜토리얼MySQL存储结构的使用_MySQL

前言:

今天公司老大让我做一个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으로 문의하세요.
lambda 表达式的语法和结构有什么特点?lambda 表达式的语法和结构有什么特点?Apr 25, 2024 pm 01:12 PM

Lambda表达式是无名称的匿名函数,其语法为:(parameter_list)->expression。它们具有匿名性、多样性、柯里化和闭包等特点。实际应用中,Lambda表达式可用于简洁地定义函数,如求和函数sum_lambda=lambdax,y:x+y,并通过map()函数应用于列表来进行求和操作。

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

MySQL.proc表是MySQL数据库中存储存储过程和函数信息的系统表,通过深入了解其结构及用途,可以更好地理解存储过程和函数在MySQL中的运行机制,并进行相关的管理和优化。下面将详细解析MySQL.proc表的结构及用途,并提供具体的代码示例。1.MySQL.proc表的结构MySQL.proc表是一个系统表,存储了所有存储过程和函数的定义和相关信息

internet的基本结构与技术起源于什么internet的基本结构与技术起源于什么Dec 15, 2020 pm 04:48 PM

internet的基本结构与技术起源于ARPANET。ARPANET是计算机网络技术发展中的一个里程碑,它的研究成果对促进网络技术的发展起到了重要的作用,并未internet的形成奠定了基础。arpanet(阿帕网)为美国国防部高级研究计划署开发的世界上第一个运营的封包交换网络,它是全球互联网的始祖。

如何使用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文件系统的内部结构。一、文件系统简介文件系统是计算机用于组织和存储文件以及对文

「画皮」噩梦成真?这个披着「人皮」的机器人,登上Cell子刊「画皮」噩梦成真?这个披着「人皮」的机器人,登上Cell子刊Apr 12, 2023 am 10:16 AM

​想象一只手指轻轻地、慢慢地划过你的后背,沿着你的脊柱向上游走,然后慢慢地停下...你感觉有些痒,然而此时你还没从睡梦中完全清醒过来。你睡眼朦胧地半睁开眼睛,感受着从后背传来的丝丝凉意。 就在你转过身去,想看看一大早是谁在你身边的时候....「***!」你大叫着连滚带爬地下了床,赫然发现和你同床共枕的是个机器人!你疑云窦生,琢磨着这机器人是怎么像人一样摸自己的。你定睛一看,发现这个机器人竟然裹着一层人皮……等等,这是个什么东西……说到人皮,多少都和恐怖沾点边。小编印象中唯一以人皮打头的词语,是小

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경