对表的查询几乎可以说是增删改查中最难也是最重要的,所以我另外拿出来写一篇博客
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;
获取所有电影的平均价格
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 到这里 就是查询中的简单知识,复杂的查询太复杂了 一篇写不完