单表查询
单表查询
select
没太大用
select 算式;
select 任意内容 as 字段名;
from
select * from t1,t2; (返回t1,t2表的笛卡尔积(所有的有序对))
where
后面一般加条件进行筛选
in
一般辅助筛选条件
例:select * from 表名 where address in(‘beijing’,‘shanghai’); 筛选地址为beijing,shanghai 的所有信息
select * from 表名 where address not in(‘beijing’,‘shanghai’); 反之
between…and…
例:select * from 表名 where age between 15 and 20; 查询年龄在15到20间的所有信息
select * from 表名 where age not between 15 and 20; 反之
is null
例:select * from 表名 where age is null; 查询年龄为空的所有信息
select * from 表名 where age is not null; 反之
聚合函数
select sum(字段) from 表名;
求该字段所有数据的和
select avg(字段) from 表名;
求该字段所有数据的平均值
select max(字段) from 表名;
求该字段数据的最大值 (min(字段)同理)
select count(字段) from 表名;
求该字段数据的个数
like(模糊查询)
例:select * from 表名 where name like ‘王%’; %表示多个字符
select * from 表名 where name like ‘王_’; _表示单个字符
order by(排序查询)
例:select * from 表名 order by chinese asc; 按照chinese升序查询
select * from 表名 order by chinese desc; 按照chinese降序查询
group by(分组查询)
注:必须结合聚合函数使用
例:select avg(age) as ‘年龄’, address as ‘地址’ from people group by address; 按地址分组
select max(age) as ‘年龄’, gender as ‘性别’ from people group by gender; 按性别分组
select group_concat(name), gender from people group by gender;
having(筛选)
与where的异同:
同:后面都跟筛选条件
异:where后的条件筛选原表数据,having后的条件筛选查询后的数据
例: select avg(age) as ‘age’, gender as ‘gender’ from people group by gender having age>42.3;
limit(筛选)
例:select * from people limit 1,3; (从第二个开始往后查三条数据)
(再例:若limit 0,4 表示从第一个开始往后查三条数据)
**实例:**组合使用查询最年轻的前三位
select * from people order by age asc limit 0,3;
先按年龄升序排序,再查前三个。
distinct(查询结果去重复)
select distinct address from people;