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
相关推荐
SelectDB7 小时前
从 Machine-Readable 到 Agent-Ready:面向智能体的数据库接口演进
大数据·数据库·agent
画江湖Test7 小时前
Redis 块的原理
数据库·redis·缓存·性能优化
流烟默7 小时前
国产数据库CERDB是什么以及服务启停
数据库·cerdb
数据库小学妹7 小时前
关系型数据库核心原理拆解:SQL解析、事务引擎、存储结构全链路分析
数据库·经验分享·sql·数据库架构·dba
海市公约7 小时前
Redis主从复制全量同步七步时序与命令传播机制详解
数据库·redis·缓存·主从复制·高可用架构·全量同步
我是唐青枫7 小时前
Java JdbcTemplate 实战指南:用 Spring 轻量完成数据库增删改查
java·数据库·spring
逍遥运德7 小时前
PostgreSQL ---【序列】用法详解
后端·sql·postgresql
梓䈑7 小时前
【MySQL】MySQL安装 和 配置
数据库·mysql
小马爱打代码8 小时前
Redis 和 MySQL 双写一致性:延迟双删、读写锁、MQ、Canal 怎么选?
数据库·redis·mysql