MySQL:约束与数据设计[多表关系,范式]

黑马就业班(01.JavaSE Java语言基础\12.MySQL数据库)——part2:MySQL 表的约束与数据库设计(多表之间的3种关系、数据库设计范式) 1、主要内容   这一章的主要内容如下 1. DQL:查询语句 1. 排序查询 2. 聚合函数 3. 分组查询 4. 分页查询 2. 约束 3. 多表之间的关系 4. 范式 5. 数据库的备份和还原 2、DQL查询语句   排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: *... 阅读详情

约束

  • 概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性

  • 分类:

    1. 主键约束:primary key
    2. 非空约束:not null
    3. 唯一约束:unique
    4. 外键约束:foreign key
  • 非空约束:not null,某一列的值不能为null

    • 创建表时添加约束
create table stu(
	id int,
	name varname(32) not null
);
* 创建表完成,添加非空约束
alter table stu modify name varchar(32) not null;
* 删除name的非空约束
alter table stu modify name varchar(32);
  • 唯一约束:unique,某一列的值不能重复
    • 注意:
      • 唯一约束可以添加null值,但是只能有一条记录位null
    • 在创建表时添加唯一约束
create table stu(
	id int,
	name varchar(32) not null,
	phone_number varchar(20) unique
);
* 删除唯一约束
alter table stu drop index phone_number;
* 在创建完成后,添加唯一约束
alter table stu modify phone_number varchar(20);
  • 主键约束:primary key
    • 注意:
      • 非空唯一
      • 一个表只能有一个字段位主键
      • 代表这个表数据
    • 在创建表时,添加主键约束
create table stu(
	id int primary key,
	name varchar(32)
);
* 删除主键
alter table stu drop primary key;
* 创建完表后,添加主键
alter table stu modify id int primary key;
  • 自动增长:
    • 概念: 如果某一列是数值类型的,使用auto_increment可以来完成值得自动增长
    • 在创建表时,添加主键约束,并且完成主键自增长
create table stu(
	id int primary key auto_increment,
	name varchar(20)
);

删除自动增长ALTER TABLE stu MODIFY id INT;
添加自动增长ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

  • 外键约束:foreign key,让表与表产生关系,从而保证数据的正确性
    • 在创建表时,可以添加外键
--语法:
	create table 表名(
		....
		外键列,
		constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)
	);
  • 删除外键
alter table 表名 drop foreign key 外键名称;
  • 创建表之后,添加外键
alter table 表名 add constraint 外键名称 foreign key(外键列名称) reference 主表名称(主表列名称);
  • 级联操作
    + 添加级联操作
--语法:
	alter table 表名 add constraint 外键名称 foreign key(外键字段名称) references 主表名称(主表列名称) on update cascade on delete cascade;

数据库设计:

  • 多表之间的关系
    • 分类:
      1. 一对一:eg:人和身份证
      2. 一对多(多对一):eg:学校与学生
      3. 多对多:学生与课程
    • 实现关系:
      1. 一对多:在多的一方建立外键,指向一的一方的主键
      2. 多对多:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
      3. 一对一:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
    • PRIMARY KEY(rid,uid), – 联合主键
  • 数据库设计的范式
    • 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求。目前关系数据库有6种范式:第一范式,第二范式,第三范式,巴德-科德范式(BCNF),第四范式(4NF
      )和第五范式(5NF)

      1. 第一范式(1NF):每一列都是不可分割的原子数据项
      2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)
      1. 函数依赖:A–>B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则称B依赖于A
        例如:学号–>姓名。 (学号,课程名称) --> 分数
      2. 完全函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
        例如:(学号,课程名称) --> 分数
      3. 部分函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
        例如:(学号,课程名称) – > 姓名
      4. 传递函数依赖:A–>B, B – >C . 如果通过A属性(属性组)的值,可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C属性的值,则称 C 传递函数依赖于A
        例如:学号–>系名,系名–>系主任
      5. 码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖,则称这个属性(属性组)为该表的码
        例如:该表中码为:(学号,课程名称)
        * 主属性:码属性组中的所有属性
        * 非主属性:除过码属性组的属性
      1. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

数据库的备份与还原

  • 备份:mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
  • 还原:
    1. 登录数据库
    2. 创建数据库
    3. 使用数据库
    4. 执行文件。原文件路劲
iPad秒变Mac副屏的隐藏技巧:用BetterDisplay实现无线竖屏+90度锁定 本文详细介绍了如何利用BetterDisplay软件突破苹果原生“随航”(Sidecar)功能的限制,将iPad无线设置为Mac的竖屏副屏,并实现90度方向锁定。通过创建虚拟显示器、配置分辨率与旋转参数,并校准鼠标指针,用户可以高效利用iPad的纵向空间进行文档阅读、编码等工作,显著提升多屏协作效率。 阅读详情

相关推荐

实战指南:如何用DCCRN模型提升语音增强效果(附代码示例)

本文提供了基于DCCRN模型进行语音增强的实战指南。通过深入解析复数网络如何协同处理语音的幅度与相位信息,并附有完整的PyTorch代码实现,帮助开发者从数据准备、模型搭建到训练调优,构建高效的实时语音增强系统,有效提升嘈杂环境下的语音清晰度。

weixin_29054245的博客 478

mysql的表约束添加和查看

#添加表约束 ALTER TABLE `gd_vedio_comment` ADD CONSTRAINT FOREIGN KEY (vedio_id) REFERENCES `gd_vedio_page_list`(id);#查询单个表约束 SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_

求人不如求己 5666

从零搭建SPI通信系统:AXI Quad SPI IP核在Xilinx平台上的完整配置流程

本文详细介绍了在Xilinx平台上使用AXI Quad SPI IP核从零搭建SPI通信系统的完整配置流程。涵盖IP核架构解析、Vivado环境配置、寄存器编程实战及性能优化策略,帮助开发者快速实现高速稳定的SPI通信,特别适用于嵌入式系统开发中的外围设备连接需求。

hh234的博客 1052

mysql的约束

MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。   常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一约束,指定某列和几列组合的数据不能重复 primary key:主

kqygww的专栏 3万+

Linux下离线安装Google Chrome

目录背景一、下载并安装Google Chrome二、下载并安装依赖包1.libvulkan.so.1()(64bit)2.读入数据总结 背景 项目中服务器被要求不能连接外网,不能直接联网安装,所以需要下载Google Chrome安装包和依赖包,然后离线安装。 linux下步骤都一样,不管ubuntu还是centos只是需要下载对应系统的文件包即可。 本机系统:CentOS 7 一、下载并安装Google Chrome 官方下载地址http://www.google.cn/chrome/browser/d

ancientapesman的博客 1万+

新手学习Vivado XDMA (1) - 配置详细分析

PCIe 在 Vivado XDMA 中的配置分析。

qq_18553915的博客 9706

MySQL入门必备:彻底搞懂表与表之间的三种关系(保姆级教学)

在计算机科学(Computer Science)中,现实世界的数据从来不是孤立存在的。用户有订单,学生选课程,员工属于部门……这些实体之间的关联,正是数据库设计的灵魂。MySQL 作为关系型数据库,其强大之处就在于能通过表与表之间的关系来模拟真实世界的复杂结构。本节课我们将系统讲解三种核心表关系:一对一、一对多、多对多,并结合实战案例,手把手教你设计合理的数据库结构!关系类型关键实现典型场景一对一外键 +UNIQUE或共享主键用户 ↔ 详情一对多“多”方加外键部门 ↔ 员工多对多。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 1210

手把手教你用Qwen-7B打造医疗大模型:从数据准备到RLHF全流程实战

本文是一篇基于Qwen-7B-Chat模型构建医疗领域大模型的实战全流程指南。文章详细拆解了从数据准备、环境搭建,到增量预训练、监督微调(SFT)以及偏好对齐(DPO)的核心技术步骤,并分享了部署与持续优化的实践经验。通过LoRA等高效微调技术,帮助开发者掌握将通用大模型改造为专业领域专家的完整方法论。

weixin_29191761的博客 129

MySQL数据库基本操作

一、DDL:数据定义语言基础创建 create database 数据库名称;不存在则创建,避免报错 create database if not exists 数据库名称;创建并指定字符集 create database 数据库名称 character set 字符集名;查询所有数据库 show databases;查看数据库创建语句、字符集 show create database 数据库名称;查看表结构 desc 表名;直接删除 drop database 数据库名称;

2301_79858563的博客 673

数据预处理之数据平滑处理#matlab

介绍基于 MATLAB 的数据平滑方法,主要介绍 smooth 函数、smoothts 函数和 medfilt1 函数的用法。

m0_56619132的博客 2414

电源防反接保护电路全攻略实战A04

本文深入剖析了硬件设计中电源保护电路的关键技术与实战经验。文章指出,保护电路虽小但至关重要,通过对比分析二极管与MOSFET防反接方案,揭示了MOSFET在效率、温控方面的优势。针对过压保护,重点讲解了TVS二极管选型要点,强调钳位电压而非击穿电压才是保护核心。文章结合工业案例(如48V通信模块烧毁、5V系统MOSFET过热等),详细阐述了PCB布局规范、热设计路径等工程细节,并提供了USB接口ESD防护的完整选型方案。最后强调硬件设计必须考虑最坏工况,在成本与性能间找到平衡点,避免因小失大。

启芯硬件的博客 776

简单使用MySQL

=

2302_77623737的博客 406

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MySQL基础操作(SQL)

up;r:用户名q:需要密码。

2501_93795263的博客 634

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MySQL(五)——表设计(约束、范式、表关系)

文章介绍了数据库表设计时的相关知识,包括约束、范式以及表关系,了解了这三方面,就能根据场景设计出合适的表

xiaokuer_的博客 1464

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【MYSQL中数据库的约束以及表的设计】

MYSQL中数据库的约束以及表的设计

2303_77535762的博客 1542

从入门到精通【 MySQL】 数据库约束与设计

从入门到精通【 MySQL】 数据库约束与设计

双吉堡工程专业的一名27届Javaer。 1809

MYSQL-三大范式和表约束(通俗易懂)

本篇文章主要介绍了对MYSQL中的三大范式的理解,以及表约束类型和表的关系

淡沫初夏zz的博客 3121

三天学会MySQL(十)数据库范式与表关系

什么是范式(范式是符合某一种设计要求的总结。在数据库中表的设计,必须保证其合理性数据库表的设计关系整个系统的架构,关系到后续的开发效率和运行效率。如何设计合理的数据库表结构合理冗余数据少尽量避免插入删除修改异常遵循一定的规则,在关系型数据库中这种规则就称为范式关系型数据库有六种常见范式:第一范式(1NF第二范式(2NF第三范式(3NF巴斯科德范式(BCNF第四范式(4NF第五范式(5NF各个范式是依次嵌套包含的:在第一范式的基础上进一步满足更多规范要求的称为第二范式(

长夜漫漫,无心睡眠 1504

关系型数据库设计基础:约束、三大范式、表关系

数据库约束与表关系总结 数据库约束 数据库约束是对表中数据的限制规则,用于保证数据的正确性、完整性和一致性。主要约束类型包括: NOT NULL:字段不能为空 UNIQUE:字段值必须唯一 PRIMARY KEY:主键,唯一且非空 FOREIGN KEY:外键,维护表间关联关系 DEFAULT:设置字段默认值 CHECK:检查数据是否符合条件 表关系类型 表与表之间存在四种主要关系: 一对一(1:1):一条记录只对应另一表的一条记录(如用户与用户详情) 一对多(1:N):一条记录对应另一表的多条记录(如班级

深耕 Java 后端,沉淀技术知识,记录成长之路。 490

MySQL:外键约束,多表查询,三范式

外键约束,内外连接的多表查询

这是一个博客 1046

MySQL表设计(三大范式 && 表的设计)

在数据库设计的历程中,我们最大的架构师,构建了一座数据的大厦!从需求分析到表格结构设计,每一步都充满了挑战和创意。通过仔细梳理业务需求,我们为数据定义了语音的“身份”,让每个表都成为数据的家,确保他们井然有序且不显现。我们不仅要保证数据的一致性,还要让它们始高效性,让查询速度而为了应对未来的增长,我们更通过索引优化和**分区设计分区设计,让数据库设计好一个数据库表,意味着你为数据架建立了一个坚固又高效的桥梁。通过表与表之间紧密的关系,每一条数据都能顺利流动,应用系统也能流畅运行。

eternal__day的博客 2874

MySQL | 数据库的六种约束、表的关系、三大范式

文章目录数据库约束NOT NULL(非空约束)UNIQUE(唯一约束)DEFAULT(缺省约束)PRIMARY KEY(主键约束) 数据库约束 数据库中主要有六种约束: NOT NULL(非空约束) - 指示某列不能存储 NULL 值。 UNIQUE(唯一约束) - 保证某列的每行必须有唯一的值。 DEFAULT(缺省约束) - 规定没有给列赋值时的默认值。 PRIMARY KEY(主键约束) - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速

Jormungand_V的博客 1884

初识MySQL(二)查询语句, 约束,多表之间的关系,范式, 数据库的备份和还原

初识MySQL(二)查询语句, 约束,多表之间的关系,范式, 数据库的备份和还原一. DQL:查询语句1. 排序查询2. 聚合函数3. 分组查询4. 分页查询二. 约束1. 概念2. 分类3. 非空约束4. 唯一约束5. 主键约束6. 外键约束三. 多表之间的关系1. 分类2. 实现关系四. 范式概念:1. 第一范式(1NF)2. 第二范式(2NF)几个补充概念3. 第三范式(3NF)五. 数据库...

来日浅谈的博客 849

MySQL(3):数据库约束、表的关系、三大范式

文章目录         数据库约束                 NOT NULL(非空约束)               &n

是胖胖没错了的博客 721

数据库的设计、表的约束(完整性)、多表设计与查询

目录 1.表的约束(数据库完整性) 1.1.表约束概念 1.2.约束四大类 1.2.1.非空约束 1.2.2.唯一约束 1.2.3.主键约束:primary key 1.2.4.主键约束_自动增长 1.2.5.外键约束 ​1.2.6.外键约束_级联操作 2.数据库设计 2.1.多表设计(建表原则) 2.2.数据库设计的范式 3.多表关系设计案例 4.表与表之间关系及维护 5.多表查询 5.1.准备数据-创建数据表 5.2.笛卡尔积 5.3.多表查询分类 5.3.1.合并

你好啊cbw 2593
上一篇: MySQL:DML,DQL[表中记录的增删查改]
下一篇: LeetCode24. 两两交换链表中的节点(必理解)
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值