1 查询表中数据

SELECT * FROM 表名;

2 按条件查询

SELECT * FROM 表名 WHERE 条件;

2.1 查询年龄大于70岁的人

SELECT * FROM 表名 WHERE age > 70;

2.2 查询年龄等于70岁的人

SELECT * FROM 表名 WHERE age = 70;

2.3 查询年龄不等于70岁的人

SELECT * FROM 表名 WHERE age <> 70;
SELECT * FROM 表名 WHERE age != 70;

2.4 查询年龄在20~70的人

SELECT * FROM 表名 WHERE age >= 20 && age <=70;
SELECT * FROM 表名 WHERE age >= 20 AND age <=70;
SELECT * FROM 表名 WHERE age BETWEEN 20 AND 70; -- 都是先写where

2.5 查询年龄为70岁、45岁的人

SELECT * FROM 表名 WHERE age = 45 || age =70 ;
SELECT * FROM 表名 WHERE age = 45 or age =70 ;

2.6 查询年龄为NULL的人

SELECT * FROM 表名 WHERE age is NULL;  --判断是不是为null不能用布尔逻辑,只能用is或者is not

2.7 查询年龄不为NULL的人

SELECT * FROM 表名 WHERE age is not NULL;

3 模糊查询(也是用到条件where的,只不过“=”变成了like)

        使用like进行模糊查询。占位符有_和%。_表示单个任意字符,%表示0个或多个任意字符。

3.1 查询姓王的人

SELECT * FROM 表名 WHERE name LIKE "王%";

3.2 查询第二个字是化的人

SELECT * FROM 表名 WHERE name like "_化%";

3.3 查询名字是两个字的人

SELECT * FROM 表名 WHERE name like "__";

3.4 查询名字带马的人

SELECT * FROM 表名 WHERE name LIKE "%马%";

4 排序查询

SELECT * FROM 表名 ORDER BY 列名1 排序方式1,列名2 排序方式2; -- 把字段名和排序规则一起看!ASC:升序(默认升序,即不写排序方式的时候),DESC:降序

4.1 年龄升序排序

SELECT * FROM 表名 ORDER BY age;
SELECT * FROM 表名 ORDER BY age ASC;

4.2 年龄降序排序

SELECT * FROM 表名 ORDER BY AGE DESC;

4.3 按年龄升序排序,如果年龄一样,则按照成绩升序排序(注意:如果多个条件排序时,当前一个条件值一样才会判断第二个条件)

SELECT * FROM 表名 ORDER BY AGE ASC, SCORE ASC; -- 分开写

5 聚合函数查询

        聚合函数:将一列数据作为整体,进行纵向计算。

        常用的聚合函数有:

                1.count:计算个数

                2.max:计算最大值

                3.min:计算最小值

                4.sum:计算和

                5.avg:计算平均值

5.1 根据name字段求出表中的人数

SELECT COUNT(name) FROM 表名; -- 会排除name为NULL的记录,记录name不为空的数据有几条,而不是name不相同的数据有几条
一般写成:
SELECT COUNT(IFNULL(name,0)) FROM 表名; -- IFNULL(name,0)的意思是如果name为NULL则当成0来看

5.2 求出行中不全为NULL的数据条数

SELECT COUNT(*) FROM 表名; -- count(*)表示只要行中有一个数据不为null,就算一条数据

5.3 求出成绩最大、最小值

SELECT MAX(score) FROM 表名;

SELECT MIN(score) FROM 表名;

5.4 求出年龄之和(注:SUM自动排除NULL进行计算)

SELECT SUM(age) FROM 表名;

5.5 求出年龄的平均值(注:AVG在求和时排除了NULL进行计算,但是总数(分母)算上了包括了NULL的数据)

SELECT AVG(age) FROM 表名;

6 分组查询

SELECT 分组后查询的字段 FROM 表名 GROUP BY 分组字段;

例子:
    比如说分组后查询字段有性别、平均年龄,分组字段为性别,则进行性别分组后,会显示出性别和平均年龄分组的结果,性别分组的结果就是男和女,年龄分组的结果就是男性的平均年龄以及女性的平均年龄。

6.1 求出男性、女性的平均年龄

SELECT sex,AVG(age) FROM 表名 GROUP BY sex;

6.2 查询男同学人数

SELECT SEX,COUNT(ID) 表名 GROUP BY sex; --先按性别划分,在分别求出每组的人数

6.3 查询年龄在70岁以下的男生人数(先满足条件再分组)

SELECT SEX,COUNT(id) FROM 表名 WHERE age<70 GROUP BY sex;

6.4 查询年龄在70岁以下的男生人数,如果人数大于10则显示出来(此问题有两次限定,一次在分组前,用WHERE,一次在分组后,用HAVING)

SELECT sex,COUNT(id) FROM 表名 WHERE AGE <70 GROUP BY sex HAVING COUNT(id) > 10;

6.5 分组查询取别名

SELECT sex,COUNT(id) 别名 FROM 表名 WHERE AGE < 70 GROUP BY sex HAVING 别名 > 10 ;

7 分页查询(第n页的起始索引 = (n-1) *  每页显示的条数)

SELECT * FROM 表名 LIMIT 起始索引,每页查询条数;-- 注意:第一条索引是0

7.1 每页显示3条记录,显示第一页

SELECT * FROM 表名 LIMIT 0,3;

7.2 每页显示3条记录,显示第二页

SELECT * FROM 表名 LIMIT 3,3;