1. 修改表中的字段
将字段名cate_id改成c_id
alter table tb_good change cate_id c_id int unsigned not null
2. SOME, ANY, ALL用法
找出表中price大于cate_id=2的商品(any,some均表示数组中最小的,all是表示最大的,反之亦然)
select price, good_name from tb_good where price > ANY(select price from tb_good where cate_id = 2);
3. inner join,left join,right join
inner join找两表的交集,left join以左表为基准,查左表所有元素的右表数据,right join是反过来。
select tb_good.good_name, tb_cate.name from tb_good INNER JOIN tb_cate on tb_good.cate_id = tb_cate.id ;
4. concat,concat_ws,format,lower,upper,left,right
用"-"连接
select concat(good_name, "-", cate_id) from tb_good;
用"/"连接
select concat_ws("/", id, good_name, cate_id) from tb_good;
数字格式化,保留两位小数
select format(price, 2) from tb_good;
转换成小写
select lower(good_name) from tb_good;
转换成大写
select upper(good_name) from tb_good;
取左边两位
select left(good_name, 2) from tb_good;
取右边两位
select right(good_name, 2) from tb_good;
4. length,ltrim,rtrim,trim,substring
去掉左边的?
select trim(leading "?" from "?????name????");
去掉右边的?
select trim(trailing "?" from "?????name????")
删除两边的?
select trim(both "?" from "?????name????")
替换掉?
select replace('n?ame', '?', '');
从第2位开始截取,索引从1开始,传入负数从后开始截取
select substring('name', 2);
5. like, not like
匹配n开头
select "name" like "n%";
匹配n前面有一个字符
select "name" like "_a%";
1后面的%不解析,寻找是否含有%的
select "na%me" like "%1%%" escape 1;
6. ceil,div,floor,mod,power,round,truncate
进一取整,
select ceil(3.01) ;
整数除法,
select 10 div 3;
3的2次方
select power(3, 2) ;
四舍五入
select round(3.14) ;
截取小数点后面两位
select truncate(123.4578, 2) ;
7. [not] between...and... ,[not] in, is [not] null
输出价格在100-400之间的商品
select price, good_name from tb_good where price between 100 and 400;
是否包含
select 3 in(2,3,4,5)
8. now(),curdate(),curtime(),date_add(),datediff(),
输出当前日期(年月日)
select curdate();
输出当前时间(时分秒)
select curtime();
当前时间增加365天
select date_add(curdate(), interval 365 day );
9. 聚合函数 avg,sum,max,min,count
10. 加密函数 md5
11. 创建json类型的字段