11_mysql与Python交互_1
生活随笔
收集整理的這篇文章主要介紹了
11_mysql与Python交互_1
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、準(zhǔn)備數(shù)據(jù)
- 1.1 創(chuàng)建數(shù)據(jù)表
- 1.2 插入數(shù)據(jù)
- 二、SQL演練
- 三、數(shù)據(jù)庫的設(shè)計
- 3.1 創(chuàng)建 "商品分類"" 表(拆表)
- 3.1.1 同步表數(shù)據(jù)
- 3.2 創(chuàng)建 "商品品牌表" 表
- 3.2.1 同步數(shù)據(jù)
- 3.3 修改表結(jié)構(gòu)
- 3.4 外鍵
- 3.4.1 更新外鍵約束
- 3.4.2 創(chuàng)建數(shù)據(jù)表的時候就設(shè)置外鍵約束
- 3.4.3 刪除外鍵約束
- 3.5 創(chuàng)建 "顧客" 表
- 3.6 創(chuàng)建 "訂單" 表
- 3.7 創(chuàng)建 "訂單詳情" 表
- 3.8 說明
一、準(zhǔn)備數(shù)據(jù)
1.1 創(chuàng)建數(shù)據(jù)表
-- 創(chuàng)建 "京東" 數(shù)據(jù)庫 create database jing_dong charset=utf8;-- 使用 "京東" 數(shù)據(jù)庫 use jing_dong;-- 創(chuàng)建一個商品goods數(shù)據(jù)表 create table goods(id int unsigned primary key auto_increment not null,name varchar(150) not null,cate_name varchar(40) not null,brand_name varchar(40) not null,price decimal(10,3) not null default 0,is_show bit not null default 1,is_saleoff bit not null default 0 );1.2 插入數(shù)據(jù)
-- 向goods表中插入數(shù)據(jù)insert into goods values(0,'r510vc 15.6英寸筆記本','筆記本','華碩','3399',default,default); insert into goods values(0,'y400n 14.0英寸筆記本電腦','筆記本','聯(lián)想','4999',default,default); insert into goods values(0,'g150th 15.6英寸游戲本','游戲本','雷神','8499',default,default); insert into goods values(0,'x550cc 15.6英寸筆記本','筆記本','華碩','2799',default,default); insert into goods values(0,'x240 超極本','超級本','聯(lián)想','4880',default,default); insert into goods values(0,'u330p 13.3英寸超極本','超級本','聯(lián)想','4299',default,default); insert into goods values(0,'svp13226scb 觸控超極本','超級本','索尼','7999',default,default); insert into goods values(0,'ipad mini 7.9英寸平板電腦','平板電腦','蘋果','1998',default,default); insert into goods values(0,'ipad air 9.7英寸平板電腦','平板電腦','蘋果','3388',default,default); insert into goods values(0,'ipad mini 配備 retina 顯示屏','平板電腦','蘋果','2788',default,default); insert into goods values(0,'ideacentre c340 20英寸一體電腦 ','臺式機','聯(lián)想','3499',default,default); insert into goods values(0,'vostro 3800-r1206 臺式電腦','臺式機','戴爾','2899',default,default); insert into goods values(0,'imac me086ch/a 21.5英寸一體電腦','臺式機','蘋果','9188',default,default); insert into goods values(0,'at7-7414lp 臺式電腦 linux )','臺式機','宏碁','3699',default,default); insert into goods values(0,'z220sff f4f06pa工作站','服務(wù)器/工作站','惠普','4288',default,default); insert into goods values(0,'poweredge ii服務(wù)器','服務(wù)器/工作站','戴爾','5388',default,default); insert into goods values(0,'mac pro專業(yè)級臺式電腦','服務(wù)器/工作站','蘋果','28888',default,default); insert into goods values(0,'hmz-t3w 頭戴顯示設(shè)備','筆記本配件','索尼','6999',default,default); insert into goods values(0,'商務(wù)雙肩背包','筆記本配件','索尼','99',default,default); insert into goods values(0,'x3250 m4機架式服務(wù)器','服務(wù)器/工作站','ibm','6888',default,default); insert into goods values(0,'商務(wù)雙肩背包','筆記本配件','索尼','99',default,default);二、SQL演練
- 查詢類型cate_name為 ‘超極本’ 的商品名稱、價格
- 顯示商品的種類
- 求所有電腦產(chǎn)品的平均價格,并且保留兩位小數(shù)
- 顯示每種商品的平均價格
- 查詢每種類型的商品中 最貴、最便宜、平均價、數(shù)量
- 查詢所有價格大于平均價格的商品,并且按價格降序排序
- 查詢每種類型中最貴的電腦信息
三、數(shù)據(jù)庫的設(shè)計
3.1 創(chuàng)建 “商品分類”" 表(拆表)
-- 創(chuàng)建商品分類表 create table if not exists goods_cates(id int unsigned primary key auto_increment,name varchar(40) not null );- 查詢goods表中商品的種類
- 將分組結(jié)果寫入到goods_cates數(shù)據(jù)表
3.1.1 同步表數(shù)據(jù)
- 通過goods_cates數(shù)據(jù)表來更新goods表
3.2 創(chuàng)建 “商品品牌表” 表
- 通過create…select來創(chuàng)建數(shù)據(jù)表并且同時寫入記錄,一步到位
3.2.1 同步數(shù)據(jù)
- 通過goods_brands數(shù)據(jù)表來更新goods數(shù)據(jù)表
3.3 修改表結(jié)構(gòu)
- 查看 goods 的數(shù)據(jù)表結(jié)構(gòu),會發(fā)現(xiàn) cate_name 和 brand_name對應(yīng)的類型為 varchar 但是存儲的都是數(shù)字
- 通過alter table語句修改表結(jié)構(gòu)
3.4 外鍵
- 分別在 goods_cates 和 goods_brands表中插入記錄
- 在 goods 數(shù)據(jù)表中寫入任意記錄
- 查詢所有商品的詳細(xì)信息 (通過內(nèi)連接)
- 查詢所有商品的詳細(xì)信息 (通過左連接)
3.4.1 更新外鍵約束
- 如何防止無效信息的插入,就是可以在插入前判斷類型或者品牌名稱是否存在呢? 可以使用之前講過的外鍵來解決
- 外鍵約束:對數(shù)據(jù)的有效性進行驗證
- 關(guān)鍵字: foreign key,只有 innodb數(shù)據(jù)庫引擎, 支持外鍵約束
- 對于已經(jīng)存在的數(shù)據(jù)表 如何更新外鍵約束
3.4.2 創(chuàng)建數(shù)據(jù)表的時候就設(shè)置外鍵約束
- 注意: goods 中的 cate_id 的類型一定要和 goods_cates 表中的 id 類型一致
3.4.3 刪除外鍵約束
- 如何取消外鍵約束
- 在實際開發(fā)中,很少會使用到外鍵約束,會極大的降低表更新的效率
3.5 創(chuàng)建 “顧客” 表
create table customer(id int unsigned auto_increment primary key not null,name varchar(30) not null,addr varchar(100),tel varchar(11) not null );3.6 創(chuàng)建 “訂單” 表
create table orders(id int unsigned auto_increment primary key not null,order_date_time datetime not null,customer_id int unsigned,foreign key(customer_id) references customer(id) );3.7 創(chuàng)建 “訂單詳情” 表
create table order_detail(id int unsigned auto_increment primary key not null,order_id int unsigned not null,goods_id int unsigned not null,quantity tinyint unsigned not null,foreign key(order_id) references orders(id),foreign key(goods_id) references goods(id) );3.8 說明
- 以上創(chuàng)建表的順序是有要求的,即如果goods表中的外鍵約束用的是goods_cates或者是goods_brands,那么就應(yīng)該先創(chuàng)建這2個表,否則創(chuàng)建goods會失敗
- 創(chuàng)建外鍵時,一定要注意類型要相同,否則失敗。
總結(jié)
以上是生活随笔為你收集整理的11_mysql与Python交互_1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你的测试写全了吗?
- 下一篇: 【达梦数据库DM8】DCA培训学习及考试