20260512-SQL学习大览

一个市场专员转码的自救之路

今天来学习SQL语句

一、建表

以学校管理系统为例,学校管理一定会涉及到学生、班级、老师、教导主任。

班主任表和班级表属于1对1关系

学生表和班级表是多对一或者一对多的关系

学生表和课程表是多对多关系

1)班主任表和班级表------1V1建表如何关联?

要求查询1班的班主任是谁,需要通过唯一字段bid先将班主任表和班级表关联起来。

班级表的bid与班级表的id相关联,再进行查询即可成功(也可以设置班主任表的bid,与班级表的id相关联,字段设置比较随意)

由此可知,1v1的关系需要设置关联字段,字段设置在任何一张表中都是可以的。

2)学生表和班级表------1V多/多V1 如何建表?

一对多/多对1需要设置关联字段,字段只能设置在多表当中

3)学生表和课程表------多V多如何建表?

多对多关系中需要新建设置关系表(映射表)

4)表和表之间没有关系

二、如何建表建库?

数据库有五大约束:主键约束、唯一约束、非空约束、默认约束、外键约束

主键约束:能够帮我们快速检索数据,建表时一定要建立主键

非空约束

默认约束:

唯一约束

设置索引方式为唯一索引,索引方法为B树查找

外键约束相当于关联的plus版,会拖慢查询速度

三、MYSQL概念结构设计

E-R图就是实体、关系、属性三个基本概念概括数据的基本结构

比如:

四、MYSQL语句

增删改SQL语句示例

增加数据(INSERT) 插入单条数据时,若id设置为自增,可省略id字段。字符串类型需用单引号包裹:

sql 复制代码
INSERT INTO user(name, age, phone) VALUES('张思', 20, '183')

批量插入多条数据时,用逗号分隔值组:

sql 复制代码
INSERT INTO user(name, age, phone) 
VALUES('张思', 20, '183'), ('张思', 20, '180'), ('张思', 20, '189')

修改数据(UPDATE) 带条件的修改需指定WHERE子句:

sql 复制代码
UPDATE user SET name='小黑', age=88 WHERE id=6

无条件修改会更新整张表:

sql 复制代码
UPDATE user SET name='12', age=88

删除数据(DELETE) 条件删除指定记录:

sql 复制代码
DELETE FROM user WHERE id = 6

清空表数据有两种方式:

  • 逐行删除(可回滚):

    sql 复制代码
    DELETE FROM user
  • 快速清空(不可回滚,重置自增计数器):

    sql 复制代码
    TRUNCATE TABLE user
相关推荐
Nturmoils6 小时前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
渣波10 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
倔强的石头_1 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
zzzzzz3102 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
倔强的石头_4 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横4 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
冬奇Lab5 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence5 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神5 天前
三、用户与权限管理
数据库·mysql
通信小呆呆6 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人