梳理mysql

where name is null;
	WHERE id=101 OR id=102 AND price >10;
		理解为id=101 或者id=102且price>10 AND优先OR
	通配符_只匹配单个字符
	WHERE name REGEXP 'abc' 正则表达式 name包含abc的行
	REGEXP '.abc' .匹配任何一个字符
	REGEXP '^abc$' 等同LIKE 'abc' 匹配整个列
	REGEXP BINARY 'aBc' BINARY用来区分大小写
	REGEXP '103|105' 类似于OR操作
	REGEXP '[678] A' 匹配 6A或7A或8A []匹配几个字符之一
	REGEXP '[^678]' 匹配几个字符之外的字符
	REGEXP '[3-6]' '[A-Z]' 匹配范围
	REGEXP '\\-' '\\.' 前导\\ 匹配特殊字符
		\\f换页 \\n换行 \\r回车 \\t制表 \\v纵向制表
	REGEXP '[:alpha:]' 预定义字符集 匹配任意字符
	元字符 * 0或多  + 1或多 ? 0或1 
		{n}指定数目 {n,}不少于n {n,m}范围不超255
	REGEXP '[[:digit:]]{4}' 匹配4个连续数字
	定位符 ^开头 $结尾 
	^双重作用 '^[ab]' 开头 '[^ab]'否定
	SELECT '1356' REGEXP '[25]' 用SELECT测试REGEXP
        SELECT concat(name, ' (', value, ')' )  合并列name (value)
	RTRIM()  LTRIM()  TRIM()去掉空格
	SELECT val_a*val_b AS val_c  运算
	UPPER() 大写 LOWER() 小写
	LENGTH() 长度
	DATE(order_time)  取日期部分
	WHERE YEAR(order)=2005 AND MONTH(order)=9
	RAND()  随机数
	AVG()  平均数
	SELECT AVG(DISTINCT price)
	SELECT COUNT(*) AS num, MAX(price) AS max
	SELECT id, COUNT(*) FROM tablea GROUP BY id 按id分组
	顺序 WHERE, GROUP BY, ORDER BY 
	HAVING类似WHERE 用于分组过滤 
	SELECT id, COUNT(*) FROM tablea GROUP BY id HAVING  COUNT(*) >= 2
	FROM TABLEA, TABLEB == FROM TABLEA INNER JOIN TABLEB ON
	SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) 相当于
		SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
        CROSS JOIN,JOIN,INNER JOIN,',' 类似笛卡尔积,除逗号, 带条件时,只显示两端都符合条件的
        LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN

相关推荐