#mysql|mysql--单表的数据查询

#基本查询
-- 查询语句的基本格式:select 属性名 from 表名;
-- 查询表中所有字段
select * from po_1; -- *代表所有字段
-- 查询表中指定
select P_id,p_name from po_1;
#条件查询
-- 条件查询的基本格式:select 属性名 from 表名 where 查询条件;
-- 查询条件时
insert into po_1 value (01,"小张","2001-02-04"),(02,"小胡","2002-03-01"),(01,"小发","2001-02-04"),(01,"小天","2001-02-04");
select P_id,p_name from po_1 where p_id<=3;
#范围查询(连续的范围的数字字母)
-- 在...范围内查找:
-- between...and...
-- 在...范围外查找:
-- not between...and...
-- 在集合范围内查找
-- in(...)由于in的内部处理没有where好,一般很少用in进行条件查询
-- 在集合范围外查找:
-- not in(...)
#模糊匹配
-- 字符串的模糊(只适合于字符串等文本类型)
-- like:像,类似
-- 统配符%:匹配任意多个字符(0到多个)
select * from po_1 where p_name like '张%';
select * from po_1 where p_name like '小%';
-- 通配符_:匹配任意一个字符
select * from po_1 where p_name like '小_';
#空值查询:is null
select * from po_1 where p_name is null;
-- 空值无法用=和!=比较
-- is not null (查询非空值)
select * from po_1 where p_name is not null;
#查询去重distinct
-- 同一个查询语句中只能对一个属性或一组属性去重
select distinct P_id,p_name from po_1;
-- 子查询(嵌套查询)
select * from po_1 where p_name in(select distinct p_id from po_1);
#分页查询:limit
-- 分页查询:limit[偏移量n]记录条数m
-- 查询从第n+1条记录开始的后m条数据,偏移量n默认为0
select * from po_1 limit 6;
-- 查询从第1条数据开始的后6条数据
select * from po_1 limit 2,6;
-- 查询从第2+1条数据开始的后6条数据
#查询结果集的合并:union/union all
-- union:合并查询结果(去除重复)
-- union all: 合并查询结果(不去除重复)
-- union和union all不能合并查询结果集列数不同的情况,可以合并多个不相关联的结果集。
select * from po_1 where p_id<=3
union all
select * from po_1 where p_name like '小_';
-- 查询数据出来的表不是真实的表,而是临时表也叫做临时结果集
#查询结果的排序 order by
select * from po_1 order by p_id;
-- 降序排列 desc
select * from po_1 order by p_id desc;
#分组查询 group by
-- 分组查询一般分组之后的处理
-- 分组统计
select sex,count(p_id) from po_1 group by sex; -- count 函数用于统计数量
-- 分组统计男女人数
-- select sex,count(p_id) from po_1 group by sex where sex='男'||sex='女'; -- 会报错
-- 分组后的条件不能使用where关键字,只能用having
select sex,count(p_id) from po_1 group by sex having sex='男'||sex='女';
-- having的查询效率比having要低很多
-- 使用分组时能使用where就不要去用having,where在分组之前使用
#别名的使用
select p_name as 姓名,p_id as 编号,sex as 姓别 from po_1;
-- 给数据表属性取别名as可以省略

    推荐阅读