单表查询

单表查询

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;

单表查询