拆表、pymysql查詢


拆表

? ? ? ? ? ? ? ? ? ? ? ?把圖一拆分成圖二-圖1-圖2,參考圖三

圖一

圖二

圖1

圖2

圖三

一、goods_cates

-- unsigned:無符號(非負數)

-- 創建商品分類表

create table if not exists goods_cates(?

? ? id int unsigned primary key auto_increment,

? ? name varchar(40) not null-- 類別名稱 40字長度 不允許為空

);

-- 查詢goods表中商品的種類

select cate_name from goods group by cate_name;?

-- 將分組結果寫入到goods_cates數據表

insert into goods_cates (name) select cate_name from goods group by cate_name;-- select前不能加values??

-- 通過goods_cates數據表來更新goods表

update goods as g inner join goods_cates as c on g.cate_name=c.name set g.cate_name=c.id;

-- 解釋:更新goods表起別名g —— inner join goods_cates關聯類別表 —— 給類別表起名c —— on后面相當條件 —— g.cate_name=c.name 關聯條件商品表的類別名稱=類別表名稱 —— set g.cate_name=c.id設置商品表的類別名稱=……

-- 通過alter table語句修改表結構(既改名字又改類型)change:重命名

alter table goods change cate_name cate_id int unsigned not null;-- 類別的名稱cate_name重命名為cate_id

-- 關聯外鍵

alter table goods add foreign key (cate_id) references goods_cates(id);

-- 給alter table goods添加一個foreign key(外鍵)給cate_id設 —— references:關聯 和goods_cates類別表的id關聯

-- 在 goods 數據表中插入商品(用來測試外鍵的)

insert into goods (name,cate_id,brand_id,price)

values('LaserJet Pro P1606dn 黑白激光打印機', 12, 4,'1849');

-- 取消外鍵

alter table goods drop foreign key goods_ibfk_1;

二、goods_brands

-- unsigned:無符號(非負數)

-- 創建商品分類表

create table if not exists goods_brands(?

? ? id int unsigned primary key auto_increment,

? ? name varchar(40) not null-- 類別名稱 40字長度 不允許為空

);

-- 查詢goods表中商品的種類

select brand_name from goods group by brand_name;

-- 將分組結果寫入到goods_cates數據表

insert into goods_brands (name) select brand_name from goods group by brand_name;-- select前不能加values??

-- 通過goods_cates數據表來更新goods表

-- 更新goods表起別名g —— inner join goods_cates關聯類別表 —— 給類別表起名c —— on后面相當條件 —— g.cate_name=c.name 關聯條件商品表的類別名稱=類別表名稱 —— set g.cate_name=c.id設置商品表的類別名稱=……

update goods as g inner join goods_brands as b on g.brand_name=b.name set g.brand_name=b.id;

-- 分別在goods_cates和goods_brands類別表中插入記錄

insert into goods_brands(name) values ('路由器'),('交換機'),('網卡');

-- 通過alter table語句修改表結構(既改名字又改類型)change:重命名

alter table goods change brand_name brand_id int unsigned not null;-- 類別的名稱brand_name重命名為brand_id

-- 關聯外鍵

-- 給alter table goods添加一個foreign key(外鍵)給cate_id設 —— references:關聯 和goods_cates類別表的id關聯

alter table goods add foreign key (brand_id) references goods_brands(id);

-- 在 goods 數據表中插入商品(用來測試外鍵的)

insert into goods (name,cate_id,brand_id,price)

values('LaserJet Pro P1606dn 黑白激光打印機', 12, 4,'1849');

-- 取消外鍵

alter table goods drop foreign key goods_ibfk_2;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。