外键SQL语句的编写及实例
目錄
外鍵SQL語(yǔ)句的編寫
1.外鍵約束作用
2.對(duì)于已經(jīng)存在的字段添加外鍵約束
3.在創(chuàng)建數(shù)據(jù)表時(shí)設(shè)置外鍵約束
4.刪除外鍵約束
5.小結(jié)
實(shí)戰(zhàn)演練 - 分組和聚合函數(shù)的組合使用
1.數(shù)據(jù)準(zhǔn)備
2. Sql語(yǔ)句演練
3.將查詢結(jié)果插入到其它表中
外鍵SQL語(yǔ)句的編寫
1.外鍵約束作用
外鍵約束:對(duì)外鍵字段的值進(jìn)行更新和插入時(shí)會(huì)和引用表中的字段的數(shù)據(jù)進(jìn)行驗(yàn)證,數(shù)據(jù)如果不合法則更新和插入會(huì)失敗,保證數(shù)據(jù)的有效性
2.對(duì)于已經(jīng)存在的字段添加外鍵約束
?---- 為c_id字段添加外鍵約束alter table students add froeign key(c_id) references classes(id);3.在創(chuàng)建數(shù)據(jù)表時(shí)設(shè)置外鍵約束
?---- 創(chuàng)建學(xué)校表create table school(-> id int not null primary key auto_increment,-> name varchar(10)-> );----- 創(chuàng)建老師表create table teacher(-> id int not null primary key auto_increment,-> name varchar(10),-> s_id int not null,-> foreign key(s_id) references scholl(id)-> );4.刪除外鍵約束
?--- 需要先獲取外鍵約束名稱,該名稱系統(tǒng)會(huì)自動(dòng)生成,可以通過查看表創(chuàng)建語(yǔ)句來(lái)獲取名稱show create table teacher;?--- 獲取名稱之后就可以根據(jù)名稱來(lái)刪除外鍵約束alter table teacher drop foreign key 外鍵名;5.小結(jié)
-
添加外鍵約束:alter table 表名 add foreign key(外鍵字段) references 主表(主鍵字段);
-
刪除外鍵約束: alter table 表名 drop foreign key(外鍵名)
實(shí)戰(zhàn)演練 - 分組和聚合函數(shù)的組合使用
1.數(shù)據(jù)準(zhǔn)備
?-- 創(chuàng)建‘京東’數(shù)據(jù)庫(kù)create database jing_dong charset=utf8;??--- 使用“京東”數(shù)據(jù)庫(kù)use jing_dong;?--- 創(chuàng)建一個(gè)商品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-> );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 超極本','超級(jí)本','聯(lián)想','4880',default,default); insert into goods values(0,'u330p 13.3英寸超極本','超級(jí)本','聯(lián)想','4299',default,default); insert into goods values(0,'svp13226scb 觸控超極本','超級(jí)本','索尼','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英寸一體電腦 ','臺(tái)式機(jī)','聯(lián)想','3499',default,default); insert into goods values(0,'vostro 3800-r1206 臺(tái)式電腦','臺(tái)式機(jī)','戴爾','2899',default,default); insert into goods values(0,'imac me086ch/a 21.5英寸一體電腦','臺(tái)式機(jī)','蘋果','9188',default,default); insert into goods values(0,'at7-7414lp 臺(tái)式電腦 linux )','臺(tái)式機(jī)','宏碁','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è)級(jí)臺(tái)式電腦','服務(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機(jī)架式服務(wù)器','服務(wù)器/工作站','ibm','6888',default,default); insert into goods values(0,'商務(wù)雙肩背包','筆記本配件','索尼','99',default,default);2. Sql語(yǔ)句演練
1.查詢類型cate_name 為'超極本‘的商品名稱、價(jià)格
?select name,price from goods where cate_name='超級(jí)本';2.顯示商品的分類
?select cate_name from goods group by cate_name;3.求所有電腦產(chǎn)品的平均價(jià)格,并且保留兩位小數(shù)
round(x,d) x指要處理的數(shù)據(jù),d是要保留幾位小數(shù)
?-- avg(price)select round(avg(price),2) as avg_price from goods;4.顯示每種商品的平均價(jià)格
?select cate_name,avg(price) from goods group by cate_name;5.查詢每種類型的商品最貴,最便宜,平均價(jià),數(shù)量
?--- max() min() avg() count()select cate_name,max(price),min(price),avg(price),count(*) from goods group by cate_name;6.查詢所有價(jià)格大于平均價(jià)格的商品,并且按照價(jià)格降序排序
?--- price > avg(price) descselect * from goods where price > (select round(avg(price),2) as avg_price from goods) order by price desc;3.將查詢結(jié)果插入到其它表中
目前只有一個(gè)goods表,我想要增加一個(gè)商品分類信息,比如:移動(dòng)設(shè)備
只通過goods表無(wú)法完成商品分類的添加,那么如何實(shí)現(xiàn)添加分類信息的操作?
答案:
1.創(chuàng)建一個(gè)商品分類表,把goods表中的商品分類信息添加到該表中
2。將goods表中的分類名稱更改商品分類表種對(duì)應(yīng)的分類id。
3.1 創(chuàng)建商品分類表
?-- 創(chuàng)建商品分類表create table good_cates(id int unsigned not null primary key auto_increment,name varchar(50) not null);3.2 把goods表中的商品分類添加到商品分類表
?--- 查詢goods表中商品的分類信息select cate_name from goods group by cate_name;?---- 將查詢結(jié)果插入到good_cate表中insert into good_cates(name) select cate_name from goods group by cate_name;??--- 添加移動(dòng)設(shè)備分類信息insert into good_cates(name) values('移動(dòng)設(shè)備');3.3 更新goods表種的商品分類信息
-
將goods表中的分類名稱更改成商品分類表中對(duì)應(yīng)的分類id
總結(jié)
以上是生活随笔為你收集整理的外键SQL语句的编写及实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DM数据库培训心得
- 下一篇: 十、MYSQL数据库的条件查询