• 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='联想

     

  • 相关阅读:
    leetcode 850. Rectangle Area II
    leetcode 699. Falling Squares 线段树的实现
    leetcode 847. Shortest Path Visiting All Nodes 无向连通图遍历最短路径
    leetcode 843. Guess the Word
    javaMail实现收发邮件(三)
    javaMail实现收发邮件(二)
    javaMail实现收发邮件(一)
    springboot整合websocket实现一对一消息推送和广播消息推送
    jieba分词/jieba-analysis(java版)
    java实现两个不同list对象合并后并排序
  • 原文地址:https://www.cnblogs.com/cl-rr/p/9047567.html
Copyright © 2020-2023  润新知