SQL整理

最近经常使用到MySql数据库中一些自带的类库和函数、方法,现对之前使用过的做一个记录。

  1. 快速查看数据表的全部字段和注释数据类型、权限、默认值、是否为null等。
 show full columns from table name 
  1. 时间格式化
	-- 年月日
   DATE_FORMAT(字段, '%Y-%m-%d')
   -- 年月日时分秒
   DATE_FORMAT(字段, '%Y-%m-%d %H:%i:%S')
  1. 字符拼接
-- 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
conat(str1,str2,str3,...)
eg:select concat('1','2',null);
输出: null

CONCAT_WS(separator,str1,str2,...)
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
和concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL 
eg:select concat_ws(',','1','2',null);
输出: 12
  1. MySQL计算函数并保留小数点
-- 四舍五入并保留俩位小数
ROUND(数学运算, 2) 
ROUND(X) :返回参数X的四舍五入的一个整数。
  1. IFNULL() 函数
-- 用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
IFNULL(字段,如果第一个值为null返回自定义值) 
  1. case函数
-- 如果status 是 0 未提交,1 已提交、待处理,2 已处理 三个都不是 输出空, 显示字段是status_
CASE  status  WHEN 0 THEN '未提交'
              WHEN 1 THEN '已提交、待处理'
              WHEN 2 THEN '已处理'
      ELSE ''    END       'status_'
  1. not in 替换为效率更高的左连接
-- table1 表为主表,table2表为拓展表,关联字段 table1.id = table2.tid
-- 查询的是 table1表和 table2表没有关系的table1 的 name、age 即不存在(not exists)
SELECT ti.name, t1.age FROM 
(
	SELECT t1.*, t2.tid FROM 
	table1 t1
	LEFT JOIN table2 t2  ON t1.id = t2.tid
) AS res 
WHERE res.tid is null

-- exists  的话就是 最后的where 条件改为 is not null

暂时用到的就这么几个,想到了在更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值