外键SQL语句的编写及实例

news/2024/10/23 9:38:55/

目录

外键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

 --- 查看goods表中的商品分类名称对应的商品分类idselect * from goods inner join good_cates on goods.cate_name = good_cates.name;​update goods g inner join good_cates gc on g.cate_name=gc.name set g.cate_name = gc.id;

http://www.ppmy.cn/news/139504.html

相关文章

关于显卡PCIE3.0 X16 X8 X4 X1速度的测试

前言: 博主最近炼丹的时候发现,显卡不太够用,想要加几张显卡,但是主板上PCIE 专用的插口有限,于是查看了主板上剩余的插口,一起来看看吧。 实验环境: 博主用的微星的 MPG Z390 GAMING EDGE A…

PyTorch 深度学习 || 专题三:PyTorch 数据的准备

PyTorch 数据的准备 1. 生成数据的准备工作 import torch import torch.utils.data as Data#准备建模数据 x torch.unsqueeze(torch.linspace(-1, 1, 500), dim1) # 生成列向量 y x.pow(3) # yx^3#设置超参数 batch_size 15 # 分块大小 torch.manual_seed(10) # 设置种子点…

万方 protobuf 反序列化

protobuf 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。 在网络传输方面,相比传统的json,有着更快、更小,且加密性好的特点。 在实际应用中,万方数据库官网发送的请求&…

如何使用宝塔面板搭建网站(搭建宝塔页面)

书接上回,咱们已经搭建好咱们的Linux服务器,接下来改是搭建宝塔页面的教程了。 这里我们需要一个域名,自行去各家云服务器购买域名(例如:腾讯云,阿里云,华为云等等) 购买一个域名之…

我的世界模组开发(0)MDK安装详解

万事开头难,开了头仍很难 就在暑假末,我的MDK坏了,不过,在我的力挽狂澜之下,MDK又被修好了 在修的时候,我放弃了Forge官方的MDK,因为有一个叫做client1.12.2.pom文件被墙了。。。。 无奈之下…

STM32CubeMX系列07——IIC通信(AT24C02、OLED屏幕)

文章目录 1. 准备工作1.1. 所用硬件1.2. IIC简介1.2. 生成工程1.2.1. 创建工程选择主控1.2.2. 系统配置1.2.3. 配置工程目录1.2.4. IIC配置 2. 读写EEPROM实验(AT24C02)2.1. AT24C02简介2.1.1. AT24C02原理图2.1.2. 设备地址 2.2. 读写时序2.3. 代码实现…

华为 Mate40 手机

2020年10月22日,华为宣布推出2020年全新旗舰手机华为Mate40系列,华为Mate40系列实现强悍性能、全能影像和创新交互的空前突破,让人们对全场景智慧生活未来的构想更进一步。 华为Mate40 Pro和华为Mate40 Pro搭载华为首款5纳米麒麟9000 SoC芯片…

物料主数据的MRP视图详解

MRP组 MRP组是针对控制MRP运行参数的设置为一个组。MRP运行时考虑的参数可以是工厂级,也可以设置在MRP组级别。 ABC标识 根据消耗值,按物料ABC进行标识分类。A-重要部分,高消耗值 B-次重要,中等消耗 C-不重要。低消耗。MC40 和…