当前位置: 首页 > news >正文

MySQL基础操作全攻略:增删改查实用指南(上)

本节目标:
NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
DEFAULT - 规定没有给列赋值时的默认值。
PRIMARY KEY - NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。对于 MySQL 数据库,对 CHECK 子句进行分析,但是忽略 CHECK子句。

1. 数据库约束

1.2 NULL约束

创建表时,可以指定某列不为空:
输入:
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT ,
  name VARCHAR ( 20 ),
  qq_mail VARCHAR ( 20 )
);

1.3 UNIQUE:唯一约束

指定 sn 列为唯一的、不重复的:
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT UNIQUE,
  name VARCHAR ( 20 ),
  qq_mail VARCHAR ( 20 )
);
"Duplicate" 的中文意思是“重复的”或“复制的”。在数据库术语中,常用来表示唯一性约束
(UNIQUE constraint)被违反,即试图插入或创建一个已经存在的值或记录。

1.4 DEFAULT:默认值约束

指定插入数据时, name 列为空,默认值 unkown
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT UNIQUE,
  name VARCHAR ( 20 ) DEFAULT 'unkown' ,
  qq_mail VARCHAR ( 20 )
);

1.5 PRIMARY KEY:主键约束(要求:非空,唯一)

指定 id 列为主键:
对于整数类型的主键,常配搭自增长 auto_increment 来使用。插入数据对应字段不给值时,使用
最大值+1
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY,
  sn INT UNIQUE,
  name VARCHAR ( 20 ) DEFAULT 'unkown' ,
  qq_mail VARCHAR ( 20 )
);
不为空
不能重复
不允许一个表中存在多个身份标识

但是数据库允许把多个列共同作为一个主键(联合主键)

主键需要分配一个唯一的值,如何进行分配呢?

mysql 提供了一个 自动分配 主键值 方式,“自增主键”auto_increment

插入数据时,可以不指定id列的值,让数据库自动分配.,就会按照1,2,3,4 ......

也能手动指定其他数值.

在mysql中,给每个表都记录了一个“自增主键的最大值”
后续继续插入数据,无论之前的最大值是否仍然存在
都是根据之前保存的最大值,继续往后分配的.

自增主键只能针对,像int/bigint整数使用

是有可能会使用字符串作为主键的.

部分情况下,都是用数字作为主键.

1.6 FOREIGN KEY:外键约束

外键用于关联其他表的 主键 唯一键
语法:foreign key ( 字段名 ) references 主表 ( )

案例:

-- 创建班级表,有使用 MySQL 关键字作为字段时,需要使用 `` 来标识
DROP TABLE IF EXISTS classes;
CREATE TABLE classes (
id INT PRIMARY KEY auto_increment,
name VARCHAR ( 20 ),
`desc` VARCHAR ( 100 )
);
-- 重新设置学生表结构
创建学生表 student ,一个学生对应一个班级,一个班级对应多个学生。使用 id 为主键, classes_id为外键,关联班级表 id
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT PRIMARY KEY auto_increment,
  sn INT UNIQUE,
  name VARCHAR ( 20 ) DEFAULT 'unkown' ,
  qq_mail VARCHAR ( 20 ),
classes_id int ,
FOREIGN KEY (classes_id) REFERENCES classes(id)
                          本表的列                               被引用的表和列
);

此时,外键约束就出现了

再次往student 中插入数据,就务必要确保
插入的数据的classes_ld的值,得在classes表中存在.

学生表的 classld 列,引用自 班级表的classld 列

班级表中的 数据,约束了/制约了学生表的数据

制约                                          被制约的一方

父表                                                   子表

如果父表中的某个记录,被子表引用了,此时就不能删除/修改父表中的 对应记录了.

父表是约束了子表,
子表也会对父表反向进行约束.

主键本身也是有“唯一性要求的”
频繁触发查询,此处数据库就会对主键约束,给出特殊的处理.
加快查询四度

数据库会针对 主键 列创建索引

如果不指定主键,是一个unique,也能达成类似的效果
 

1.7 CHECK约束(了解)

MySQL 使用时不报错,但忽略该约束:

2. 表的设计

三大范式:

2.1 一对一

设计表的做法:


a)搞一个表,同时包含学生和账号的信息.
student account (studentld, name, accountName, password ..... )

b)搞两个表,使用id来进行联系.
student(studentld, name , accountld)
account(accountld, accountName, password)

student(studentld, name )
account(accountld, accountName, password , studentld)

2.2 一对多

一个账号只能属于一个学生

可以使用同一张表,也可以使用两张表(通过一个id,联系)

b)一对多关系

一个学生只能属于一个班级
一个班级可以包含多个学生

这个方案在MySQL中是不可行的.但是在有的数据库中(Redis是可行的)

学生表(学生id,学生姓名 ... ,班级 id)
1  张三  100
2  李四  101

3  王五  100

班级表(班级id,班级名称)

100      java100
101      java101

班级表(班级id,班级名称,学生id列表)

100         java100               1,3
101         java101                2

相当于“数组”类型

mysql不支持这样的类型

2.3 多对多

引入关联表,通过关联表把多对多关系表示出来

学生-课程表(学生id,课程id)
1       100       张三选择了语文
1       101       张三选择了数学
1       102       张三选择了英语

2       100       李四选择了语文
2       101       王五选择了教学


如果您觉得有失偏颇请您在评论区指正,如果您觉得不错的话留个好评再走吧!!

您的鼓励就是对我最大的支持!  ! !

相关文章:

MySQL基础操作全攻略:增删改查实用指南(上)

本节目标: NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标 识&am…...

SAP MM学习笔记 - 豆知识02 - MR21 修改物料原价,MM02 修改基本数量单位/评价Class,MMAM 修改物料类型/评价Class

上一章讲了一些豆知识。比如 - MM50 批量扩张品目 - XK05/06 Block/消除供应商 - MM06/MM16 品目消除 - SE11/SE16/SE16/SE16N/SE16H/DB02 等查看常用的操作Table和数据的T-code SAP MM学习笔记- 豆知识01 - MM50 批量扩张,XK05/XK06 Block/消除供应商&#xf…...

谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存

文章目录 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存1,在Elasticsearch的配置类中增加通用设置2,索引数据3,验证 一,谷粒商城实战笔记-126-全文检索-ElasticSearch-整合-测试保存 1,在…...

flutter开发环境搭建与android studio 安装配置

flutter开发环境搭建与android studio 安装配置 安装 android studio 下载安装 Android Studio 开发工具 Android Studio官网安装的时看到配置路径就换成自己其他盘的路径即可,其他的一路下一步就ok安装完毕,运行打开缺少 android sdk 按照提示下载即可…...

postgresql 字符串 替换

postgresql 字符串 替换 在PostgreSQL中,可以使用replace()函数来替换字符串中的某个部分。该函数的语法如下: REPLACE(string text, from text, to text) 其中: string 是要进行替换操作的原始字符串。 from 是原始字符串中需要被替换掉的…...

如何强化学习神经网络

强化学习(Reinforcement Learning, RL)神经网络是一种通过奖励和惩罚机制来学习策略的方法,适用于各种复杂的决策问题。以下是强化学习神经网络的一些主要步骤和方法: 1. 了解基本概念 环境(Environment)…...

Hadoop未授权访问漏洞

Hadoop未授权访问漏洞 Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了Hadoop机器HDFS的50070web端口及部分默认服务端口,黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目…...

Python中json模块的编码和解码

在Python中,可以用json模块处理JSON的编码和解码问题。json的全程是 javascript object notation, 翻译一下就是javascritpt 对象表示法。json是一种轻量级的数据交换格式,容易阅读和编写,支持的数据类型有:字符串、数字、数组和对…...

【Linux】文件变身大作战:Linux下的文件重命名艺术

欢迎来到 CILMY23 的博客 🏆本篇主题为:文件变身大作战:Linux下的文件重命名艺术 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法…...

字节的存储和字符的存储

字节的存储 内存中的存储 基本数据类型: 在Java中,byte 类型占用 1 个字节(8 位)。它的取值范围是从 -128 到 127。存储在内存中的 byte 数据可以直接操作,例如通过数组或变量访问。 数据结构: byte 数组…...

Markdown插入Base64格式的图片,无需图床,稳定保存

Markdown插入Base64格式的图片,无需图床,稳定保存 我是一个Markdown的爱好者,转存图片是MD经常出问题的地方,因为MD不像其他富文本编辑器,将图片内嵌到文件中,而是用链接的形式引用,或网络链接…...

weblogic 连接gaussdb测试数据源是否联通

文章目录 1. gaussdb创建远程连接用户和数据库2. weblogic构建GaussDB源数据库3. 测试结果查询注意 weblogic中jar包已经放入lib目录中gaussdb已经创建可以连接登录的用户和数据库1. gaussdb创建远程连接用户和数据库 新建用户和数据库连接客户端Gauss=# create user lily pas…...

如何成为全域运营商?掌握这2种申请方式就够了!

随着全域概念的兴起,全域运营商的职业前景和收益空间逐渐显现,并迅速成为了热门创业赛道中的一份子,连带着如何成为全域运营商等入局方式相关话题也成为了众多创业者热议的焦点。 不过,从市场现状来看,作为涵盖公域和私…...

@ConfigurationProperties加在方法上

ConfigurationProperties注解通常用于将外部配置文件(如application.properties或application.yml)中的属性映射到Java类中。它通常加在类上,但也可以加在方法上。加在方法上时,通常与Bean注解一起使用,以便将配置属性…...

使用CUBEMX配置的USB大容量存储设备主机库获取LUN数量的不严谨代码纠正

最近在使用usb主机库驱动U盘直接进行扇区读写。 发现MSC库中获取LUN相关代码有问题 代码如下 其中 status USBH_MSC_BOT_REQ_GetMaxLUN(phost, (uint8_t *)(void *)&MSC_Handle->max_lun); MSC_Handle->max_lun (MSC_Handle->max_lun > MAX_SUPPORTED_L…...

合并重叠的区间

这一题不能用差分数组&#xff0c;因为 [1 , 4] [5, 6] 这个就会被合并&#xff0c;正确的做法就是先排序 bool cmp(vector<int> a, vector<int> b) {if (a[0] < b[0]) return 1;if (a[0] b[0]) return a[1] < b[1];return 0; } class Solution { public:ve…...

docker和运维

创建服务 docker service create --name order --network my-net -p 8080:8080 -d xxx 加入swarm集群 docker swarm join --token xxx 更新结点名字为mysql docker node update --label-add servermysql ecs-82ec-0003 创建MySQL服务 docker service create --name mysql --con…...

苍穹外面day13(day10)---订单状态定时处理、来单提醒和客户催单

Spring Task 同学们可以看我这篇文章 Spring Task初学-CSDN博客 订单状态定时处理 新建OrderTask /*** 定时任务类&#xff0c;定时处理订单状态*/ Component Slf4j public class OrderTask {Autowiredprivate OrderMapper orderMapper;/*** 处理超时订单的方法*/Scheduled(c…...

RCE和php文件上传

一、远程命令执行&#xff08;RCE&#xff09; RCE漏洞概述 RCE漏洞允许攻击者通过某种方式在目标服务器上执行任意命令。这种漏洞通常出现在服务器端语言中&#xff0c;如PHP。 RCE漏洞原理 PHP中的一些函数可以执行命令或代码&#xff0c;但如果对这些函数的输入未加限制&a…...

nextjs 实现TodoList网页应用案例

参考&#xff1a; https://nextjs.org/ Next.js 是用于网络的一种 React 框架。一些世界上最大的公司在使用它&#xff0c;它能够借助 React 组件的力量让您创建高质量的网络应用程序。 1、创建项目&#xff1a; 另外注意&#xff1a;pages与app路由存在冲突&#xff0c;如果有…...

SEER‘S EYE模型学术应用:LaTeX论文写作辅助与公式校对

SEERS EYE模型学术应用&#xff1a;LaTeX论文写作辅助与公式校对 写论文&#xff0c;尤其是理工科的论文&#xff0c;最头疼的是什么&#xff1f;十有八九会提到LaTeX。从搭建文档结构、处理复杂的数学公式&#xff0c;到确保格式规范、检查符号一致性&#xff0c;每一步都可能…...

大模型工具调用乱斗:MCP协议凭什么火?实战踩坑与选型建议

大模型工具调用乱斗&#xff1a;MCP协议凭什么火&#xff1f;实战踩坑与选型建议 作者&#xff1a;戴维1号 来自&#xff1a;NEXUS Tech Curator&#xff08;https://www.lsn.org.cn) 开场&#xff1a;被"大模型有脑子没手"折磨的第 N 天 你有没有这种感觉——大模型…...

2026虚拟主播动作创作工具专业选型指南,新手也能精准选对

虚拟主播产业的快速发展&#xff0c;推动动作创作工具向高效化、轻量化、专业化升级。随着虚拟主播行业的规范化发展&#xff0c;动作创作的效率与质量成为核心竞争力&#xff0c;传统手动绑定、专业设备驱动的模式已无法满足批量产出需求。本文基于实测数据&#xff0c;结合虚…...

AI建站避坑指南:高频问题与真相解答,别再交学费

决定用AI建站工具&#xff0c;是通往高效的第一步。但市面上信息繁杂&#xff0c;一个不小心就可能掉进“智能”的陷阱。这篇整理了用户最关心的10个核心问题&#xff0c;给出客观、可落地的解答&#xff0c;帮你提前排雷&#xff0c;做出真正明智的选择。1问题1&#xff1a;智…...

能源研究院转让选哪家

能源研究院转让选择建议选择适合的能源研究院转让机构需综合考虑资质、经验、服务范围及行业口碑。以下为关键筛选方向&#xff1a;专业资质与行业经验 优先选择具备国家级资质认证&#xff08;如科技转移服务机构备案&#xff09;的机构&#xff0c;尤其在新能源、储能技术等领…...

开源阅读鸿蒙版完整指南:打造你的专属数字图书馆

开源阅读鸿蒙版完整指南&#xff1a;打造你的专属数字图书馆 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 开源阅读鸿蒙版是一款专为鸿蒙系统用户设计的免费开源电子书阅读器&#xff0c;它彻底改变…...

Qwen2.5-VL视觉定位效果展示:Ollama输出坐标+置信度+层级关系JSON

Qwen2.5-VL视觉定位效果展示&#xff1a;Ollama输出坐标置信度层级关系JSON 最近在玩一个挺有意思的AI模型——Qwen2.5-VL-7B-Instruct。这可不是普通的聊天机器人&#xff0c;它是一个能“看懂”图片&#xff0c;还能把看到的东西用结构化数据告诉你的视觉多模态模型。 简单…...

3步轻松搞定大麦网抢票:告别手动刷票的Python自动化脚本

3步轻松搞定大麦网抢票&#xff1a;告别手动刷票的Python自动化脚本 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到演唱会门票而烦恼吗&#xff1f;&#x1f914; 热门演出门票秒光…...

Pandas索引器 loc 和 iloc 比较及代码示例

Pandas 索引器 loc 和 iloc 比较及代码示例 以下是针对 Pandas 中 loc 和 iloc 的深度对比分析及代码示例&#xff0c;结合核心差异、使用场景和底层机制展开说明&#xff1a; 一、核心差异解析 特性loc (标签索引)iloc (位置索引)索引类型行/列标签&#xff08;字符串、日期等…...

跨平台办公自动化:OpenClaw+千问3.5-27B同步多端文件

跨平台办公自动化&#xff1a;OpenClaw千问3.5-27B同步多端文件 1. 为什么需要跨平台文件同步&#xff1f; 作为一个常年需要在Windows和Mac双系统切换的开发者&#xff0c;我经历过无数次这样的尴尬时刻&#xff1a;在Mac上修改的文档忘传到Windows&#xff0c;开会时找不到…...