赞
踩
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分列限定;
1.语法
SELECT 字段列表 FROM 表名;
2.例子
SELECT * FROM 表名;
# 查询所有的数据
3.去重复记录
SELECT DISTINCT 字段列表 FROM 表名;
4.起别名
AS
1.条件查询语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<> / != 不等于
BETWEEN...AND...在这份范围内都包括
IN (...) 多选一
LIKE 模糊查询(_单个任意字符 %多个任意字符)
IS NULL 是空
SI NOT NULL 不是空
AND / && 且
OR / || 和
NOT / ! 非,不是
3.条件查询的使用举例
# 条件查询 -- 查询id> 80的学员信息 SELECT *FROM employee WHERE id>80; -- 查询攻击力>= 100 的学员的信息 SELECT *FROM employee WHERE `攻击力`>=100; -- 查询攻击力>=100 并且 小于等于120的学员的信息 # 写法越来越简单 SELECT *FROM employee WHERE `攻击力`>100 && `攻击力`<=120; SELECT *FROM employee WHERE `攻击力`>100 AND `攻击力`<=120; SELECT *FROM employee WHERE `攻击力` BETWEEN 100 AND 120; -- 查询生日在1911-12-12 到 1940-10-10 之间的学员的信息 SELECT *FROM employee WHERE birthday >'1911-12-12' && birthday<'1940-10-10'; SELECT *FROM employee WHERE birthday BETWEEN '1911-12-12'AND'1940-10-10'; -- 查询攻击力等于100的学员的信息 SELECT *FROM employee WHERE `攻击力`=100; -- 查询id 不等于100的学员的信息 SELECT *FROM employee WHERE id !=100; SELECT *FROM employee WHERE id <>100; -- 查询年龄id=100 或者 Salary =9000 或者攻击力等于101的学员 -- 注意||符号不推荐使用, 推荐使用or 来代替|| SELECT * FROM employee WHERE id = 100 ||Salary=9000||`攻击力`=101; SELECT * FROM employee WHERE id =100 OR Salary =9000 OR `攻击力` =101; SELECT * FROM employee WHERE id IN (100,88,101); -- 查询 image 为null 的学员 # 注意 null 值不能使用 = != 来比较,需要使用 is 或 is not来进行比较 SELECT * FROM employee WHERE `resume` IS NULL; SELECT * FROM employee ;
4.模糊查询
-- 模糊查询
/*
通配符:
1. _ :代表单个任意字符
2. % :代表任意个数字符
*/
-- 查询姓`温` 的学员的信息
-- 查询第二个字是 `六` 的学员的信息
-- 查询名字中包含 `云` 的学员的信息
SELECT * FROM employee WHERE user_name LIKE '温%';
SELECT * FROM employee WHERE user_name LIKE '_合%';
SELECT * FROM employee WHERE user_name LIKE '%云%';
当需要对某一列进行升序或者降序的排列时,可使用排序查询
1.语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1,排序方式1;
2.排序方式:
ASC :升序
DESC :降序
注:如果有多个排序条件时,当前一个条件值一样时,才会跟据第二个条件进行排序。
3.排序查询实例
-- 排序查询 /* 排序方式: ASC :升序排列(默认) DESC :降序排列 */ -- 查询学生信息,按照id升序排列 SELECT * FROM employee ORDER BY id ASC; -- 查询学生信息,按照Salary 进行降序排列 SELECT *FROM employee ORDER BY `Salary` DESC; -- 查询学生信息 ,按照id进行升序排列,如果id相同则按照Salary升序排列 -- 当有多个条件时,只有当前一个条件相等时才会启用后一个条件 SELECT * FROM employee ORDER BY id ASC , `Salary`DESC; -- 分组查询 # 首先创建表 CREATE TABLE stud ( id int, `name` VARCHAR(15), sex char(1), math int, English int);
1.其实就是把表中的数据按照某一个条件给其归类,然后会对某一类进行统计和分析。
2.语法
SELECT 字段列表 FROM 表名 WHERE 分组前条件限定 GROUP BY 分组字段名 HAVING 分组后条件过滤;
# 字段列表的要求:聚合函数或分组字段
3.分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
4.where与having的区别:
5.执行顺序
6.实例演示
/* 分组函数 SELECT 字段列表 FROM 表名 WHERE 分组前条件限定 GROUP BY 分组后条件过滤 */ -- 查询男同学女同学各自的数学平均分 SELECT sex, AVG(math)FROM stud GROUP BY sex; -- 查询男同学女同学各自的数学平均分,以及各自人数 SELECT sex, AVG(math),COUNT(*) FROM stud GROUP BY sex; -- 查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分的不参与分组 SELECT sex, AVG(math),COUNT(*) FROM stud WHERE math>70 GROUP BY sex; -- 查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分的不参与分组,分组之后人数大于3 SELECT sex, AVG(math),COUNT(*) FROM stud WHERE math>70 GROUP BY sex HAVING COUNT(*)>3; -- 注:where 与having的区别: -- 1执行实际不一样,where是分组之前进行限定,不满足where条件就不参与分组,而having是分组之后对结果的过滤 -- 2可判断的条件不一样:where不能对聚合函数进行判断,而having可以
1.分页查询的语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
2.tips:
3.分页查询的实例
-- 分页查询
-- 从0开始查询,查询三条数据
SELECT * FROM stud LIMIT 0,3;
-- 每页显示三条数据,查询第一页数据
SELECT * FROM stud LIMIT 0,3;
-- 每页显示3条数据,查询第二页的数据
SELECT *FROM stud LIMIT 3,3;
-- 每页显示3条数据,查询第三页的数据
SELECT * FROM stud LIMIT 6,3;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。