学好SQL--MySQL简单使用(3)

1.查

对表的查询几乎可以说是增删改查中最难也是最重要的,所以我另外拿出来写一篇博客
A.简单查询

select * from 表名;

还是拿昨天那张表来测试吧,插入几条数据(批量插入方法)

insert into my_movie values 
(null,'闪电侠',22.34,'guoxiaoxia','2014-11-12'),
(null,'蝙蝠侠',44.6,'xiaomi','2014-02-25'),
(null,'疑犯追踪',66.3,'jack','2015-03-14'),
(null,'妙警贼探',102.4,'tom','2017-08;3)`

select * from my_movie;

这里写图片描述


select mId,mName from my_mov>
select mId mid,mName mname from my_movie;

这里写图片描述
这里写图片描述
对比这两张图就可以很容易看出区别



去掉重复数据查询,比如这里的价格,我先插入一条价格特别的数据

insert into my_movie values (null,’未来青年’,’44.6’,’oliver’,’2017-11-11’);

先对价钱进行查询

select mPrice from my_movie;

这里写图片描述

select distinct(mPrice) from my_movie;

这里写图片描述



将所有的电影价格+10显示

select mName,mPrice+10 from my_movie;

这里写图片描述

看到没这里所有价格都+10显示出来了,但是这只是数据显示而已,并没有真的所有价格都加了10


B.条件查询

select * from my_movie where mName = ‘蝙蝠侠’;

这里写图片描述

select * from my_movie where mName like ‘%侠;

这里写图片描述

查询电影名 名字最后一个字是 侠

select * from my_movie where mName like ‘%侠’

这里写图片描述

今天发生了个尴尬的事,我领导在操作数据库,突然碰到一个需要模糊查询的要求,然后写了 查了半天都没弄出来(他很久没写代码了 忘记了),然后问我 我看了下,就觉得奇怪了,一个简单的模糊查询还有什么技巧,结果我也没看出来 sql那里有问题,最后他百度 才发现竟然没有写 % ,尴尬。。。。。

查询主键是1,3,4的电影信息

select * from my_movie where mId in(1,3,4);

这里写图片描述

这里同时查询多个 使用关键字 in(,,,) 如果不在表中的条件,比如这里一共只有五条数据,主键最高是5,我要查询主键为9 的数据,是查不到的,如下

select * from my_movie where mId in(1,3,9);

这里写图片描述

C.排序查询

select * from my_movie order by mPrice asc;

这里写图片描述

排序结合其他条件结合,比如 排序和模糊 结合查询,查询 电影名最后一个字是 侠 并对结果按价格降序排列

select * from my_movie where mName like “%侠” order by mPrice desc;

注意:这里不需要使用 and 连接两个条件

这里写图片描述

D.聚合函数
获得所有电影价钱的总和

select sum(mPrice) as totalPrice from my_movie;

这里可以使用 as 也可以不使用
这里写图片描述

获取所有电影的平均价格

select avg(mPrice) from my_movie;

这里写图片描述

获取所有商品的个数

select count(*) from my_movie;

这里写图片描述

E:分组操作
对一个表中的数据进行分组查询,比如这里,我添加一个分组Id字段用来对表中的数据分成两组,mId为1 2属于超级英雄一组,3 4 5分为非凡英雄一组,分组id为 cId

alter table my_movie add cId varchar(20);

查询表如下
这里写图片描述

现在设置表中的数据

update my_movie set cId = ‘1’;

这里写图片描述

也可以条件设置数据

update my_movie set cId = ‘2’ where mId in(3,4,5);

这里写图片描述

好的 到这里 ,对数据已经分组完成,现在可以进行分组查询了

首先根据cId进行分组,分组后查询各组电影的个数

select cId,count(*) from my_movie group by cId;

这里写图片描述

根据cId进行分组,分组后统计每组商品平均价格,并且平均价格必须要大于40

select cId,avg(mPrice) as avgPrice from my_movie group by cId having avgPrice >40;
select cId,avg(mPrice) from my_movie group by cId having avg(mPrice) >40;

这里写图片描述

注意: 这里是对分组后的数据进行筛寻,所有不是用 and 而是用 having

ok 到这里 就是查询中的简单知识,复杂的查询太复杂了 一篇写不完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值