/*

需求:建立产品和分类表

1.查询每种分类的产品数量,没有产品的分类也要统计。(cname,quantity)

2.根据分类名称查询分类中的所有产品

*/

-- -------------------

-- 当表存在外键关系时,先删从表,再删主表

-- -------------------

drop table if exists product;

drop table if exists category;

-- -------------------

-- 先建立主表,再建立从表,可以在从表创建时添加外键

-- -------------------

-- -------------------

-- category

-- -------------------

create table category(

cid int unsigned key auto_increment,

cname varchar(255)

);

-- show create table category;查看外键

-- -------------------

-- product

-- -------------------

create table product(

pid int unsigned key auto_increment,

pname varchar(255),

price decimal(10, 2),

cid int unsigned,

constraint category_fk foreign key (cid) references category(cid)

);

-- show create table product;查看外键

-- -------------------

-- 插入测试数据

-- -------------------

insert into category(cname) values('蔬菜');

insert into category(cname) values('水果');

insert into category(cname) values('饮料');

insert into product (pname, price, cid)

values('豆角', 2.35, (select cid from category where cname='蔬菜'));

insert into product (pname, price, cid)

values('萝卜', 1.5, (select cid from category where cname='蔬菜'));

insert into product (pname, price, cid)

values('香蕉', 3.6, (select cid from category where cname='水果'));

insert into product (pname, price, cid)

values('苹果', 3.6, null);

-- -------------------

-- 1.查询每种分类的产品数量,没有产品的分类也要统计。(cname,quantity)

-- -------------------

-- 错误的写法,count(*)返回的是结果的行数,跟值是否为空无关

select cname, count(*) quantity

from product p right join category c

on p.cid=c.cid

group by cname;

-- 正确的写法,count(p.pid)返回的是expr非空的值的个数

select cname, count(p.pid) quantity

from product p right join category c

on p.cid=c.cid

group by cname;

-- -------------------

-- 2.根据分类名称查询分类中的所有产品

-- -------------------

-- 方法1 内连接

select p.pname, p.price

from product p join category c

on p.cid=c.cid and c.cname='蔬菜';

-- 方法2 子查询

select p.pname, p.price

from product p

where p.cid=(select c.cid from category c where cname='蔬菜');

-- -------------------

-- 3.使用union实现全外连接

-- -------------------

select * from product p left join category c

on p.cid=c.cid

union

select * from product p right join category c

on p.cid=c.cid;

mysql产品分类_MySQL习题1 一对多实例 产品和分类相关推荐

  1. mysql调试事件_mysql日志管理分析调试实例_mysql

    以下的文章主要介绍的是mysql 操作日志查看的实际操作步骤以及对其实际操作步骤的具体描述,假如你在实际操作中遇到相似的情况,但是你却不知道对其如何正确的解决,那么以下的文章对你而言一定是良师益友. ...

  2. mysql 页分裂_mysql聚簇索引的页分裂原理实例分析

    本文实例讲述了mysql聚簇索引的页分裂.分享给大家供大家参考,具体如下: 在MySQL中,MyISAM采用的是非聚簇索引的,InnoDB存储引擎是采用聚簇索引的. 聚簇结构的特点: 根据主键查询条目 ...

  3. mysql week统计_MySQL按周统计 WEEK 实例

    --创建数据样例表 CREATE TABLE `day_weight_tb` ( `day_date` varchar(16) DEFAULT NULL, `in_weight` varchar(64 ...

  4. mysql函数大全最小,MySQL函数一览_MySQL函数全部汇总

    前言 MySQL提供了众多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,从而更加灵活地满足不同用户的需求.本文将MySQL的函数分类并汇总,以便以后用到的时候可以随时 ...

  5. mysql binlog协议_mysql binlog协议分析--具体event

    这几天在修改canal, 连接mysql和maria接收到的event有所区别 拿一个简单的insert sql来举例 mysql 会有以下几个event写入到binlog里 1.ANONYMOUS_ ...

  6. mysql客户端指令_mysql command line client(mysql命令行客户端)

    mysql command line client(mysql命令行客户端) (2010-03-24 09:18:38) 标签: 文化 分类: 数据库 1.输入密码:****** 2.ues mysq ...

  7. mysql使用方法_Mysql的常用用法

    一.mysql中limit的用法详解[数据分页常用] 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT  ...

  8. mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql

    peewee连接mysql中文数据编码 系统是win7 x64 python 2.7.6的site.py里面编码设定为 utf-8 py文件首行指定 #coding:utf-8 mysql 5.5.3 ...

  9. mysql set语句_MySQL Prepared语句简介

    之前的MySQL版本4.1,查询以文本格式发送到MySQL服务器. 之后,MySQL服务器使用文本协议将数据返回给客户端.MySQL必须完全解析查询,并将结果集转换为字符串,然后再将其返回给客户端. ...

最新文章

  1. python爬取电影和美食数据实战
  2. 一条长度为l的笔直街道 java_如图,在一条笔直的东西向海岸线l上有一长为1.5km的码头MN和灯塔C,灯塔C距...
  3. sublime text 3 python开发环境配置
  4. MethodBase.GetCurrentMethod 方法
  5. 三星note4安装linux,Leanote Ubuntu 源码安装
  6. SAP销售和财务数据库表之间的关系
  7. Java操作excel工具easyExcel
  8. Linux系统下怎样配置多个Tomcat
  9. java map遍历删除_HashMap的各种遍历和删除方式总结
  10. 微软 Edge 浏览器被指共享隐私遥测数据
  11. rtabmap_ros安装---43
  12. SpringMVC form中commandName报错问题
  13. 将路由器作为AP来使用
  14. 如何获取淘宝/天猫商品历史价格信息的API接口
  15. Android——自定义带刻度的SeekBar单向拖动条
  16. java游泳馆浴池管理系统-小程序
  17. Linux圆角窗口,在deepin 20中出现electron窗口圆角处有不透明黑色的处理
  18. IE浏览器安全性能在线测试(转)
  19. ADC的基本工作原理
  20. C#集合利用System.Linq.Enumerable.Select()方法执行集合类型转换

热门文章

  1. Win10切换到了Users用户怎么切换回来
  2. DNS和HTTP服务
  3. 九宫格拼图游戏初版(练练手)
  4. Google 全国 地图 纠偏数据 偏移数据 超高精度(0.002) (纠偏、偏移、地图、数据)
  5. 服务器 开机时间 linux,查看Linux系统启动时间和运行时间
  6. 上海网站排名优化找哪家?清法网络助你一臂之力
  7. 趣图:公司里来了一个程序员鼓励师
  8. Java游戏培训机构哪家专业
  9. 饿饿,饭饭「每日一题」
  10. Golang 实现word和Excel处理