MySQL燕十八老师课程笔记:第十六课:MySQL各个函数

# 在给商品打八八折的基础上抹掉零头
select goods_id,goods_name,floor(shop_price*0.88) 
from goods where cat_id=4;
# 给每一个商品生成一个515元之间的随机红包,购买随机赠送红包
select floor(rand()*10+5);
 select goods_id,goods_name,floor(rand()*10+5.99999) as bonus 
  from goods;
  # 因为加5的话,返回15的概率很小,需要再调整一下。
  select goods_id,goods_name,ceiling(rand()*10+5.99999) as bonus 
   from goods;
   # ceiling 向上取整。
# 想取出第四个栏目下,所有商品的goods_id
select goods_id,cat_id from goods where cat_id=4;

# 进一步,想把4栏目下的goods_id拼接起来。
select group_concat(goods_id,',') 
from goods where cat_id=4 group by cat_id;

在这里插入图片描述
在这里插入图片描述有两个逗号的原因:group_contact 默认用逗号进行拼接

select group_concat(goods_id,'') 
from goods where cat_id=4 group by cat_id;

在这里插入图片描述

# 字符串函数,计算字符的ASCII码
select ascii('a'); 
# 返回值为97

length计算的是字节长度,char_length计算的是字符数。

create table test(
    name varchar(10),
    em varchar(20)
)engine myisam charset utf8;

insert into test values 
('张三','zhsan@163.com'),
('lily','lily@126.com'),
('李雷','lilei@qq.com'),
('mr gao','gao@eyou.com');
# 如何调查作为邮件地址一部分的邮箱后缀?——通过字符串函数取
# 整体长度减去@ 所在位置,取右侧就是邮箱
select *,right(ema,length(ema)-position('@' in ema)) from test;

now返回datetime格式,curdate返回date格式:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
dayofweek:查看某一日是一周里的第几天:
在这里插入图片描述
注意:周日才是一周里的第一天。

create table jiaban(
    num int,
    dt date
)engine myisam charset utf8;

insert into jiaban 
values 
(5,'2012-09-01'),
(6,'2012-09-02'),
(7,'2012-09-03'),
(8,'2012-09-04'),
(9,'2012-09-05'),
(10,'2012-09-06'),
(11,'2012-09-07'),
(12,'2012-09-08'),
(13,'2012-09-09'),
(14,'2012-09-10'),
(15,'2012-09-11'),
(16,'2012-09-12');
# 按周统计加班时间:
# 难点:group by谁?
select *,week(dt) from jiaban;

在这里插入图片描述

select sum(num),week(dt) as wk from jiaban group by wk;

在这里插入图片描述

# 加密函数:md5为例
select md5('111111');

在这里插入图片描述
md5 是不可逆的。
良好的加密:
1.不可逆 2.碰撞性低(不同的源码加密结果重复的可能性小)

create table test(
    name varchar(5),
    gender tinyint
)engine myisam charset utf8;

insert into test 
values 
('张三',1),
('韩梅梅',0),
('nira',2);

现在性别是数字表示,能否显示出男/女/ni,这三个字符给客户看?
即:要做判断 1->男,0->女,2->ni
—— case 值 when 某种可能 then 返回值
when 另一种可能 then 返回值
else 默认值 end 新列名

select name,case gender 
when 1 then '男' 
when 0 then '女' 
else 'ni' 
end 'gender'  
from test;

在这里插入图片描述
最好加上那个end 后面的 ‘gender’!!否则就会出现这样的情况:
在这里插入图片描述
if 的语法:if(表达式1,表达式2,表达式3)
若表达式1为真,则返回表达式2,否则返回表达式3:

# 判断性别,让女士优先:
select name,
if(gender=0,'优先','等待') as vip 
from test;

在这里插入图片描述
ifnull 的用法:判断第一个表达式是否为null ,如为null,则返回第二个表达式的值;如不为null,返回自身,即表达式1.

select ifnull('aaa',0);

在这里插入图片描述
在这里插入图片描述
user 函数返回“用户及所在主机”,判断自己的身份

判断服务器版本:
在这里插入图片描述
在where 条件中,对某列使用了函数,由此列的索引不发挥作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值