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