mysql多表查询
Posted 龙宝cl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql多表查询相关的知识,希望对你有一定的参考价值。
一 首先,建表的sql语句:
分页操作:使用limit(参数1,参数2) 起始位置(参数1)=(第几页-1)*每页显示的条数(参数2) 1.分类表 create table category( cid varchar(32) primary key, cname varchar(100) ); 2.商品表 create table product( pid varchar(32) primary key, pname varchar(40), price double, category_id varchar(32) ); alter table product add foreign key(category_id) references category(cid); 3.添加外键列 alter table product add category_id varchar(32); 4.添加约束 alter table product add constraint product_fk foreign key(category_id) references category(cid); 5.订单表 create table orders( oid varchar(32) primary key, totalprice double ); 6.订单项表 create table orderitem( oid varchar(50), pid varchar(50) ); 7.联合主键 alter table orderitem add primary key(oid,pid); 8.订单表和订单项表的主外键关系 alter table orderitem add constraint orderitem_orders_fk foreign key(oid) references orders(oid); 9.商品表和订单项表的主外键关系 alter table orderitem add constraint orderitem_product_fk foreign key(pid) references product(pid); insert into category(cid,cname) values(\'c001\',\'家电\'); insert into category(cid,cname) values(\'c002\',\'服饰\'); insert into category(cid,cname) values(\'c003\',\'化妆品\'); insert into product(pid,pname,price,category_id) values(\'p001\',\'联想\',\'5000\',\'c001\'); insert into product(pid,pname,price,category_id) values(\'p002\',\'海尔\',\'5000\',\'c001\'); insert into product(pid,pname,price,category_id) values(\'p003\',\'雷神\',\'5000\',\'c001\'); insert into product(pid,pname,price,category_id) values(\'p004\',\'JACK JONES\',\'800\',\'c002\'); insert into product(pid,pname,price,category_id) values(\'p005\',\'真维斯\',\'200\',\'c002\'); insert into product(pid,pname,price,category_id) values(\'p006\',\'花花公子\',\'440\',\'c002\'); insert into product(pid,pname,price,category_id) values(\'p007\',\'劲霸\',\'2000\',\'c002\'); insert into product(pid,pname,price,category_id) values(\'p008\',\'香奈儿\',\'800\',\'c003\'); insert into product(pid,pname,price,category_id) values(\'p009\',\'相宜本草\',\'200\',\'c003\'); 声明外键约束 1.从orderitem到product的关系 alter table orderitem add foreign key(pid) references product(pid);
二 添加外键
商品表和商品类别表的主外键关系
mysql> alter table product add constraint product_category_fk foreign key(category_id) references category(cid);
订单表和订单项表的主外键关系
alter table orderitem add constraint orderitem_orders_fk foreign key(oid) references orders(oid);
商品表和订单项表的主外键关系
alter table orderitem add constraint orderitem_product_fk foreign key(pid) references product(pid);
补充:一对多,多对多,一对一 建表原则图解
三 多表查询
1 交叉连接查询:得到的是两个表的乘积
mysql> select * from category,product;
2 内连接查询
2.1隐式内连接
mysql> select * from category c,product p where c.cid=p.category_id;
2.2 显示内连接 (inner 可省略)
mysql> select * from category c inner join product p on c.cid=p.category_id;
3 外连接查询
3.1 左外连接(显示出了左边的表的全部以及和右边表的交集)
mysql> select * from category c left outer join product p on c.cid=p.category_id;
3.2 右外连接(显示出了右边的表的全部以及和右边表的交集)
mysql> select * from category c right outer join product p on c.cid=p.category_id;
注:内连接与外连接的区别?
四 子查询
查询联想的类别是什么?
mysql> select cname from category where cid=(select category_id from product where pname=\'联想
以上是关于mysql多表查询的主要内容,如果未能解决你的问题,请参考以下文章