Mysql 随笔记录

Soundex 声音相似的

select * from demos where Soundex('title') = Soundex('标示');

Concat 拼接语句

select concat(id,'(##',title,'##)') from demos;

正则 REGEXP

select * from demos where value regexp '\\内容';
\\表示查找;
\\f 换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表

AND 和 OR 一起时,先处理 AND;

_下划线只匹配一个字符,%可以匹配除了NULL的数据;

IS NULL
检测是否为NULL; SELECT * FROM tab WHERE id IS NULL;

返回不同值

SELECT DISTINCT row FROM tab;

显示授权用户

SHOW GRANTS;

显示广泛的服务器状态信息

SHOW STATUS;

INNER JOIN 关键字

在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
注释:INNER JOIN 与 JOIN 是相同的。

SELECT id FROM tab1 INNER JOIN tab2 ON tab1.id = tab2.id

AS 关键字

SELECT f.id,m.title FROM tab1 AS f LEFT JOIN tab2 AS m ON f.id = m.id

USING 关键字

用于表连接时给定连接条件(可以理解为简写形式),如

SELECT * FROM table1
JOIN table2 ON table1.id = table2.id

使用 USING 可以写为

SELECT * FROM table1
JOIN table2 USING(id)

HAVING

引入 HAVING 是因为 WHERE 无法和统计函数一起使用
如表 order (定单)有如下字段:
id, date, price, customer
查找订单总额少于2000的客户可以这样写:

SELECT customer, SUM(price) FROM order
GROUP BY customer
HAVING SUM(price)<2000

查找指定客户中订单超过1500的订单总额:

SELECT  customer,SUM(price) FROM order
WHERE customer=’…’ OR customer = ‘…’
GROUP BY customer
HAVING SUM(price) > 1500

MATCH AGAINST

在body(后面的)里查询database与title(前面的)一起显示

mysql> SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database');

DATEDIFF 返回两个日期之间的天数,

使用如下 SELECT 语句:

SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate 

结果:

DiffDate 1

IF条件

IF(expr1,expr2,expr3)  1为条件,true返回2,false返回3
SELECT IF(1<2,true,false); //返回true, 1
CASE 5 WHEN 1 THEN 'ONE'  WHEN 2 THEN TWO ELSE XXX
类似 switch(5)
{
     case 1:
          'ONE'
     break;
     case 2:
          'TWO'
     break;
     default:
          xxx
     break;
}
SELECT CASE 5 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE id END from TabName;

//如果这里的返回值带有引号,就是string类型,不能用于select 查询,不然返回的是这个字符串

posted @ 2018-01-30 19:51  lisq  阅读(206)  评论(0编辑  收藏  举报