首先创建一个名为fruits的表,并为其添加数据。
1 create table fruits
2 (
3 id int not null,
4 name char(255),
5 price decimal(8,2),
6 primary key(id)
7 );
-
查询所有字段
select * from 表名;
或
select 字段1,字段2,字段3··· from 表名; //包括所有字段
-
查询指定字段
select 字段名 from 表名;
select 字段1,字段2······字段n from 表名 where 查询条件;
-
带 IN 关键字查询
in操作符用来查询满足指定范围的记录(将所有检索条件用括号括起来)
例如:查询fruits表中id为1,2,3的记录
select * from fruits where id in(1,2,3);
相反可以使用 not in 查询不在条件范围内的记录
- 带 BETWEEN AND 的范围查询
between and用来查询某个范围内的值。between x and y 表示从x到y的范围,包括x和y。
例如:查询fruits表中价格在2.00到5.00元的水果信息。
select * from fruits where price between 2 and 5;
- 带 LIKE 的字符串匹配查询
与like一起用的有百分号通配符(%)和下划线通配符(_)
百分号通配符(%),可匹配任意长度的字符串,包括空字符。
例如:查询以 b 开头的水果
select * from fruits where name like 'b%';
2.下划线通配符(_),一次匹配任意一个字符。
例如:查询以 y 结尾,且前面有四个字母的记录
select * from fruits where name like '____y';
-
空值查询(IS NULL)
select * from 表名 where 字段名 is null;
相反 is not null 可查询非空值。
- AND关键字多条件查询(与)
and可连接两个或多个查询条件
例如:查询fruits表中 id>3,price 小于4 的记录。
select * from fruits where id>3 and price<4;
- OR关键字多条件查询(或)
例如:查询fruits表中 id大于3或者price小于4 的记录。
select * from fruits where id>3 or price < 4;
- 查询结果不重复(DISTINCT)
distinct关键字消除重复记录
select distinct * | 字段名 from 表名;
- 对查询结果排序
在select语句中使用 order by 子句,对查询结果进行排序。
(1)单列排序
例如:按照水果的价格顺序查询水果信息。
select * from fruits order by price;
2)多列排序
例如先按照price排序,再按照name排序。
select * from fruits order by price,name;
(3)指定排序方向
select * from fruits order by price DESC; //按照价格降序排列
与DESC(降序排列)相反的是ASC(升序排列),默认为升序排列。
- 分组查询
按照某个或多个数据进行分组
[group by 字段] [having (条件表达式)]
“字段” 为进行分组时所依据的列名称
“having (条件表达式)” 满足条件表达式的将被显示。
(1)创建分组
group by 通常与集合函数一起使用,如max(),count(),sum()······
例如:按照价格对表中数据进行分组
select price,count(*) as total from fruits group by price;
(2)使用having过滤分组
select price,count(*) as total from fruits group by price having total <=1;
*having 在数据分组之后进行数据过滤 而 where则在分组之前使用
(3)with rollup 关键字
使用with rollup 后,会在所有分组记录后新增一条记录,该记录计算查询出的所有纪律的总和,即统计记录数
量。
(4)多字段分组
分组从左往右,先按照第一个字段进行,然后对第一个字段相同的值按照第二个字段分组,以此类推。
select price,count(*) as total from fruits group by price,id;
- 使用LIMIT限制查询结果的数量
语法格式:limit[位置偏移量] 行数
例1:查询两条记录(从第一个开始的)
select * from fruits limit 2;
例2:查询两条记录(从第三个开始)
select * from fruits limit 2,2;