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
相关推荐
小新同学^O^1 小时前
简单学习 --> Cookie 和Session
学习
北秋,1 小时前
Web Security Academy 第二关:SQL 注入登录绕过
数据库·sql
思麟呀1 小时前
MySQL基础CRUD语句
数据库·mysql
funnycoffee1231 小时前
cisco Firepower 4110 9300 FXOS set chassis hostname
java·服务器·数据库
六月雨滴1 小时前
Oracle 数据库诊断文件与故障排查
数据库
草莓熊Lotso1 小时前
【Linux网络】从 0 到 1 实现高性能 UDP 聊天室:深入拆解 Linux 网络编程与线程池架构
linux·运维·服务器·网络·数据库·c++·udp
咖啡里的茶i1 小时前
实验一 数据库定义
数据库·oracle
IT 行者1 小时前
Qdrant vs Milvus 向量数据库对比选型指南
数据库·milvus·qdrant
咸甜适中1 小时前
rust语言学习笔记Trait之Default(默认值)
笔记·学习·rust