MySQL---数据库从入门走向大神系列(五)-存储过程-阿里云开发者社区

开发者社区> 谙忆> 正文

MySQL---数据库从入门走向大神系列(五)-存储过程

简介: 本篇博客讲解: 自动增长列、字段值唯一性约束、存储过程、区分大小写的查询! 自动增长列、字段值唯一性约束 create table aa( id int auto_increment primary key, sname varchar(32) u...
+关注继续查看

本篇博客讲解:
自动增长列、字段值唯一性约束、存储过程、区分大小写的查询!

自动增长列、字段值唯一性约束

create table aa(
    id int auto_increment primary key,
    sname varchar(32) unique
);
insert into aa values(5,'abc');

创建一个自动增长的id属性(最开始不设置就从0开始增长)
(后面的id如果有值了,如果添加数据时没有设置id,MySQL就会用最大的id加1做为最新的id)
注意:auto_increment 在MySQL中支持,其他的数据库设置自动增长列中关键字不一样。
unique 对sname进行唯一性约束,也就是不能有相同的sname(可以有一个值是null)。

存储过程:

其实这个SQL中的存储过程很像Java中的定义函数,调用函数。

首先看定义:

create procedure 过程名(参数...)
begin
    SQL语句...
end

调用:

call 过程名(实参)

有一个需要注意的地方:
在定义前,需要先把默认的语句结束’;’号改成其它,如’&&’,这样存储过程中定义的分号就不会被看成是语句结束(否则会直接被提交)。
在定义完之后,还要把’;’还原成默认的结束符。

实例一:无参的存储过程

delimiter &&
create procedure p1()
begin
    insert into stud values('P100','小李',43);
    select * from stud;
end&&
delimiter ;

call p1;/*调用p1()中的SQL语句,如果没有call之前,p1()中的SQL语句是没有被执行的*/

实例二:有参的存储过程

delimiter &&
create procedure p2(in id varchar(32),in sname varchar(32),in age int)
begin
    insert into stud values(id,sname,age);
    select * from stud;
end &&
delimiter ;

call p2('P1007','小白',25);
call p2('P1008','小丽',28);

实例三:有返回值的存储过程

delimiter &&
create procedure p3(in id varchar(32) ,in sname varchar(32),in age int ,out num int)
begin
    insert into stud values(id,sname,age);
    select * from stud;
    select count(*) into num from stud;
end&&
delimiter ;

call p3('P012','小小五',27, @num);
/*调用且用num接收结果*/

select @num; /*显示用户变量num*/

系统变量名称:@@变量名
用户变量名称:@变量名

区分大小写的查询:

因为MySQL的查询是默认不区分大小写的:
如果有些时候需要区分大小写,我们就需要binary这个关键字了。
可以这样用,在stud表中查找sname中带’j’ /’J’:
先不写binary进行查询:

select * from stud where sname like 'J%';

写binary进行查询:

select * from stud where binary sname like 'J%';

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里巴巴数据库分库分表的实践(5)
阿里巴巴数据库分库分表的实践(5)
3 0
亚信数据新一代PaaS平台是如何炼成的?
  日前,亚信数据发布旗下多款PaaS产品,包括亚信分布式数据库ADB、容器云计算平台HPS、大数据云平台DCP。这三款产品在亚信内部历经了3年的研发投入和攻关,并在客户项目中得到了实践部署。随着这些系列产品的正式亮相,它们共同构建了亚信完整的PaaS平台解决方案,将亚信拥有的大数据、CRM(客户关系管理系统)、BOSS(业务运营支撑系统)以及众多核心能力逐渐服务化、组件化,由该平台统一承载。
6 0
用阿里云飞天计划提供的CES服务器为高中生活搭建“故事簿”网页
一名刚踏入大学的大一本科生利用阿里云提供的CES服务器为高中“故事簿”搭建网页
13 0
阿里云对于学习的帮助
在配置好阿里云后的使用过程中发现的帮助,以及便利。
8 0
阿里巴巴数据库分库分表的实践(1)
阿里巴巴数据库分库分表的实践(1)
5 0
阿里巴巴数据库分库分表的实践(4)
阿里巴巴数据库分库分表的实践(4)
6 0
阿里巴巴数据库分库分表的实践(2)
阿里巴巴数据库分库分表的实践(2)
3 0
阿里云飞天加速计划
阿里云服务器是一个非常好的学习平台,我们定会用来提升自身的专业能力。
11 0
阿里巴巴数据库分库分表的实践(3)
阿里巴巴数据库分库分表的实践(3)
4 0
+关注
谙忆
GitHub: https://github.com/chenhaoxiang
714
文章
40
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载