tnblog
首页
视频
资源
登录

My SQL存储过程

4584人阅读 2019/8/16 9:31 总访问:15049 评论:0 收藏:0 手机
分类: My SQL

                 

  1. 语法:delimiter//
  2.        create procedure  存储过程名称(参数)
  3.        begin
  4.             相关代码.......
  5.        end//
  6.        delimiter;
  7.        
  8.        调用:
  9.        call 存储过程名称(参数)
  10.        
  11.        注意:My SQL5.0以前并不支持存储过程.
  12.        
  13.        My SQL存储过程特点:
  14.        (1).不能有select语句
  15.         (2).不能使用return(return只能在函数中调用).
  16.        
  17. 示例:
  18. drop database if exists BookDB;
  19. create database BookDB;
  20. -- 获取权限
  21. alter  database BookDB CHARACTER set utf8;
  22. -- 连接库
  23. use BookDB;
  24. -- 图书类型表
  25. drop table if exists BookType;
  26. create table BookType
  27. (
  28. type_id      int           not null    primary key,
  29. type_name   varchar(20)   not null,
  30.   type_remark VARCHAR(50) null  DEFAULT'略'
  31. );
  32. insert into BookType values(1001,'历史经典',DEFAULT);
  33. insert into BookType values(1002,'教育类文学',DEFAULT);
  34. insert into BookType values(1003,'小说类',DEFAULT);
  35. insert into BookType values(1004,'儿童文学',DEFAULT);
  36. insert into BookType values(1005,'自然科学',DEFAULT);
  37. -- 图书信息表
  38. drop table if exists Book;
  39. create table Book
  40. (
  41. book_id       int             not null       primary key,
  42. book_name     varchar(20)   not null,
  43.   book_author   VARCHAR(20) not null,
  44.   book_date     VARCHAR(20)     not null,
  45.   book_type     int             not null,
  46.   book_remark   VARCHAR(50)     null         default'略',
  47. price         decimal(6,2)    not null,
  48. book_num      int             not null,
  49.   foreign key(book_type) references BookType(type_id)
  50. );
  51. insert into Book values(2001,'西游记','吴承恩','1986-1-2',1001,default,55,10);
  52. insert into Book values(2002,'红楼梦','曹雪芹','1986-1-2',1001,default,77,12);
  53. insert into Book values(2003,'三国演义','罗贯中','1986-1-2',1001,default,60,20);
  54. insert into Book values(2004,'水浒传','施耐庵','1986-1-2',1001,default,40,30);
  55. insert into Book values(2005,'满分作文','不详','2016-1-2',1002,default,20,20);
  56. insert into Book values(2006,'单词速记','不详','2017-1-2',1002,default,10,10);
  57. insert into Book values(2007,'王后雄文学','王后雄','2016-5-3',1002,default,25,20);
  58. insert into Book values(2008,'全文解析','不详','2018-1-2',1002,default,30,25);
  59. insert into Book values(2009,'斗破苍穹','唐家三少','2005-12-2',1003,default,50,50);
  60. insert into Book values(2010,'斗罗大陆','唐家三少','2006-10-2',1003,default,30,10);
  61. insert into Book values(2011,'圣墟','唐家三少','2007-1-2',1003,default,10,20);
  62. insert into Book values(2012,'星辰变','辰东','2008-1-2',1003,default,12,15);
  63. insert into Book values(2013,'安徒生童话','安徒生','2003-1-2',1004,default,10,20);
  64. insert into Book values(2014,'格林童话','格林','2004-1-2',1004,default,15,30);
  65. insert into Book values(2015,'海的女儿','安徒生','2001-6-26',1004,default,20,10);
  66. insert into Book values(2016,'睡美人','川端康成','2002-7-8',1004,default,30,10);
  67. insert into Book values(2017,'皇帝的新装','安徒生','1999-1-2',1004,default,50,40);
  68. insert into Book values(2018,'地理大百科','不详','2005-1-2',1005,default,20,30);
  69. insert into Book values(2019,'动物大百科','不详','2006-6-21',1005,default,30,20);
  70. insert into Book values(2020,'人与自然','不详','1986-4-2',1004,default,20,20);
  71. SELECT*FROM BookType;
  72. SELECT*FROM Book;
  73. desc book;
  74. /*************************************************************************************/
  75. #创建数据库
  76. drop database if exists studb;
  77. create database studb;
  78. #调协编号
  79. alter database studb CHARACTER set utf8;
  80. #切换
  81. use studb;
  82. #创建表一:学生信息表 
  83. drop table if exists stuinfo;
  84. create table stuinfo
  85. (
  86. stuno varchar(10) not null,
  87. stuname varchar(10) not null,
  88. stusex enum('男','女') not null,
  89. stuphone char(11) not null,
  90. stuaddrss varchar(200) null
  91. );
  92. #创建表二:
  93. drop table if exists courseinfo;  
  94. create table courseinfo
  95. (
  96. cid int   primary key auto_increment,
  97. cname varchar(20) not null
  98. );
  99. #创建表三:成绩表
  100. drop table if exists scoreinfo;
  101. create table scoreinfo
  102. (
  103. sid int  primary key auto_increment,
  104. stuno varchar(10) not NULL,  -- 外键,引用stuinfo(stuno)
  105. cid int not null,  -- 外键,引用courseinfo(cid)
  106. bishi int not null,
  107. jishi int not null
  108. );
  109. # 为stuinfo 表添加主键列stuno
  110. /*
  111. 主键特点:
  112.  一个表中可以没有主键,但如果有最多一个
  113. 联合主键:由多个列构成的主键
  114. */
  115. alter table stuinfo
  116. add constraint PK_stuinfo_stuno  primary key(stuno);
  117. # 为stuinfo表添加默认约束stuaddress
  118. alter table stuinfo
  119.  alter column stuaddrss set default '地址不详';
  120. #为course表添加唯一约束cname
  121. alter table courseinfo
  122. add constraint UQ_courseinfo_cname unique(cname);
  123. #为scoreinfo表添加外键
  124. #1.stuno去引用stuinfo表的stuno
  125. alter table scoreinfo
  126. add constraint FK1 foreign key(stuno) references stuinfo(stuno);
  127. #2.cid去引用courseinfo表的cid
  128. alter table scoreinfo
  129. add constraint Fk2 foreign key(cid) references courseinfo(cid);
  130. desc stuinfo;
  131. desc courseinfo;
  132. desc scoreinfo;
  133. select * from stuinfo;
  134. select * from courseinfo;
  135. select * from  scoreinfo;
  136. insert into stuinfo values('T468001','小黑黑','男','13112345678',default);
  137. insert into stuinfo values('T468002','小花花',2,'15112345678',default);
  138. insert into stuinfo values('T468003','小黑黑',1,'15245869365','北京');
  139. insert into stuinfo values('T468004','张秋丽',1,'13657859654','上海');
  140. insert into stuinfo values('T468005','韦小宝',2,'15145263542','河南');
  141. insert into stuinfo values('T468006','张三个',2,'18745263596','成都');
  142. insert into courseinfo values(null,'C#');
  143. insert into courseinfo values(null,'SQLSERVER');
  144. insert into courseinfo values(null,'JAVASCRIPT');
  145. insert into courseinfo values(null,'ASP.NET');
  146. insert into scoreinfo values(null,'T468001',186,82 );
  147. insert into scoreinfo values(null,'T468001',2,77,67);
  148. insert into scoreinfo values(null,'T468001',3,85,99);
  149. insert into scoreinfo values(null,'T468002',2,36,52);
  150. insert into scoreinfo values(null,'T468002',3,45,22);
  151. insert into scoreinfo values(null,'T468002',4,98,90);
  152. insert into scoreinfo values(null,'T468005',1,66,60);
  153. insert into scoreinfo values(null,'T468005',2,78,52);
  154. insert into scoreinfo values(null,'T468005',3,99,56);
  155. insert into scoreinfo values(null,'T468005',4,25,52);
  156. select * from stuinfo;
  157. select * from courseinfo;
  158. select * from scoreinfo;
  159. #定义存储过程,根据给入学号,获取该学员及格的科目数量(带输入和输出参)studb
  160. drop procedure if exists proc_getsum;
  161. delimiter //
  162. create procedure proc_getsum(in sno varchar(10),out count int)
  163. BEGIN
  164. set count = (select count(*) from scoreinfo where stuno = (select stuno from stuinfo where stuno=sno) and bishi >=60 and jishi >=60);
  165. end//
  166. delimiter ;
  167. -- 调用
  168. call proc_getsum('T468001',@sum1);
  169. select @sum1 as '及格科数';


评价

Oracle存储过程

一个简单的带输入输出参数的存储过程(求两数之和)createorreplaceprocedureproc_sum(p1int,p2int,presultoutint) as be...

mysql 存储过程报错:delimiter

最近刚学sql,学到了存储过程,每当练习的时候就一直出现问题。 现在记录CREATEPROCEDUREproc_out(OUTstuidINT) begin se...

SqlServer存储过程拼接sql语句,分页

在写有些存储过程的时候需要进行sql的拼接,然后在使用exec函数执行sql语句注意字符串的拼接,看下面一段存储过程的sql语句...

Oracle 存储过程与函数

存储过程在应用程序中经常需要执行特定的一些操作,基于这些操作建立一个特定的过程。建立过程语法:SQL>CREATE [OR REP...

sqlserver存储过程

什么是存储过程: 预编译的sql语句,可以放很多sql语句,里边可以写条件,循环,可以把一些逻辑放到存储过程里边处理 比如...

sqlserver获取存储过程中创建的语句

exec sp_helptext 存储过程名称

c执行存储过程

含有输入输出参数的存储过程(这里的存储过程是oracle)using(OracleConnectionconn=newOracleConnection("server=127...

sql 判断数据库、表、列、索引、视图、存储过程、临时表、函数笔记

前言欢迎使用tnblog注意使用模板的时候选择保留原有内容哦,不然会不小心替换你的已经写好的内容哦。我希望有个如你一般的人...

SQL数据库存储过程

前言什么是存储过程?优点:1.有点类似C#里的方法,封装性,减少sql语句代码量。2.存储过程只在创造时进行编译,以后每次执...

mysql存储过程与函数

[TOC]存储过程的介绍预编译的sql语句,可以放很多sql语句,里边可以写条件,循环,可以把一些逻辑放到存储过程里边处理,比...

存储过程中处理分页数据

前言有个比较特殊的需求,从存储过程中处理分页数据。需要从存储过程中返回两个结果集(分页逻辑在存储过程中处理)如下图...
我的青春我做主!
排名
75
文章
3
粉丝
4
评论
1
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术