数据表连接

-- 交叉连接 笛卡尔积
SELECT * from emp02 join dept;
-- 内连接  找出(过滤)在交叉连接的结果表中的表1的字段1的值等于表2的字段2的值的那些行。
SELECT * from emp02 join dept on emp02.did=dept.did;
SELECT * from emp02 join dept where emp02.did=dept.did;
-- 查询小红的部门经理
select mgr from emp02 join dept on emp02.did=dept.did where ename='小红';
-- 查询小蓝的部门电话
select phone from emp02 join dept on emp02.did=dept.did where ename='小兰';

-- 左外连接 内连接的查询结果+左表中不满足条件的数据,对应右边中字段自动补null
select * from product_type left join product on product.protype_id=product_type.protype_id;
-- 右外连接 内连接的查询结果+右表中不满足条件的数据,对应左边中字段自动补null
select *from product right join product_type on product.protype_id=product_type.protype_id;
-- 找出索尼4g手机所属类别名称
select protype_name from product join product_type on product.protype_id=product_type.protype_id where pro_name like('索尼%4G手机%');
select protype_name from  product_type where protype_id in (select protype_id from product where  pro_name like '索尼%4G手机%' )
-- 找出属于手机的数码产品
select pro_name from product join product_type on product.protype_id=product_type.protype_id where protype_name='手机数码';
select * from product where protype_id in (select protype_id  from product_type where
protype_name='手机数码');
/*子查询 把一个查询的结果当做另一个查询条件
 先按照条件查询主键
 再根据另一张表的外键查结果*/
-- 找出所有带电 字类别的产品

select pro_name from product where protype_id in (SELECT protype_id from product_type where protype_name like '%电%')

union 联合查询     [ALL | DISTINCT]     order  by .....  limit ....;

 

(select pro_name from product where protype_id in (SELECT protype_id from product_type where protype_name like '%电%') )union distinct(select  pro_name  from product join product_type on product.protype_id=product_type.protype_id where protype_name like '%电%')
order by pro_name desc
-- LIMIT 0,4;
LIMIT 4,4;

-- 创建副表product表
create table product(
	pro_id int primary key auto_increment,
	pro_name varchar(40),
	protype_id int,
	price double,
	pinpai varchar(20),
	chandi varchar(20),
	constraint ft_product_product_type foreign key (protype_id) references product_type(protype_id)
);
-- 创建主表product_type
create table product_type(
	protype_id int primary key auto_increment,
	protype_name varchar(20)
);
-- 添加主表数据
insert into product_type (protype_name) vaLUES('家用电器');
insert into product_type (protype_name) vaLUES('手机数码');
insert into product_type (protype_name) vaLUES('电脑办公');
insert into product_type (protype_name) vaLUES('图书音像');
insert into product_type (protype_name) vaLUES('家具家居');
insert into product_type (protype_name) vaLUES('服装配饰');
insert into product_type (protype_name) vaLUES('个护化妆');
insert into product_type (protype_name) vaLUES('运动户外');
insert into product_type (protype_name) vaLUES('汽车用品');
insert into product_type (protype_name) vaLUES('食品酒水');
insert into product_type (protype_name) vaLUES('营养保健');
-- 副表添加数据
insert into product (pro_name,protype_id,price,pinpai,chandi)values('康佳(KONKA)42英寸全高清液晶电视',1,1999,'康佳','深圳');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('索尼(SONY)4G手机(黑色)',2,3238,'索尼','深圳');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('海信(Hisense)55寸智能电视',1,4199,'海信','青岛');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('联想(Lenovo)14.0英寸笔记本电脑',3,5499,'联想','北京');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('索尼(SONY)13.3英寸触控超极本',3,11499,'索尼','天津');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('索尼(SONY)60英寸全高清液晶电视',1,6999,'索尼','北京');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('联想(Lenovo)14.0英寸笔记本电脑',3,2999,'联想','北京');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('联想 双卡双待3G手机',2,988,'联想 ','北京');
insert into product (pro_name,protype_id,price,pinpai,chandi)values('惠普(HP)黑白激光打印机',3,1169,'惠普','天津');
-- 左外连接 内连接的查询结果+左表中不满足条件的数据,对应右边中字段自动补null
select * from product_type left join product on product.protype_id=product_type.protype_id;
-- 右外连接 内连接的查询结果+右表中不满足条件的数据,对应左边中字段自动补null
select *from product right join product_type on product.protype_id=product_type.protype_id; 
-- 找出索尼4g手机所属类别名称
select protype_name from product join product_type on product.protype_id=product_type.protype_id where pro_name like('索尼%4G手机%');
select protype_name from  product_type where protype_id in (select protype_id from product where  pro_name like '索尼%4G手机%' )
-- 找出属于手机的数码产品
select pro_name from product join product_type on product.protype_id=product_type.protype_id where protype_name='手机数码';
select * from product where protype_id in (select protype_id  from product_type where
protype_name='手机数码');
/*子查询 把一个查询的结果当做另一个查询条件
	先按照条件查询主键
	再根据另一张表的外键查结果*/
-- 找出所有带电 字类别的产品
(select pro_name from product where protype_id in (SELECT protype_id from product_type where protype_name like '%电%') )union distinct(select  pro_name  from product join product_type on product.protype_id=product_type.protype_id where protype_name like '%电%')
order by pro_name desc 
-- LIMIT 0,4;
LIMIT 4,4;
select *from product;
select *from product_type; 

  

posted @ 2019-12-03 18:14  xiren88  阅读(131)  评论(0编辑  收藏  举报