首页 > 数据库 >第10节-MySQL数据库的编程基础

第10节-MySQL数据库的编程基础

时间:2022-11-24 22:55:32浏览次数:50  
标签:count 10 set -- 编程 int MySQL declare select

 10.1、变量、运算符介绍

用户变量:使用@开头。【set定义,会话有效】
系统变量:使用@@开头。【declare定义,begin..end有效】
局部变量: 在存储过程中有效。

-- 1、用户变量使用方法
set @sno=95001;
select @sno; -- 查询设置的用户变量

-- 设置变量且定义默认值
select @name:='张三';

-- 查询并且设置值
select sname into @name from student where sno=@sno;
select @name;

-- 2、局部变量
delimiter $$
create procedure proc_add(in a int,in b int)
begin
    -- 局部变量
    declare c int default 0;
    set c=a+b;
    select c as 'result';
end$$
delimiter ;
call proc_add(2,3);

-- 3、系统变量:session变量和gobal变量
set @@wait_timeout=10000; --会话变量
set SESSION wait_timeout=10000; --会话变量
set @@global.wait_timeout=10000; --全局变量
set GLOBAL wait_timeout=10000; --全局变量

select @@wait_timeout -- 查询设置值

-- 查询所有会话变量
show session variables;

-- 查询所有全局变量
show global variables;

-- 4、常量:指的就是值不变的变量

-- 5、字符串常量
-- 5、数值常量
-- 6、日期时间常量
-- 7、布尔常量
-- 8、NULL常量

-- 9、运算符和表达式
运算符是执行数学运算﹑字符串连接以及列﹑常量和变量之间进行比较的符号。
9.1、算术运算符: +、- 、* 、/、%
9.2、赋值运算符:=、:=
9.3、逻辑运算符: !( NOT ) 、&&(AND ) 、||( OR ) 、XOR
9.4、位运算符: &、 ^ 、<< 、 >> ﹑~
9.3、比较运算符: =、<>(!=) 、<=> 、<、<=、>、>= 、IS NULL
【例】运算符和表达式使用示例
SET @x= 5,@y = 3;
SET @x=@x +@y;
SELECT @x;

10.2、流程控制

10.2.1、if

-- 如果有填写则显示,没有填写则显示0
select sname,if(age,age,'0') from student;

10.2.2、ifnull

-- 双目运算符,如果字段为null,则显示指定的内容
select sname,ifnull(birthday,'无填写') from student;

10.2.3、if...else【只能用于存储过程】

-- if...else 判断年龄是否成年人
delimiter $$
create procedure query_age(in var_sno int)
begin
declare temp int;
select age into temp from student where sno=var_sno;
if temp>=18 then
    select '成年人';
else
    select '未成年人';
end if;
end$$
delimiter ;

10.2.4、if...elseif...else

-- 判断成绩等级
drop procedure query_age;
delimiter $$
create procedure query_age(in var_sno varchar(32))
begin
declare temp int;
declare grade_desc varchar(32);
select score into temp from student where sno=var_sno;
if temp<60 then
    set grade_desc='不及格';
elseif temp>=90 then
    set grade_desc='优秀';
elseif temp>=60 and temp<=79 then
    set grade_desc='及格';
elseif temp>=80 and temp<=89 then
    set grade_desc='良好';
else
    set grade_desc='未知';
end if;
select grade_desc;
end$$
delimiter ;
call query_age('95005');

10.2.5、case

-- case 性别:男为1,女为0
select sname,ssex,
case ssex
when '男' then 1
when '女' then 0
else '未知'
end as ssex_num
from student;

10.3、循环语句

10.3.1、while

-- while 输入1和100的和
delimiter $$
create procedure doWhile()
begin
declare count int default 1;
declare sum int default 0;
while count<=100 do
    set sum=sum+count;
    set count=count+1;
end while;
select sum;
end$$
delimiter ;

10.3.2、loop、leave

-- loop 输入1和100的和
-- leave 相当于break
delimiter $$
create procedure doWhile()
begin
declare count int default 1;
declare sum int default 0;
add_num:loop
    set sum=sum+count;
    if count>=100 then
        leave add_num;
    end if;
    set count=count+1;
end loop add_num;
select sum;
end$$
delimiter ;

10.3.3、loop、iterate 

-- loop 输入1和100能被3整除的和
-- leave 相当于break
-- iterate 相当于continue
drop procedure doWhile;
delimiter $$
create procedure doWhile()
begin
declare count int default 1;
declare sum int default 0;
add_num:loop
    set count=count+1;    
    if count=100 then
        leave add_num;
    else if mod(count,3)=0 then
        iterate add_num;
        end if;
    end if;
    set sum=sum+count;
end loop add_num;
select sum;
end$$
delimiter ;
call doWhile();

10.3.4、repeat

-- repeat 输入1和100能被3整除的和
drop procedure doWhile;
delimiter $$
create procedure doWhile()
begin
declare count int default 0;
declare sum int default 0;
add_num:repeat
    set count=count+1;    
    set sum=sum+count;
    until count>=100
end repeat add_num;
select sum;
end$$
delimiter ;
call doWhile();

10.4、实践:利用循环,批量插入1000条数据

create table user(
    id int primary key auto_increment,
    uname varchar(32)
);

drop procedure add_user;
delimiter $$
create procedure add_user()
begin
declare count int default 1;
while count<=1000 do
insert into user(uname) values(concat('zhangsan',cast(count as unsigned)));
    set count=count+1;
end while;
end$$
delimiter ;
call add_user();

 

标签:count,10,set,--,编程,int,MySQL,declare,select
From: https://www.cnblogs.com/ygbh/p/16923745.html

相关文章

  • 第11节-MySQL存储函数
    11.1、函数介绍1、函数是存储在服务器端的SQL语句的集合2、函数分为MySQL提供的内部函数和用户自定义医数两大类.MySQL提供了很丰富的内部函数·数学函数·字符串医......
  • window10使用命令ssh工具生成github开源中国需要的ssh密钥以及转换为ppk让tortriseGit
    不知道大家用过putty没有,那个也可以生成,我以前生成很快的,现在不知道为什么,等待n久还是不行,如果把加密数缩短,还在github还用不了,还是用命令生成秒杀比较好。。ssh-keygen-......
  • 1055. 股票买卖 II
    贪心模板题思考这题之前,首先需要明确一点:对于任何买卖操作,即便跨了n天也是一样,都可以拆分成如图的形式{(at,at+1),(at2,at2+1)....,(atk,atk+1)},这样的集合,即可以拆......
  • MySQL字段约束条件
    昨日内容回顾MySQL字符编码及配置修改新版MySQL默认字符编码为utf系列,旧版本使用编码不统一,需要自己修改。修改使用配置文件较为简单,复制原配置文件改名为my.ini,文件......
  • MySQL数据库:6、约束的概述及语法
    Python基础之MySQL数据库目录Python基础之MySQL数据库一、约束概述1、为什么要约束2、什么是约束3、约束的分类4、查看当前表已有的约束二、约束语法及用法1、无符号2、......
  • MYSQL索引
    一、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可......
  • 2022年度GitHub中文Java项目排行榜Top 10
    1.mall项目地址:https://github.com/macrozheng/mallmall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。前台商......
  • day41MySQL基础(3)
    目录无符号、零填充非空默认值唯一值主键自增外键前戏关系的判断一对多关系外键字段的建立多对多关系一对一关系无符号、零填充unsigned idintunsignedzerofill id......
  • 进入python的世界_day38_数据库——mysql约束条件、表关系
    一、字段约束条件1.无负号​ unsignedcreatetablet(idintunsigned);#不能添加负数2.零填充​ zerofillcreatetablet(idintzerofill);#填入得数据展......
  • MySQL之约束条件及表间关系
    MySQL之约束条件MySQL创建表的完整语法中,每个字段名后必须跟随字段类型,还可以选择跟随约束条件。本文将介绍常见的约束条件,首先先创建一个测试约束条件的库:createdatab......