6条有用的MySQL语句

本文是翻译自6 useful MySQL queries

查询语句的创建是一门艺术,一门使用SQL和命令进行精确和高效查询数据库的艺术。在SELECT查询中,你可以使用JOIN,WHERE和 HAVING语句来定义结果的行和列和范围。Group By可以将结果行组合为可以分析的概要数据,UNION则可以组合多个查询的结果,INSERT、DELETE和UPDATE命令可以关系到JOIN语句,INSERT....SELECT可以将一个查询的结果直接插入到另外一个数据表中,而UPDATE和DELETE语句可以由WHERE来控制影响范围。

1.计算年龄

如果你有一个人的生日而需要计算这个人的年龄,将下列语句中@dateofbirth替换为生日即可

SELECT DATE_FORMAT (FROM_DAYS (TO_DAYS (now ()) - TO_DAYS (@dateofbirth)), '%Y') + 0;

2.计算两个日期的差值

计算两个日期的分,秒,小时和天数的差值,如果dt1和dt2的的格式是‘yyyy-mm-dd hh:mm:ss’,那么两个日期之间的秒数差值就是

UNIX_TIMESTAMP ( dt2 ) - UNIX_TIMESTAMP ( dt1 )

3.显示出现了N次的栏目的值

SELECT id
FROM tbl
GROUP BY id
HAVING COUNT (*) = N;

4.计算两个日期之间的工作日

计算两个日期之间的工作日的最简单方法是是一个含有d日期栏目和另一个标定了在已知年份中所有日期是否为休息日的栏目的日历表,然后下面的查询就是找到在Start和Stop两个日期之间所有的工作日

SELECT COUNT (*)
FROM calendar
WHERE d BETWEEN Start AND Stop
AND DAYOFWEEK (d) NOT IN (1,7)
AND holiday=0;

5.找到一个表的主键

SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
USING (constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema='db'
AND t.table_name='tbl'

6.查询你的数据库数据占用的总空间

SELECT
table_schema AS 'Db Name',
Round ( Sum ( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Db Size (MB)',
Round ( Sum ( data_free ) / 1024 / 1024, 3 ) AS 'Free Space (MB)'
FROM information_schema.tables
GROUP BY table_schema ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值