• mysql8必知必会7 连接 内连接 外连接 交叉连接


     1 /*
     2   需求:建立产品和分类表
     3     1.查询每种分类的产品数量,没有产品的分类也要统计。(cname,quantity) 
     4     2.根据分类名称查询分类中的所有产品
     5 */
     6 
     7 -- -------------------
     8 -- category
     9 -- 先建立主表,再建立从表,可以在从表创建时添加外键。
    10 -- -------------------
    11 drop table if exists category;
    12 create table category(
    13     cid int unsigned key auto_increment,
    14     cname varchar(255)
    15 );
    16 -- show create table category;
    17 
    18 -- -------------------
    19 -- product
    20 -- -------------------
    21 drop table if exists product;
    22 create table product(
    23     pid int unsigned key auto_increment,
    24     pname varchar(255),
    25     price decimal(10, 2),
    26     cid int unsigned,
    27     constraint category_fk foreign key (cid) references category(cid)
    28 );
    29 -- show create table product;
    30 
    31 
    32 -- -------------------
    33 -- 插入测试数据
    34 -- -------------------
    35 insert into category(cname) values('蔬菜');
    36 insert into category(cname) values('水果');
    37 insert into category(cname) values('饮料');
    38 
    39 insert into product (pname, price, cid) 
    40 values('豆角', 2.35, (select cid from category where cname='蔬菜'));
    41 insert into product (pname, price, cid) 
    42 values('萝卜', 1.5, (select cid from category where cname='蔬菜'));
    43 insert into product (pname, price, cid) 
    44 values('香蕉', 3.6, (select cid from category where cname='水果'));
    45 insert into product (pname, price, cid) 
    46 values('苹果', 3.6, null);
    47 
    48 -- -------------------
    49 -- 1.查询每种分类的产品数量,没有产品的分类也要统计。(cname,quantity)
    50 -- -------------------
    51 select cname, count(*) quantity
    52 from product p right join category c
    53 on p.cid=c.cid
    54 group by cname;
    55 
    56 -- -------------------
    57 -- 2.根据分类名称查询分类中的所有产品
    58 -- -------------------
    59 -- 方法1 内连接
    60 select p.pname, p.price
    61 from product p join category c
    62 on p.cid=c.cid and c.cname='蔬菜';
    63 
    64 -- 方法2 子查询
    65 select p.pname, p.price 
    66 from product p
    67 where p.cid=(select c.cid from category c where cname='蔬菜');
    68 
    69 -- -------------------
    70 -- 3.使用union实现全外连接
    71 -- -------------------
    72 select * from product p left join category c
    73 on p.cid=c.cid
    74 union
    75 select * from product p right join category c
    76 on p.cid=c.cid;
  • 相关阅读:
    Vue- 对象语法 v-bind:class与对象语法的使用(重要)
    关于vue中$emit事件问题
    深入理解vue.js2.0指令v-for使用及索引获取
    到底vuex是什么?
    Vue.js学习系列二 —— vuex学习实践笔记(附DEMO)
    前端HTML5几种存储方式的总结
    JSON和JS对象之间的互转
    Vue2.0子父组件通信
    C#字符串和16进制转换
    C#中int32 的有效值范围
  • 原文地址:https://www.cnblogs.com/mozq/p/10288625.html
Copyright © 2020-2023  润新知