Mysql 常用语法总结
最近学习Mysql数据库,记录下常用的语法,持续更新。
mysql常用语法表
关键词 | 含义 | 语法 | 备注 |
---|---|---|---|
COUNT,SUM,AVG,MAX,MIN | 常用聚合函数 | ||
GROUP BY | 对表进行分组 | ||
HAVING | 为聚合结果指定条件 | 子句中只能用常数、聚合函数、GROUP BY中指定的列名 | |
ORDER BY | 对查询结果进行排序 | order by ‘name’ DSEC/ASC | 降序/升序 |
CREATE VIEW | 创建视图,视图就是保存好的 SELECT 语句 | 注1 | |
ABS(数值) | 绝对值 | ||
MOD | 求余 | MOD( 被除数,除数 ) | |
ROUND | 四舍五入 | ROUND( 对象数值,保留小数的位数 | |
CONCAT | 拼接 | CONCAT(str1, str2) | |
LENGTH | 字符串长度 | LENGTH( 字符串 ) | |
LOWER | 改成小写 | ||
REPLACE | 字符串的替换 | REPLACE( 对象字符串,替换前的字符串,替换后的字符串 ) | |
SUBSTRING | 字符串的截取 | SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数) | |
EXTRACT | 截取日期元素 | EXTRACT( 日期元素 FROM 日期 ) | YEAR,MONTH,WEEK,DAY,HOUR,MINUTE,SECOND;返回:数值类型 |
CAST | 类型转换 | CAST (转换前的值 AS 想要转换的数据类型) | |
COALESCE | 将 NULL 转换为其他值 | COALESCE(x,y,z) | 注2 |
LIKE | 模糊查询 | LIKE ‘%name%’ | 查询字段中含有’name’的词 |
BETWEEN | 范围查询 | BETWEEN * AND * | 结果中会包含两个临界值 |
NULL | 判断是否为 NULL | IS NULL 、 IS NOT NULL | |
IN | 相当于多个OR | N ( ∗ , ∗ , ∗ ) (*,*,*) (∗,∗,∗) | |
CASE | 条件表示 | 注3 | |
UNION | 表的加法 | 注4 | 列的类型和数量需一致,会除去重复的记录。取并集去重 |
INTERSECT | 选取表中公共部分 | 注5 | 取交集 |
INNER JOIN | 内联结 | 注6 | |
LEFT(RIGHT) JOIN | 左(右)联结 | LEFT(RIGHT) OUTER JOIN |
注1:视图CREATE VIEW语法举例说明
CREATE VIEW
\text{CREATE VIEW}
CREATE VIEW ProductSum (product_type, cnt_product)
AS
\text{AS}
AS
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type;
创建好视图之后,使用视图:
SELECT product_type, cnt_product
FROM ProductSum
注2:COALESCE语法说明:
COALESCE(x,y,z) = x if x is not NULL
COALESCE(x,y,z) = y if x is NULL and y is not NULL
COALESCE(x,y,z) = z if x and y are NULL but z is not NULL
COALESCE(x,y,z) = NULL if x and y and z are all NULL
即,若x为NULL值,可用y值替换。
注3:CASE条件表达语法说明:
CASE WHEN < 求值表达式 > THEN < 表达式 >
WHEN < 求值表达式 > THEN < 表达式 >
…
ELSE < 表达式 >
END
注4:UNION语法说明:
SELECT product_id, product_name
FROM Product
UNION (ALL)
SELECT product_id, product_name
FROM Product2;
即,将具有相同列的两表列向拼接,数据记录行会去重。若想包含重复行,使用UNION ALL
注5:INTERSECT语法说明:
SELECT product_id, product_name
FROM Product
INTERSECT
SELECT product_id, product_name
FROM Product2
ORDER BY product_id;
即,将具有相同列的两表取交集。
注6:INNER JOIN 语法说明:
FROM ShopProduct AS SP
INNER JOIN
\text{INNER JOIN}
INNER JOIN Product AS P
ON
\text{ON}
ON SP.product_id = P.product_id
即,根据ON条件,两表进行联结,最终的数据都是完整的,没有缺失值。
LEFT JOIN \text{LEFT JOIN} LEFT JOIN 则是根据左表的ON条件进行联结。