-- 索引 INDEX
CREATE INDEX idx_sname ON student( sname(4));
ALTER TABLE teacher add index idx_tname(tname);
DROP INDEX idx_sname on student;
-- 视图 VIEW
create VIEW v_stu
AS
 SELECT sname,degree from student s, score sc
 where s.sno=sc.sno;
SELECT * from v_stu;
-- 存储过程 PROCEDURE
--  创建 INSERT PROCEDURE
DROP PROCEDURE IF EXISTS `P_INSERT_STUDENT`; 
CREATE PROCEDURE P_INSERT_STUDENT(
 IN xueH VARCHAR(3),
 IN xingM VARCHAR(4),
 IN xingB VARCHAR(2),
 IN shengR DATETIME,
 IN banJ VARCHAR(5)

BEGIN 
     SET @xueH = xueH; 
     SET @xingM = xingM; 
     SET @xingB = xingB;
     SET @shengR = shengR; 
   SET @banJ = banJ;  
     SET @insertSql = CONCAT('INSERT INTO STUDENT VALUES(?,?,?,?,?)'); 
     PREPARE stmtinsert FROM @insertSql; 
     EXECUTE stmtinsert USING @xueH,@xingM,@xingB,@shengR,@banJ; 
     DEALLOCATE PREPARE stmtinsert; 
END; 
 -- 存储过程调用
CALL P_INSERT_STUDENT(412,'黄一','女','1990-12-01 10:20:01','304'); 
CALL P_INSERT_STUDENT(413,'黄二','男','1992-12-01 10:20:01','304'); 
CALL P_INSERT_STUDENT(414,'黄三','男','1993-12-01 10:20:01','304'); 
CALL P_INSERT_STUDENT(416,'黄五','女','1992-02-01 10:20:01','304'); 
 -- 结果验证
SELECT * from student;
-- 创建存储过程 查询
DROP PROCEDURE IF EXISTS `pro_get_info`;
CREATE PROCEDURE pro_get_info(
 IN ckh VARCHAR(5)
)
BEGIN
 SET @ckh=ckh;
 SET @selectSQL = CONCAT('select s.*,cno,DEGREE from student s,score sc
 where s.sno=sc.sno and cno=?'); 
     PREPARE stmtSELECT FROM @selectSQL; 
     EXECUTE stmtSELECT USING @ckh; 
     DEALLOCATE PREPARE stmtSELECT; 
END;
CALL pro_get_info('3-105');
CALL pro_get_info('3-245');
--  触发器 TRIGGER
-- 创建 INSERT TRIGGER
DROP TRIGGER IF EXISTS `t_insert_score`;
CREATE TRIGGER t_insert_score AFTER INSERT ON student FOR EACH ROW
BEGIN
  DECLARE sno VARCHAR(3) ;
  DECLARE cno VARCHAR(35) ;
  DECLARE degree DECIMAL(10) ;
    INSERT into score VALUES(111,'3-105','99');
END;
-- 结果验证
SELECT * from score;
##################################################
#  批量造数据,插入数据库
####################################################
#创建测试表
DROP TABLE IF EXISTS test.test;
CREATE TABLE test.test(
 id int(10) not null auto_increment,
 a int(10) not null,
 b int(10) not null,
 c int(10) not null,
 PRIMARY key (`id`)
)ENGINE INNODB DEFAULT CHARSET utf8 COMMENT '测试表';
 
#清空数据
TRUNCATE table test.test;
 
#定义存储过程
delimiter //
DROP PROCEDURE IF EXISTS insert_test_val;
##num_limit 要插入数据的数量,rand_limit 最大随机的数值
CREATE PROCEDURE insert_test_val(
 in num_limit int,
 in rand_limit int)
BEGIN
 
 DECLARE i int default 1;
 DECLARE a int default 1;
 DECLARE b int default 1;
 DECLARE c int default 1;
 
 WHILE i<=num_limit do
  set a = FLOOR(rand()*rand_limit);
  set b = FLOOR(rand()*rand_limit);
  set c = FLOOR(rand()*rand_limit);
  INSERT into test.test values (null,a,b,c);
  set i = i + 1;
 END WHILE;
END
//
 
#调用存储过程
call insert_test_val(1000,10);
########################################################
DROP PROCEDURE IF EXISTS mytest; --判断进程是否存在,存在则删除
CREATE PROCEDURE mytest()  --新建进程
BEGIN
declare i int; 
DECLARE j varchar(200);
  set i = 2;
  while i < 11 do  --循环体
    SET j=CONCAT('wwq',i);  --拼接字符串
    INSERT INTO pub_user(`ID`, `NAME`, `ACCOUNT`, `PASSWORD`, `USER_CODE`)
    VALUES (i, '王馨', j, 'e10adc3949ba59abbe56e057f20f883e', '');
    INSERT INTO pub_user_post (`POST_CODE`, `USER_CODE`)
    VALUES (i, 'A685187D29AF4AD793F2753DC17C1435');
    INSERT INTO pub_user_role (`ROLE_CODE`, `USER_CODE`, `APP_CODE`)
    VALUES ('95AC32C8B9874B4085A01187C341067B', i, 'INSPUR-DZZW-TYSP');
    set i=i+1;
  end while;
end  --结束定义语句
call mytest();  --调用进程
 
 

MySQL存储过程例子的更多相关文章

  1. MySQL 存储过程例子,不能在if else里面用begin end否则会报错Error Code : 1064!

    Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My ...

  2. MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等

    drop procedure if exists pro_rep_shadow_rs; delimiter | ---------------------------------- -- rep_sh ...

  3. mysql 存储过程 例子

    DROP PROCEDURE IF EXISTS variable_demo; delimiter // CREATE PROCEDURE variable_demo() BEGIN select ' ...

  4. MySQL存储过程(转)

    一.MySQL 创建存储过程 "pr_add" 是个简单的 MySQL 存储过程,这个存储过程有两个 int 类型的输入参数 "a"."b" ...

  5. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  6. mysql存储过程语法及实例

    存储过程如同一门程序设计语言,同样包含了数据类型.流程控制.输入和输出和它自己的函数库. --------------------基本语法-------------------- 一.创建存储过程cr ...

  7. Mysql存储过程调用

    mysql存储过程实例教程 发布时间:2014-04-09编辑:JB01 这篇文章主要介绍了mysql存储过程的使用方法,mysql存储过程实例教程,有需要的朋友参考下.   1.1create  p ...

  8. mysql存储过程详细教程

    记录mysql存储过程中的关键语法:DELIMITER //  声明语句结束符,用于区分;CREATE PROCEDURE demo_in_parameter(IN p_in int)  声明存储过程 ...

  9. Mysql 存储过程基本语法

    delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...

随机推荐

  1. Java 石家庄铁道大学软件工程系 学生学籍管理系统 2019 版

    本系统的作用是简单实现一些学生成绩管理操作:录入,修改,绩点计算,以及系统退出等. 首先建一个主函数实现界面的实现,然后建一个数据类用来定义存放数据.之后建立一个工具类,用来实现所有要进行的操作.首先 ...

  2. 5G时代开启,这些新兴职业决定你的后半生

    近段时间,高考志愿填报成为牵动千万家庭的头等大事.事实上,除了学校间的差距外,专业的优劣也在很大程度上决定着人们未来职场生涯的潜力.血淋淋的事实告诉我们,只有选对专业,才能让自己的人生实现升华,并避免 ...

  3. vue.js 强行赋值、刷新数组或者对象 方法之 $.set()

    实际开发过程中,数据交互的的时候需要赋值,刷新,但是不可能每次赋值之后都刷新整个页面,所以就要用到 vue.js方法 $.set(),能实现赋值对象的局部刷新 语法:Vue.set(object, k ...

  4. [经验] 如何将 Java 项目发布到云服务器上并可以访问

    环境: 云服务器 Linux centos7.6 1: 安装 Tomcat  (apache-tomcat-9.0.26.tar.gz) 下载压缩包 --> 通过SSH上传到云服务器 --> ...

  5. 对list集合的内容分组

    /** * 把list集合里的内容按照len大小分组 * @param list * @param len * @return */ private static List<List<St ...

  6. 缓存ViewState减少网络传输

    在维护 asp.net webform系统时,某些系统将控件及页面数据都存储在viewstate中,导致在频宽不够时,影响页面加载速度,此时可将viewstate 存储在服务端,减少网络传输. 重写  ...

  7. IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解,DNS域名设计

    本文参考:<计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解> IP地址 概述 计算机要实现网络通信,就必须要有一个用于快速定位的网络地址.IP地址就是计算机在网络 ...

  8. ubuntu13.10更新sources.list

    步骤: 1>设置网络连接方式,NAT 2>自动获取ip address 10.0.2.15 3>更新源soureces.list soureces.list deb http://m ...

  9. js中怎么把类数组转化为数组

    说起伪数组,首先想到arguments, 这个我们函数参数的一个类数组,是类数组的代表. 1.拥有length属性,可以使用下标来访问元素,这两点和数组相同. 2.不能使用数组的方法,他们不能使用Ar ...

  10. 凭什么相信 5G 很安全?

    导读 电信行业及其专家指责科学家说,他们研究的5G无线技术所带来的手机辐射制造了恐慌.由于我们的许多研究工作都是由公共资助的,因此我们相信从道德的角度来看,我们有责任告知公众,经过同行评审的科学文献究 ...