MySQL——存储2(造数据)和 if 结构
(接上一篇)
三、存储造数据
循环:while ..条件... do ...执行语句..end while (讲这个循环)
loop ...... end loop
repeat ....until .....end repeat
声明变量: declare 变量名 字符类型 default 数字
(1)造数据1:
select * from ss1 ;
drop table ss1;
CREATE table ss1(id int(10),name VARCHAR(20));
delimiter //
drop procedure if EXISTS cc1;
CREATE procedure cc1()
BEGIN
DECLARE i int DEFAULT 0; #声明i 默认0123456789
while (i<10) DO
INSERT into ss1(id) VALUES (i) ;
set i=i+1;
end while;
select * from ss1;
END
//
call cc1()

案例2: 控制造数据的数量
select * from ss1 ;
drop table ss1;
CREATE table ss1(id int(10),name VARCHAR(20));
delimiter //
drop procedure if EXISTS cc1;
CREATE procedure cc1(in x int(10))
BEGIN
DECLARE i int DEFAULT 0; #声明i 默认0123456789
while (i<x) DO
INSERT into ss1(id) VALUES (i) ;
set i=i+1;
end while;
select * from ss1;
END
//
call cc1(40)

案例3:优化
根据你已经存在的数据(count统计),进行造数据
select * from ss1 ;
drop table ss1;
CREATE table ss1(id int(10),name VARCHAR(20));
delimiter //
drop procedure if EXISTS cc1;
CREATE procedure cc1(in x int(10))
BEGIN
DECLARE i int DEFAULT (select count(*) from ss1); #声明i 默认0123456789
while (i<x) DO
INSERT into ss1(id) VALUES (i) ;
set i=i+1;
end while;
select * from ss1;
END
//
call cc1(15)

案例4:优化
新建表,重新插入数据
delimiter // #分割符号
drop procedure if EXISTS cc1; #判断并删除存储
CREATE procedure cc1(in x int(10)) #创建存储
BEGIN #开始
DECLARE i int DEFAULT 0; #声明i 默认0123456789
drop table if EXISTS ss1; #判断并删除表
CREATE table ss1(id int(10),name VARCHAR(20)); #创建表
while (i<x) DO
INSERT into ss1(id) VALUES (i) ; #插入数据
set i=i+1; #每次+1
end while; #结束
select * from ss1; #查看表
END
//
call cc1(6)

四、if语句
备注一个if 对应一个end if
(1)if 单分支
格式:
if 条件 then
slq语句1
else
sql语句2
end if;
如:
delimiter // #分割符号
drop procedure if EXISTS cc1; #判断并删除存储
CREATE procedure cc1(in x int(10)) #创建存储
BEGIN #开始
if x>10 THEN
select * from emp ;
ELSE
select * from dept ;
END if;
end
//
call cc1(11)

(2)if多分支
格式:
if 条件1 THEN
sql1
ELSE if 条件2 then
sql2
ELSE if 条件3 THEN
sql3
else if 条件4 THEN
sql4
else
sql5
END if;
end if;
end IF;
END if;
如:
delimiter // #分割符号
drop procedure if EXISTS cc1; #判断并删除存储
CREATE procedure cc1(in x int(10)) #创建存储
BEGIN #开始
if x=0 THEN
select * from emp ;
ELSE if x=10 then
select * from dept ;
ELSE if x=100 THEN
select * from sc;
else if x=1000 THEN
select * from student;
else
select * from b1;
END if;
end if;
end IF;
END if;
end
//
call cc1(71)

作业:根据emp表去写
1.当传入的参数(大于0)小于等于表里面数据的条数时,则根据每个部门显示所有的工资
2.当传入的参数大于表里面数据的条数时,则统计表里面的数据有多少条
3.当传入其他,则查询表里面的所有数据
五、
1、你会存储?
2、存储结构?
3、工作中的存储做什么? 造数据
4、你会写吗?讲下怎么造数据背下
浙公网安备 33010602011771号