Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54808
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 162
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-19 20:14
文章分类
文章存档

2013年(9)

我的朋友

分类: Mysql/postgreSQL

2013-07-22 21:50:44


创建用到的表

点击(此处)折叠或打开

  1. create table stuscore
  2. (
  3.     stuID int auto_increment,
  4.     stuName varchar(20) not null,
  5.     gender enum('男','女') default '男' not null,
  6.     -- gender enum('1','0') default '1' not null, -- 1为男性
  7.     score float not null,
  8.     primary key(stuID)
  9. )engine=innodb charset=utf8;

if语句,通过help if查看帮助
if语句的使用

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1(sco int)
  4. begin
  5.     -- declare sco int;
  6.     -- set sco = 99;
  7.     if sco between 90 and 100 then
  8.     select 'perfect';
  9.     elseif sco>=80 && sco<90 then
  10.     select 'nice';
  11.     elseif sco>=60 && sco<80 then
  12.     select 'normal';
  13.     else
  14.     select 'bad';
  15.     end if;
  16. end//
  17. delimiter ;
if方法的使用

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     select stuName,gender,score,if(score>=60,'是','否') '是否及格' from stuscore;
  6. end//
  7. delimiter ;

Mysql中的case语句
查看帮助
help case operator;
help case statement;

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     -- select stuName, case gender when 1 then '男' else '女' end '性别' from stuscore;
  6.     select stuName, case when gender=1 then '男' else '女' end '性别' from stuscore;
  7. end//
  8. delimiter ;

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     declare weekNum int;
  6.     select weekday(curdate()) into weekNum;
  7.     case weekNum
  8.     when 0 then select '星期一';
  9.     when 1 then select '星期二';
  10.     when 2 then select '星期三';
  11.     when 3 then select '星期四';
  12.     when 4 then select '星期五';
  13.     when 5 then select '星期六';
  14.     when 6 then select '星期日';
  15.     end case;
  16. end//
  17. delimiter ;


Mysql中的循环
循环中的leave(相当与C语言中的break)    iterate(相当与C语言中的continue)
进行leave和iterate操作的时候必须指定label
while(推荐使用)    repeat...until(如果需要循环至少执行一次)        loop(只有通过leave来结束循环,可以作为死循环使用)
while语句

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     declare sco,gen,ind int;
  6.     set sco = 56;
  7.     set ind = 1;
  8.     wh1:while ind <=10
  9.     do
  10.     if sco=60 then    -- 成绩为60的不进行添加
  11.         -- leave wh1;
  12.         set sco = sco + 1; -- 注意死循环
  13.         set ind = ind + 1;
  14.         iterate wh1;
  15.     end if;
  16.     set gen = mod(sco,2);
  17.     insert into stuscore(stuName,gender,score) values(concat('stu',sco),concat(gen),sco);
  18.     set sco = sco + 1;
  19.     set ind = ind + 1;
  20.     end while;
  21. end//
  22. delimiter ;

repeat语句

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin     
  5.     set @a = 1;
  6.     repeat
  7.     select @a;
  8.     set @a = @a + 1;
  9.     until @a>5 end repeat;    
  10. end //
  11. delimiter ;

loop语句

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     declare a int;
  6.     set a = 1;
  7.     select a;
  8.     l1:loop
  9.     -- leave l1;
  10.     select a;
  11.     if a=99 then
  12.     leave l1;
  13.     end if;
  14.     set a = a+1;
  15.     end loop;
  16. end //
  17. delimiter ;

阅读(9804) | 评论(0) | 转发(4) |
0

上一篇:SQL编程——MySQL存储过程

下一篇:没有了

给主人留下些什么吧!~~