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
相关推荐
星蓝_starblue2 小时前
零服务器、零数据库!开源growth-board,利用GitHub自动管理刷题/学习/求职全流程
服务器·数据库·程序人生·系统架构·node.js·github·改行学it
咸鱼翻身小阿橙3 小时前
现在这个四通道出现的问题
学习
三8444 小时前
sqli-labs1-10通关笔记
数据库
云贝教育-郑老师5 小时前
OceanBase 是如何搞定海量数据分片(Sharding)的?
学习·oceanbase·dba
BullSmall5 小时前
Another Redis Desktop Manager(ARDM)下载指南
数据库·redis·缓存
编程圈子5 小时前
电机驱动开发学习23. 保护体系与故障状态机
驱动开发·学习
SelectDB5 小时前
Apache Doris 倒排索引工作原理:全文检索提速 59 倍,点查提速 14 倍
数据库
码农颜5 小时前
5.1.1 原⼦性
数据库·mysql
机建狂魔6 小时前
Codex 接入第三方模型 API 实战:以 Mimo 为例
java·服务器·数据库·ai·ai编程·codex
山峰哥6 小时前
数据库工程与SQL调优:从慢查询到秒级响应的实战之路
java·开发语言·数据库·sql·深度优先·启发式算法