1、MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
选取 name 以 A 到 H 字母开头的 用户: SELECT * FROM user WHERE name REGEXP '^[A-H]';
选取 name 不以 A 到 H 字母开头的: SELECT * FROM user WHERE name REGEXP '^[^A-H]'; 不在字符列A-H中的任何单一字符 <=> [!A-H]
2、BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
IN 操作符允许您在 WHERE 子句中规定多个值。 SELECT column_name(s) FROM table_name WHERE column_name IN (value1,...);
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 多列的时候,先按照第一个column name排序,在按照第二个column name排序;
DISTINCT 关键词用于返回唯一不同的值。 SELECT DISTINCT column_name,column_name FROM table_name;
3、关联操作:
- INNER JOIN:如果表中有至少一个匹配,则返回行
-
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
-
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
-
- FULL JOIN:只要其中一个表中存在匹配,则返回行(mysql没有)
-
4、UNION 操作符用于合并两个或多个 SELECT 语句的结果集。如果允许重复的值,请使用 UNION ALL。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!绝对不能写两个ORDER BY命令。5、INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。
格式:INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;
实例:INSERT INTO Websites (name, country) SELECT app_name, country FROM apps;
6、CREATE TABLE 语句用于创建数据库中的表。表由行和列组成,每个表都必须有个表名。
CREATE TABLE table_name
(column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....);
7、处理 NULL 值。 如果值是 NULL 则返回 0(预设的值)
ISNULL() ISNULL(列名,0) SQL Server / MS Access
NVL()、 NVL(列,0) Oracle
IFNULL() IFNULL(列,0) MySQL
COALESCE() COALESCE(列,0) MySQL
8、group by用法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
有用的 Aggregate 函数:
- AVG() - 返回平均值 COUNT() - 返回行数
- MAX() - 返回最大值 MIN() - 返回最小值
- SUM() - 返回总和
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
9、having HAVING 子句可以让我们筛选分组后的各组数据。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
9、标量函数
ROUND() 函数用于把数值字段舍入为指定的小数位数。
SELECT ROUND(column_name,decimals) FROM table_name;
ROUND(X): 返回参数X的四舍五入的一个整数。
ROUND(X,D): 返回参数X的四舍五入的有 D 位小数的一个数字。如果D为0,结果将没有小数点或小数部分。
NOW() 函数返回当前系统的日期和时间。
IF(expr,v1,v2)如果表达式expr是TRUE(expr<>0 and expr<>NULL),则IF()的返回值为v1;否则返回值为v2。