mysql--表查询

条件查询:

-- 查询name = '测试' 或 email="test.com" 和id=1
select * from db where (name = '测试' or email="test.com")  and id=1;
-- 查找id在(1,2,3)
select * from db where id in (1,2,3);
-- 查找id在user表中的数据
select * from db where id in (select id from user);
-- 查找uer表id=5的语句是否存在,不存在则不查询db表
select * from db where exists (select * from user where id=5);
-- 查找uer表id=5的语句是否不存在,不存在则查询db表
select * from db where not exists (select * from user where id=5);
-- 查找db表中id大于2的数据且age大于5的数据
select * from (select * from db where id>2) as T where as.age > 5;

通配符:

-- %匹配多个,_匹配一个;
select * from message where mail like "%com";
select * from message where mail like "_123124@qq.com";
select * from message where mail like "_123124@%";

排序:

-- 根据age倒序排序
select * from message order by age desc ;
-- 根据age从小到大排序
select * from message order by age;
select * from message order by age asc;
-- 先根据age从小到大排序,age相等时根据id从大到小排序
select * from message order by age asc,id desc;

取部分数据

-- 取前五行数据
select * from message limit 5;
-- 先排序,在取前5行
select * from message order by id desc limit 5;
-- 从第一个位置后,取5行数据
select * from message limit 5 offset 1;

分组:

-- 根据age分组
-- max(id)分组后保留最大的id数据
-- min(id)分组后保留最小的id数据
-- count(1)统计合并的数量
-- sum(id) 统计合并的id总和
-- avg(id) 统计合并的id平均值
select age,max(id),min(id),count(1),sum(id),avg(id) from message group by age;
-- 对分组后的数据在添加条件,使用having
select age,count(1) from message group by age having count(1) > 2;

连表查询:

-- 连表查询
select * from message inner join user on message.id=user.id;
-- 查询展示信息:message: id,age,phone; user: phone
-- left outer join,左表为主表,添加条件:on
select message.id,message.name,message.age,user.phone from message left join user on message.name=user.name;
posted @ 2021-12-15 18:54  咖啡馆  阅读(39)  评论(0编辑  收藏  举报