mysql存储过程

select 1 from table
相当于select * from table
但是select 1的效率更高,因为不用查字典。

convert函数在5.7之后就不能用了,但可以用cast函数代替
cast(字段名 as 转换的类型)
eg.2015-11-03 15:31:26
cast(date as signed) —20151103153126
cast(date as char) —2015-11-03 15:31:26
cast(date as datetime) —2015-11-03 15:31:26
cast(date as date) —2015-11-03
cast(date as time) —15:31:26
cast转换的类型不能是varchar

寻找赋值
select 值
into 参数
from table
where 条件

创建新表
mysql不支持select into from来创新表
改成create table (select from);

反引号
用反引号(键盘上1左边那个)与引号做区分,以区分关键字和普通字符

date_format(date,format)
format:
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时(00-23)
%h 小时(01-12)
%I 小时(01-12)
%i 分钟,数值(00-59)
%j 年的天(001-366)
%k 小时(0-23)
%l 小时(1-23)
%M 月名
%m 月,数值(00-12)
%p AM或PM
%r 时间,12制时间(hh:mm:ss AM或PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间,24制时间(hh:mm:ss)
%U 周(00-53)星期日是一周的第一天
%u 周(00-53)星期一是一周的第一天
%V 周(01-53)星期日是一周的第一天
%v 周(01-53)星期一是一周的第一天
%W 星期名
%w 周的天(0=星期日,6=星期六)
%X 年,其中星期日是一周的第一天,4位,与%V使用
%x 年,其中星期一是一周的第一天,4位,与%V使用
%Y 年,4位
%y 年,2位
eg.date_format(now(),’%Y%m%d);

left join
a left join b on 条件
以左表a为准,左表里a没有的数据右表b有—不显示,左表a有而右表b没有的数据—连接的字段设为NULL
工作流程:从左表a里读取一条记录,选出与条件匹配的右表记录进行连接,形成表格

case
case 参数名
when 属性值 then
语句
……
else
语句
end 列名

插入失败的操作
declare handler_action handler for condition_value
statement
当condition_value满足时,先执行statement,再执行handler_action
statement:为多行sql语句时,用begin和end包起来
handler_value:continue/exit
condition_value:sqlwarning
not found
sqlexception 无法连接数据库、表插入失误
eg.declare Exit handler for sqlexception
begin
set retcode=-1;
end

循环查询表内数据
declare flag int default 0;#用于识别是否还有数据需遍历
declare i char(5);#建立变量用来存储遍历过程中的值
declare a cursor for(select … from … where);#查询出需要便利的数据集合,a是select出的结果
declare continue handler for not found set flag = 1; #为while建立一个退出标志,
open a; #打开游标
fetch a into i; #取值到临时变量中
while flag <> 1 do
操作
fetch a into i;
end while;
close a;

单条记录(limit)
limit i,j #从第i条数据开始检索j行数据
limit i; #从第一条(0)前i条数据
写最后面

筛选第i条数据
select * from xx where rownum = n

order by
字符串到数值可以直接在后面“+0”
eg.order by id+0;//id字符串型的数字

go
go相当于一个结束标记,运行前面的sql语句,后面可以接运行几次

如果存在该存储过程就删
drop procedure if exists pro_name;

**delimiter ∗ ∗ 将 结 束 符 改 为 ** 将结束符改为 ,即看到$$后就执行该命令

离开该存储过程(return 0)
leave label
//begin前加label

object_id
select object_id(‘xxx’,’F’)
等同于select id from sysobjects where name=‘xxx’ and type =‘F’

row_count()
返回上一条SQL语句,对表数据进行修改操作后影响的记录数
返回值:
-1:上一条是查询语句(select或show)
0:update语句但数据没有改变/删除语句
修改记录数:修改语句(insert/update/delete)且修改了语句

连接
concat(x,y) 连接x和y两个字符串

like(模糊查询)
%:任意0个或多个字符,中文用%%
_:任意单个字符

寻找字符串
charindex(x,s)返回x在s中的位置——sql server
position(substr in str)返回子串substr在str中第一次出现的位置

debug
doesn’t have a default value
在插入语句前加set sql_mode =‘’
可以在插入语句中设置默认值

char和varchar的区别
eg.char(4)/varchar(4)
char(4)不论输入什么,存储需求都是4个字节,超了就存前4位
varchar(4)会动态变化,’'算1个字节,'ab’算3个字节,最多5个字节,超了就存前4位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值