MySQL开发中常用的查询语句总结

完整的SELECT语句结构:

SELECT
FROM
WHERE
HAVING
ORDER BY
WITH

table_name

1、查询数值型数据:

SELECT id,name,age FROM table_name WHERE age > 20;

查询谓词:
>,=,<,<>,!=,!>,!<,=>,=<
<> != 效果是一样的

2、查询字符串

SELECT id,name,age FROM table_name  WHERE name like ‘%张%’

%代表任意字符

3、查询非空数据

SELECT * FROM table_name WHERE address <> "" order by addtime desc
SELECT COUNT(id) FROM table_name WHERE id IS NOT NULL

4、查询前n条记录

SELECT id,name,age FROM table_name LIMIT s,n

从s开始往后n个,s从0开始计数

5、查询后n条记录

SELECT id,name,age FROM table_name ORDER BY id ASC LIMIT n

默认升序 ASC , DESC 降序

6、对查询统计结果重命名

SELECT id AS serialNumber FROM table_name 

7、查询指定范围内的数据

SELECT id,name,age FROM table_name WHERE age BETWEEN 20 AND 25

8、查询大于指定条件的记录

SELECT * FROM table_name WHERE age > 18 ORDER BY age;

9、查询结果不显示重复记录

SELECT DISTINCT age FROM table_name

10、NOT与谓词进行组合条件的查询

  • (1)NOT BERWEEN … AND … 对介于起始值和终止值间的数据时行查询

  • (2)IS NOT NULL 对非空值进行查询

  • (3)IS NULL 对空值进行查询

  • (4)NOT IN 该式根据使用的关键字是包含在列表内还是排除在列表外,指定表达式的搜索,搜索表达式可以是常量或列名,而列名可以是一组常量,但更多情况下是子查询

11、显示数据表中记录条数

SELECT  name,age,count(1) FROM table_name WHERE age > 19

12、对数据进行降序/升序查询

SELECT age FROM table_name WHERE age > 18 ORDER BY age DESC|ASC 降序

13、对数据进行多条件查询

SELECT id,name,age FROM table_name WHERE age > 18 ORDER BY id ASC,age DESC

注:
select id,name,age from table_name ORDER BY id,age

如果id已经完全是按照sql排序的了,那么rule_id不再排序;如果第1个不是完全排序的,则按照第2个排序,后面以此类推

14、单列数据分组统计

SELECT id,COUNT(age) AS totalAge FROM table_name GROUP BY age ORDER BY id DESC

注:当分组语句group by排序语句order by同时出现在SQL语句中时,要将分组语句书写在排序语句的前面,否则会出现错误

15、多列数据分组统计多列数据分组统计与单列数据分组统计类似

SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC

SELECT id,SUM(price*num) AS sumprice  FROM table_name GROUP BY pid ORDER BY sumprice

注:group by语句后面一般为不是聚合函数的数列,即不是要分组的列;
同时select 后面一般会用聚合函数,否则分组无意义

16、聚合函数

聚合函数配合 Group By 使用
AVG(), COUNT([DISTINCT]), MIN(), MAX(), GROUP_CONCAT( col)
求和SUM()

标签: MySQL, SQL

相关文章推荐: