子查询:mysql
子查询是指出如今其余sql语句内的select子句。sql
select * from t1 where col1=(select col2 from t2);函数
select * from t1 称外层查询spa
select col2 from t2 称为子查询blog
子查询指嵌套在查询内部,且必须始终出如今圆括号内。it
子查询能够包含多个关键字或条件:distinct、group by、order by 、limit等。table
子查询能够返回标量、一行、一列、或子查询。class
使用比较运算符的子查询:date
AVG:是聚合函数select
select avg(goods_priece) from tdb_goods;
select round(avg(goods_priece) ,2) from tdb_goods;
select goods_id,gods_name,goods_price from tdb_goods where goods_price>=5636.36;
合并:
select goods_id,gods_name,goods_price from tdb_goods where goods_price>=(select round(avg(goods_priece) ,2) from tdb_goods);
select goods_price from tdb_goods where goods_cate='超级本';
用any、some、all修饰的比较运算符:
any、some:符合其中的一个就行
all:符合里面的所有
由not in /exists引起的子查询:
=any 与 in等效
!=all 与 not in等效
若是子查询返回任何行,exists将返回true,不然为false。(用得较少)
tdb_goods_cates 分类表
select goods_cate from tdb_goods group by goods_cate;//商品表分了7类
insert...select 将查询结果写入数据表
insert tdb_goods_cates(cate_name) select good_cate from tdb_goods group by goods_cate;
多表的更新(重点):
inner join 内链接
left join 左链接
right join 右链接
update tdb_goods inner join tdb_goods_cates on goods_cate =cate_name set goods_cate=cate_id;
建立数据表同时将查询结果写入到数据表
select brand_name from tdb_goods group by brand_name;
select brand_name from tdb_goods group by brand_name;
update tdb_goods g inner join tdb_goods_brands b on g.brand_name =b.brand_name set brand_name =brand_id set g.brand_name =b.brand_id;
alter table tdb_goods change goods_cate cate_id smallint unsigned not null,
change brand_name brand_id smallint unsigned not null;
链接的语法结构:
内链接(在mysql中,inner join、cross join、join是等价的):
left 【outer】join:左外链接
right 【outer】join:右外链接
使用on关键字来设定链接条件,也能够使用where来代替
一般使用on关键字来设定链接条件,使用where关键字来进行结果集记录的过滤。
内链接:(显示2张表公共的部分)--用得比较多一些
select goods_id,goods_name,cate_name from tdb_goods inner join tdb_goods_cates on tdb_goods.cate_id=tdb_goods_cates.cate_id;
外链接:
多表链接(重点):
select goods_id,goods_name,cate_name,brand_name,goods_price from tdb_goods g
inner join tdb_goods_cates c on g.cate_id =c.cate_id
inner join tdb_goods_brands b on g.brand_id=b.brand_id;