1.基础查询
SELECT * FROM table_name
SELECT field1, field2,...fieldN FROM table_name
使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
1.1. 条件:WHERE
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
1.1.1. 操作符
SELECT * FROM table_name1 WHERE field1 = '文本'; #非数字要加引号
SELECT * FROM table_name1 WHERE field1 = 100; #纯数字加不加引号都可以
SELECT * FROM table_name1 WHERE field1 != 100; #不等于
SELECT * FROM table_name1 WHERE field1 <> 100; #不等于
SELECT * FROM table_name1 WHERE field1 > 100; #大于
SELECT * FROM table_name1 WHERE field1 >= 100; #大于等于
SELECT * FROM table_name1 WHERE field1 < 100; #小于
SELECT * FROM table_name1 WHERE field1 <= 100; #大于等于
1.1.2. 逻辑运算
AND、OR
SELECT * FROM table_name1 WHERE field1 = '文本' AND field2 = '文本'; #且
SELECT * FROM table_name1 WHERE field1 = '文本' OR field1 = 100; #或
IF
WHERE IF(条件, true执行条件, false执行条件 )
SELECT * FROM book WHERE IF(price > 120, btypeid=10, btypeid=11);
以上sql查询语句,意思是查price字段大于120,当price大于120为真时,再找btypeid等于10的行记录,
1.1.3. LIKE
SELECT * FROM table_name1 WHERE field1 LIKE '%com%' #查找包含com的数据
SELECT * FROM table_name1 WHERE field1 LIKE 'com%' #查找以com开头的数据
SELECT * FROM table_name1 WHERE field1 LIKE '%com' #查找以com结尾的数据
1.2. 数量:LIMIT
LIMIT[起始条目索引,],条目数
特点:起始条目索引从0开始,其实条目索引可省略;
SELECT * FROM 表名 LIMIT 3; #从第4条数据开始取数,取1条数据,即只取第四条
SELECT * FROM 表名 LIMIT 3,1;
#LIMIT 条目数 OFFSET 起始条目索引
特点:起始条目索引从0开始,其实条目索引可省略;
#从第4条数据开始取数,取1条数据,即只取第四条
SELECT * FROM 表名 LIMIT 1 OFFSET 3;
1.3. 排序:ORDER BY
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 DESC, field2 ASC
ASC:升序,不填默认为升序, DESC: 降序
排序使空排在最后 order by field1 is null
mysql> select * from bjy_order order by order_number is null,order_number asc;
2.分组:GROUP BY
2.1. 分组统计 COUNT(*)
SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
将数据表按名字进行分组,并统计每个人有多少条记录
2.2. 分组再统计 WITH ROLLUP
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…) 其中记录 NULL 表示所有人的登录次数。 我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:
select coalesce(a,b,c);
参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
2.3. 分组后条件:HAVING
SELECT JSON_UNQUOTE(JSON_EXTRACT(syd, '$[0].name')) 生源地,COUNT(*) 人数 FROM data_repository_4 GROUP BY syd HAVING 生源地 NOT IN ('','华侨','北方工大') ORDER BY 人数 DESC
HAVING 可以用别名,WHERE不可以; WHERE用在GROUP BY 前,HAVING 用在GROUP BY 后;
3. 数据操作
3.1. 更新:UPDATE
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
1. 可以同时更新一个或多个字段。 2. 可以在 WHERE 子句中指定任何条件
3.2. 删除:DELETE
DELETE FROM table_name [WHERE Clause]
1. 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。 2. 可以在 WHERE 子句中指定任何条件
3.3. 插入数据:INSERT INTO
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );