""" cate_name:分类名称 brand_name:品牌 is_show:是否显示 is_saleoff:是否售罄/是否卖光了 工作中的时候尽量使用group by 分组进行筛选,where用的较少. select round(avg(price),2) from goods group by cate_name; 在一个库中查询另外一个库的表 格式: select * from 库.表; 示例:当前数据库是jd,如果想要执行jing_dong这个数据库中的表数据,如下: 1.>select database(); +------------+ | database() | +------------+ | jd | +------------+ 1 row in set (0.00 sec) 2.>mysql> select * from jing_dong.goods; +----+---------------------------------------+---------+----------+-----------+---------+------------+ | id | name | cate_id | brand_id | price | is_show | is_saleoff | +----+---------------------------------------+---------+----------+-----------+---------+------------+ | 1 | r510vc 15.6英寸笔记本 | 5 | 2 | 3399.000 | | | | 2 | y400n 14.0英寸笔记本电脑 | 5 | 7 | 4999.000 | | | | 3 | g150th 15.6英寸游戏本 | 4 | 9 | 8499.000 | | | | 4 | x550cc 15.6英寸笔记本 | 5 | 2 | 2799.000 | | | | 5 | x240 超极本 | 7 | 7 | 4880.000 | | | | 6 | u330p 13.3英寸超极本 | 7 | 7 | 4299.000 | | | | 7 | svp13226scb 触控超极本 | 7 | 6 | 7999.000 | | | | 8 | ipad mini 7.9英寸平板电脑 | 2 | 8 | 1998.000 | | | | 9 | ipad air 9.7英寸平板电脑 | 2 | 8 | 3388.000 | | | | 10 | ipad mini 配备 retina 显示屏 | 2 | 8 | 2788.000 | | | | 11 | ideacentre c340 20英寸一体电脑 | 1 | 7 | 3499.000 | | | | 12 | vostro 3800-r1206 台式电脑 | 1 | 5 | 2899.000 | | | | 13 | imac me086ch/a 21.5英寸一体电脑 | 1 | 8 | 9188.000 | | | | 14 | at7-7414lp 台式电脑 linux ) | 1 | 3 | 3699.000 | | | | 15 | z220sff f4f06pa工作站 | 3 | 4 | 4288.000 | | | | 16 | poweredge ii服务器 | 3 | 5 | 5388.000 | | | | 17 | mac pro专业级台式电脑 | 3 | 8 | 28888.000 | | | | 18 | hmz-t3w 头戴显示设备 | 6 | 6 | 6999.000 | | | | 19 | 商务双肩背包 | 6 | 6 | 99.000 | | | | 20 | x3250 m4机架式服务器 | 3 | 1 | 6888.000 | | | | 21 | 商务双肩背包 | 6 | 6 | 99.000 | | | +----+---------------------------------------+---------+----------+-----------+---------+------------+ 21 rows in set (0.00 sec) 问题:很多数据放在一张表中,如果删除其中一部分,就会把其他字段的数据也删除了但是这个字段也应该保留下来 原因: 删除异常:品牌分类跟随着商品信息一起被删除 分类 品牌信息和商品信息分开存储-->解决删除异常 品牌和分类信息应该独立于商品信息独立存在 1.> 直接将select的结果插入到另外一张表中: 千万记得没有values关键字 insert into goods_cates (name) select cate_name from goods group by cate_name; 2.>使用一个表的字段更新另外一个字段--->连表更新 goods join goods_cates on goods.cate_name=goods_cates.name ---> 这是一张表 select * from goods join goods_cates on goods.cate_name=goods_cates.name; +----+---------------------------------------+---------------------+------------+-----------+---------+------------+----+---------------------+ | id | name | cate_name | brand_name | price | is_show | is_saleoff | id | name | +----+---------------------------------------+---------------------+------------+-----------+---------+------------+----+---------------------+ | 1 | r510vc 15.6英寸笔记本 | 笔记本 | 华硕 | 3399.000 | | | 5 | 笔记本 | | 2 | y400n 14.0英寸笔记本电脑 | 笔记本 | 联想 | 4999.000 | | | 5 | 笔记本 | | 3 | g150th 15.6英寸游戏本 | 游戏本 | 雷神 | 8499.000 | | | 4 | 游戏本 | | 4 | x550cc 15.6英寸笔记本 | 笔记本 | 华硕 | 2799.000 | | | 5 | 笔记本 | | 5 | x240 超极本 | 超级本 | 联想 | 4880.000 | | | 7 | 超级本 | | 6 | u330p 13.3英寸超极本 | 超级本 | 联想 | 4299.000 | | | 7 | 超级本 | | 7 | svp13226scb 触控超极本 | 超级本 | 索尼 | 7999.000 | | | 7 | 超级本 | | 8 | ipad mini 7.9英寸平板电脑 | 平板电脑 | 苹果 | 1998.000 | | | 2 | 平板电脑 | | 9 | ipad air 9.7英寸平板电脑 | 平板电脑 | 苹果 | 3388.000 | | | 2 | 平板电脑 | | 10 | ipad mini 配备 retina 显示屏 | 平板电脑 | 苹果 | 2788.000 | | | 2 | 平板电脑 | | 11 | ideacentre c340 20英寸一体电脑 | 台式机 | 联想 | 3499.000 | | | 1 | 台式机 | | 12 | vostro 3800-r1206 台式电脑 | 台式机 | 戴尔 | 2899.000 | | | 1 | 台式机 | | 13 | imac me086ch/a 21.5英寸一体电脑 | 台式机 | 苹果 | 9188.000 | | | 1 | 台式机 | | 14 | at7-7414lp 台式电脑 linux ) | 台式机 | 宏碁 | 3699.000 | | | 1 | 台式机 | | 15 | z220sff f4f06pa工作站 | 服务器/工作站 | 惠普 | 4288.000 | | | 3 | 服务器/工作站 | | 16 | poweredge ii服务器 | 服务器/工作站 | 戴尔 | 5388.000 | | | 3 | 服务器/工作站 | | 17 | mac pro专业级台式电脑 | 服务器/工作站 | 苹果 | 28888.000 | | | 3 | 服务器/工作站 | | 18 | hmz-t3w 头戴显示设备 | 笔记本配件 | 索尼 | 6999.000 | | | 6 | 笔记本配件 | | 19 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | | 6 | 笔记本配件 | | 20 | x3250 m4机架式服务器 | 服务器/工作站 | ibm | 6888.000 | | | 3 | 服务器/工作站 | | 21 | 商务双肩背包 | 笔记本配件 | 索尼 | 99.000 | | | 6 | 笔记本配件 | +----+---------------------------------------+---------------------+------------+-----------+---------+------------+----+---------------------+ 使用商品分类表中的id去更新goods商品表中的cate_name update goods join goods_cates on goods.cate_name=goods_cates.name set goods.cate_name = goods_cates.id; 1.>一步创建 create table goods_brands( -> id int unsigned primary key auto_increment, -> name varchar(32) not null) select brand_name as name from goods group by brand_name; 使用品牌表中的品牌id去修改商品表中的品牌信息 2.>这就是一张表: goods join goods_brands on goods.brand_name=goods_brands.name select * from goods join goods_brands on goods.brand_name=goods_brands.name; update goods join goods_brands on goods.brand_name=goods_brands.name set goods.brand_name = goods_brands.id; 修改商品表的表结构中的字段名 类型 约束 记得alter table 的table不能丢了. alter table goods change cate_name cate_id int unsigned not null, change brand_name brand_id int unsigned not null; """ """外键约束:foreign key""" """ A表中A字段引用了B表的B字段的值 含有外键的称为子表 提供外键所需数据的叫父表 A-->子表 B-->父表 外键的效果: 引擎 是InnoDB才支持外键 外键是一种强制约束 CONSTRAINT `goods_ibfk_1` FOREIGN KEY (`brand_id`) REFERENCES `goods_brands` (`id`), 外键约束名为:goods_ibfk_1 删除外键约束: alter table goods drop foreign key goods_ibfk_1; a字段的所有取值必须在b字段出现过. ----> 外键约束 # 查看三张表的数据. ----> 这里记得看下 select * from goods join goods_cates on goods.cate_id=goods_cates.id join goods_brands on goods.brand_id=goods_brands.id; +----+---------------------------------------+---------+----------+-----------+---------+------------+----+---------------------+----+--------+ | id | name | cate_id | brand_id | price | is_show | is_saleoff | id | name | id | name | +----+---------------------------------------+---------+----------+-----------+---------+------------+----+---------------------+----+--------+ | 1 | r510vc 15.6英寸笔记本 | 5 | 2 | 3399.000 | | | 5 | 笔记本 | 2 | 华硕 | | 2 | y400n 14.0英寸笔记本电脑 | 5 | 7 | 4999.000 | | | 5 | 笔记本 | 7 | 联想 | | 3 | g150th 15.6英寸游戏本 | 4 | 9 | 8499.000 | | | 4 | 游戏本 | 9 | 雷神 | | 4 | x550cc 15.6英寸笔记本 | 5 | 2 | 2799.000 | | | 5 | 笔记本 | 2 | 华硕 | | 5 | x240 超极本 | 7 | 7 | 4880.000 | | | 7 | 超级本 | 7 | 联想 | | 6 | u330p 13.3英寸超极本 | 7 | 7 | 4299.000 | | | 7 | 超级本 | 7 | 联想 | | 7 | svp13226scb 触控超极本 | 7 | 6 | 7999.000 | | | 7 | 超级本 | 6 | 索尼 | | 8 | ipad mini 7.9英寸平板电脑 | 2 | 8 | 1998.000 | | | 2 | 平板电脑 | 8 | 苹果 | | 9 | ipad air 9.7英寸平板电脑 | 2 | 8 | 3388.000 | | | 2 | 平板电脑 | 8 | 苹果 | | 10 | ipad mini 配备 retina 显示屏 | 2 | 8 | 2788.000 | | | 2 | 平板电脑 | 8 | 苹果 | | 11 | ideacentre c340 20英寸一体电脑 | 1 | 7 | 3499.000 | | | 1 | 台式机 | 7 | 联想 | | 12 | vostro 3800-r1206 台式电脑 | 1 | 5 | 2899.000 | | | 1 | 台式机 | 5 | 戴尔 | | 13 | imac me086ch/a 21.5英寸一体电脑 | 1 | 8 | 9188.000 | | | 1 | 台式机 | 8 | 苹果 | | 14 | at7-7414lp 台式电脑 linux ) | 1 | 3 | 3699.000 | | | 1 | 台式机 | 3 | 宏碁 | | 15 | z220sff f4f06pa工作站 | 3 | 4 | 4288.000 | | | 3 | 服务器/工作站 | 4 | 惠普 | | 16 | poweredge ii服务器 | 3 | 5 | 5388.000 | | | 3 | 服务器/工作站 | 5 | 戴尔 | | 17 | mac pro专业级台式电脑 | 3 | 8 | 28888.000 | | | 3 | 服务器/工作站 | 8 | 苹果 | | 18 | hmz-t3w 头戴显示设备 | 6 | 6 | 6999.000 | | | 6 | 笔记本配件 | 6 | 索尼 | | 19 | 商务双肩背包 | 6 | 6 | 99.000 | | | 6 | 笔记本配件 | 6 | 索尼 | | 20 | x3250 m4机架式服务器 | 3 | 1 | 6888.000 | | | 3 | 服务器/工作站 | 1 | ibm | | 21 | 商务双肩背包 | 6 | 6 | 99.000 | | | 6 | 笔记本配件 | 6 | 索尼 | +----+---------------------------------------+---------+----------+-----------+---------+------------+----+---------------------+----+--------+ """