当前位置: 首页 > news >正文

MySQL(三)

约束

Not null : 表示数值不能为空;

unique :唯一值,不能插入相同的数据;

default :规定没有给列赋值时的默认值;

primary key :主键,一张表只能有一个主键;

foreign key :外键,一张表可以有多个外键;

check :保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略

CHECK子句;

Not null :

当我们使用语句 insert into student(id) values (null); 时,我们发现根本不能插入,因为我们插入的数据规定不能为空。

unique:

我们先创建一个表,id是unique,表示id这列的值是不能相同的。

我们插入这些数据:

 insert into student values(1, 'Java1班', 100),(2, 'Java2班', 102),(3, 'Java3班', 102);

我们目前有这些数据,如果想插入(1,Java4班,103)这个数据是不可以的

default:

primary key:

我们可以一个列创建主键

这样我们就把id设置为表的主键了。

当然我们也可以多列一起设置主键

这样我们就可以设置两列一起为主键了

foreign key:

设置外键的时候,需要两个表,第一个表中有主键/unique,第二个表才可以设置外键。

foreign key (字段名) references 主表();

当我们设置外键后,如果想删除主表中的数据是不可以的,除非是先删除子表的数据,再删除主表的数据。

⭐问题 :在淘宝中,当我们子表数据引用父表数据后,父表数据想下架怎么办?

答:可以把父表隐藏。

我们可以搭配其他业务代码。设置字段 isok,比如过去列表的时候,按照ok字段再筛选下。

表的关系

一对一

一对多

多对多

查询进阶

查询搭配插入:

查询student2表数据插入student表中,表的列和类型要互相匹配。

(1) 当前student2表中有3条数据,student表中没有数据。

(2)使用语句 select into student select * from student2;

这样我们就把student2表的数据插入student表中了。

聚合函数:

count: 返回查询到的数据的数量

sum:返回查询到的数据的总和,不是数字没有意义

avg:返回查询到的数据的平均值,不是数字没有意义

max:返回查询到的数据的最大值,不是数字没有意义

min:返回查询到的数据的最小值,不是数字没有意义

当前我们的表中数据如下

count:统计班里多少同学

select count(*) from student;

sum :统计年龄总和

select sum(age) from student;

avg:统计班里平均年纪

select avg(age) from student;

max:统计年龄最大值

select max(age) from student;

min:统计年龄最小值

select min(age) from student;

分组查询:

我们使用分组查询的时候要搭配聚合函数。

表如下:

group by

当我们查每个id的最大值和最小值以及平均值

select id, max(age), min(age), avg(age) from student group by id;

where与group by

where条件写在group by前面

当我们查id=1的最大值和最小值以及平均值

select id, max(age), min(age), avg(age) from student where id = 1 group by id;

group by与having

GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING

显示平均年龄大于20的id

select id, avg(age) from student group by id having avg(age) > 20;

http://www.dtcms.com/a/109567.html

相关文章:

  • 二分类交叉熵损失
  • 在内网环境中为 Gogs 配置 HTTPS 访问
  • 常用的元素操作API
  • chromium魔改——navigator.webdriver 检测
  • 【无人机】无人机PX4飞控系统高级软件架构
  • 创新项目实训开发日志1
  • 21.数据链路层协议
  • 如何在本地部署魔搭上千问Qwen2.5-VL-32B-Instruct-AWQ模型在显卡1上面运行推理,并开启api服务
  • QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理
  • JavaScript基础-移动端常用开发框架
  • 智能多媒体处理流水线——基于虎跃办公API的自动化解决方案
  • Redis 除了数据类型外的核心功能 的详细说明,包含事务、流水线、发布/订阅、Lua 脚本的完整代码示例和表格总结
  • 【数据集】多视图文本数据集
  • Python第七章09:自定义python包.py
  • maven引入项目内本地包方法
  • WEB安全--文件上传漏洞--php伪协议的利用
  • MySQL索引(操作篇)
  • 分布式锁之redis6
  • GenerationMixin:_sample方法(GenerationMode.SAMPLE, GenerationMode.GREEDY_SEARCH)
  • 程序员学商务英语之Establing Biz Relations Inquiry
  • 自适应卡尔曼滤波
  • 探索 GitHub Copilot:当 AI 成为你的贴身编码助手
  • Win11本地从零开始部署dify全流程
  • TP6图片操作 Image::open 调用->save()方法时候报错Type is not supported
  • Redis基础知识-3
  • linux - 字符设备驱动简介
  • MySql 数据库题目
  • 三防笔记本有什么用 | 三防笔记本有什么特别
  • CentOS中挂载新盘LVM指南:轻松扩展存储空间,解决磁盘容量不足问题
  • ORM mybits mybits-plus