MySQL表的增删改查(2)

1.数据库约束

1)约束类型

|-------------|----------------------------------------|
| not null | 指定某列不能存储null值 |
| unique | 保证某列的每一行必须有唯一值 |
| default | 规定没有给列赋值时的默认值 |
| primary key | not null和unique的结合,一张表里只能有一个,作为身份标识的数据 |
| foreign key | 保证一个表的数据匹配另一个表中的值的参照完整性 |
| check | 保证列中的值符合指定条件 |

整数类型的主键,常搭配自增长auto_increment来使用,插入数据对应字段不给值时,使用最大值+1

2)外键约束 foreign key

外键用于关联其他表的主键或唯一键

复制代码
foreign key (字段名) references 主表(列)

class 表中的数据约束了student 表中的数据,把class表称为父表,约束别人的表,student 表称为子表

针对父表进行修改/删除操做,如果当前被修改/删除的值已经被子表引用了,操作会失败;

外键约束要保持子表中的数据在对应的父表的列中存在

删表正确的方式要先删子表再删父表

指定外键约束的时候,要求父表中被关联的这一列得是主键或unique

复制代码
create table user(id int,sex varchar(10),check (sex='男' or sex='女'));

2.表的设计

1)一对一(一个学生只有一个学号,一个学号只能被一个学生使用)

2)一对多(一个班级可以包含多个学生)

3)多对多(一个学生可以选择多门课程,一门课程可以包含多个学生)

3.新增

复制代码
insert into user(name,sex) select name,sex from student;(复制字段)

4.查询

1)聚合查询

聚合函数

COUNT

|-------|--------------|
| COUNT | 返回查询到的数据的数量 |
| SUM | 返回查询到的数据的总和 |
| AVG | 返回查询到的数据的平均值 |
| MAX | 返回查询到的数据的最大值 |
| MIN | 返回查询到数据的最小值 |

sql中通过-- 表示注释

count(*)得到的结果可以参以各种算术运算,还可以搭配其他sql使用;

SUM

把这一列的若干行进行求和,只能针对数字类型使用

2)GROUP BY

使用grop by子句可以对指定列进行分组查询,针对每个分组在进行聚合查询

针对分组之后,不使用聚合函数,查询结果就是每一组中的某个代表数

3)HAVING

对分组结果在进行条件过滤时使用HAVING子句

4)联合查询

多表查询是对多张表的数据取笛卡尔积

笛卡尔积的列数,是两个表的列数相加,行数是两个表的行数相乘

笛卡尔积是简单无脑的排列组合,把所有可能的情况都穷举一遍,包含一些不实际的数据

这个错误信息表示在你的SQL查询中,列名 'id' 在 WHERE 子句中是模糊的(ambiguous)。这意味着在你连接的两个表 studentscore 中,两个表都包含名为 id 的列。因此,数据库不知道你指的是哪个表中的 id 列。

为了解决这个问题,你需要明确地指定你要引用的是哪个表的 id 列。你可以通过在列名前加上表名或别名来做到这一点

内连接

复制代码
select 字段 from 表1 别名1 join 表2 别名2 on 连接条件 on其他条件

外连接

左外连接:联合查询,左侧的表完全显示,左侧表的每个数据都会出现在最终结果里,如果右侧表中不存在,对应的列为null\3

右外连接:右侧的表完全显示

子链接

同一张表连接自身进行查询,进行行和行之间的比较,sql只能进行列和列之间的比较

5)子查询

6)合并查询

相关推荐
宠友信息10 分钟前
多端即时通讯源码技术实践,Redis路由、MySQL持久化与Socket接入
spring boot·websocket·mysql·uni-app
渣渣灰飞11 分钟前
MySQL 系统学习 第四阶段:MySQL 高级 第一节:索引(Index)
数据库·学习·mysql
山峰哥15 分钟前
数据库工程与SQL优化实战指南‌
数据库·sql·oracle·深度优先·宽度优先
Quincy_Freak1 小时前
Python 轻量化数据存储实践:国产化环境下SQLite高效管理方案
数据库·sqlite·数据库管理·大数据分析·sqlitego
SelectDB技术团队2 小时前
Agent 场景动态 JSON 性能拆解:Apache Doris 比 ClickHouse 快 7 倍、比 Elasticsearch 快 2 倍
数据库·clickhouse·elasticsearch·json·apache·日志分析·apache doris
greasyfork2 小时前
多种数据库管理混乱?Navicat Premium 17 for Mac 统一解决
数据库·mysql·macos·mac
Dream_fly_iboy2 小时前
系统架构设计师之数据库
数据库
风和先行3 小时前
Android 数据库相关学习总结
android·数据库·学习
宠友信息3 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app
2401_873479403 小时前
如何识别代理IP和伪装流量?用IP情报工具三步穿透住宅代理伪装
网络·数据库·网络协议·tcp/ip·ip