04数据库约束实战:从入门到精通

感谢黑马程序员提供的免费课程

约束

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

常见的几种约束:

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

案例:根据需求,完成表结构的创建

CREATE TABLE user(
id int AUTO_INCREMENT PRIMARY KEY COMMENT 'id唯一标识',
name varchar(10) NOT NULL UNIQUE COMMENT '姓名',
age int CHECK(age>20 && age <=120) COMMENT '年龄',
status char(1) DEFAULT '1' COMMENT '状态',
gender char(1) COMMENT '性别')INSERT INTO user(name,status,gender,age) VALUES ('tom1','1','男',23);
INSERT INTO user(name,status,gender,age) VALUES ('tom2','1','男',13),('tom3','1','女','32');
INSERT INTO user(name,status,gender,age) VALUES (Null,'1','男',23);
INSERT INTO user(name,status,gender,age) VALUES ('tom5',DEFAULT,'男',23);

外键约束

概念:
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

具体来说,外键关联的目标字段需要满足以下条件

  1. 可以是另一个表的主键(PRIMARY KEY)(最常见的情况)
  2. 可以是另一个表中设置了唯一约束(UNIQUE) 的字段

创建外键的两种方式:

1:在创建表时添加外键

CREATE TABLE xx(

...

字段   类型   CONSTRAINT  外键名称  FOREIGN KEY(外键字段名) REFERENCES  

主表(主表列名)

...

)

2:使用alter创建外键

ALTER TABLE ADD CONSTRAINT 外键名称  FOREIAGN KEY(外键字段名) REFERENCES  主表(主表列名)

删除外键语法:

ALTER TABEL DROP FOREIGN KEY 外键名;

#创建emp01表
create table emp01(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪资',
entrydate date comment '入职时间',
managerid int comment '直属领导ID',
dept_id int comment '部门ID');
desc emp01;#插入数据
INSERT INTO emp01 (id, name, age, job, salary, entrydate, managerid, dept_id)VALUES
(1,'金庸',66,'总裁',20000,'2000-01-01', null,5),(2,'张无忌',20,'项目经理',12500,'2005-12-05',1,1),
(3,'杨逍',33,'开发',8400,'2000-11-03',2,1),(4,'韦一笑',48,'开发',11000,'2002-02-05',2,1),
(5,'常遇春',43,'开发',10500,'2004-09-07',3,1),(6,'小昭',19,'程序员鼓励师',6600,'2004-10-12',2,1);select * from emp01;#创建外键		
ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id); #删除外键
ALTER TABLE emp01 DROP FOREIGN KEY fk_emp01_dept_id;

外键约束-删除/更新行为

父表是reference关联的表,子表是外键所在的表

语法:

ALTER TABLE ADD CONSTRAINT 外键名称  FOREIAGN KEY(外键字段名) REFERENCES  主表(主表列名)ON UPDATE 行为 ON DELETE 行为

ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id) ON UPDATE SET NULL ON DELETE SET NULL; ALTER TABLE emp01 ADD CONSTRAINT fk_emp01_dept_id FOREIGN KEY(dept_id) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE; 

约束总结:

这是我的个人学习笔记,主要用于记录自己对知识点的理解和梳理。由于目前仍在学习探索阶段,内容中难免存在理解偏差或表述疏漏,恳请各位大佬不吝赐教,多提宝贵意见~ 若有不同看法,欢迎理性交流探讨,感谢包容与指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94978.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF+IOC学习记录

最近在学WPF&#xff0c;上一篇文章记录了WPF的MVVM自己实现和用框架的区别&#xff08;WPFMVVM入门学习&#xff09;&#xff0c;接下这篇文章记录一下在WPF中使用IOC&#xff0c;这里演示用的是微软官方的DependencyInjection&#xff0c;也可以用其他的第三方框架。 项目源…

从零开始学习单片机16

STM32单片机STM32和51单片机的区别51单片机的外设资源少&#xff0c;寄存器少&#xff0c;运行速度慢&#xff0c;价格便宜&#xff0c;容易上手STM32单片机的外设资源更多&#xff0c;寄存器多&#xff0c;运行速度相对快&#xff0c;价格相对贵&#xff0c;上手相对较难STM32…

[特殊字符]论一个 bug 如何经过千难万险占领线上

谨以此文献给每一个曾与 Bug 搏斗、最终却目睹它成功上线的你 本文旨在揭露 Bug 的狡猾&#xff0c;绝非鼓励以下行为。若你照做&#xff0c;后果自负&#x1f436;每一个在线上逍遥法外的 Bug&#xff0c;都不是偶然。它是一场精心策划的奇迹&#xff0c;是开发、联调、测试、…

Day12-python文件操作(二)

目录前言一、Excel文档操作1.1、xlrd和xlwt库1.2、openpyxl库1.3、pandas库总结前言 今天继续学习文件操作相关内容&#xff0c;为后续办公自动化打基础。 一、Excel文档操作 1.1、xlrd和xlwt库 如果要兼容 Excel 2007 以前的版本&#xff0c;也就是xls格式的 Excel 文件&am…

CollageIt:简单易用的照片拼贴工具

在数字图像处理领域&#xff0c;制作照片拼贴是一种常见的创意表达方式。CollageIt作为一款体积小巧、简单易用的照片拼贴工具&#xff0c;能够帮助用户轻松将多张图片拼合成一张精美的拼贴画。它不仅操作简单&#xff0c;还支持多种图片格式&#xff0c;确保用户可以快速制作出…

Java全栈工程师的实战面试:从基础到微服务的全面解析

Java全栈工程师的实战面试&#xff1a;从基础到微服务的全面解析 一、开场介绍 面试官&#xff1a;你好&#xff0c;欢迎来到我们公司。我是今天的面试官&#xff0c;负责技术部分的评估。请先简单介绍一下你自己。 应聘者&#xff1a;您好&#xff0c;我叫李明&#xff0c;25岁…

驱动开发系列68 - GLSL编译器实现 - 算数指令折叠及访存优化

一 : 指令合并概述 指令折叠的意思,原本一个语句会产生多条指令,通过折叠,可以删除一些中间指令,减少指令数量,并且能够减少寄存器占用。提高执行效率。 举一个例子: MUL A, B, 4 ; A = B * 4MAD D, A, 2, F ; D = A * 2 + F MAD G, A, 3, I ; G …

深入解析Qt节点编辑器框架:高级特性与性能优化(四)

文章目录一、高级交互特性&#xff1a;超越基础操作的用户体验提升1. 节点组管理&#xff1a;折叠与嵌套的层级组织2. 智能连接线路由&#xff1a;避免交叉与视觉混乱3. 批量操作与快捷键&#xff1a;提升操作效率二、性能优化&#xff1a;应对大规模节点场景的核心策略1. 图形…

Python 入门操作指南

引言 Python 是一种简单易学却功能强大的编程语言,广泛应用于数据分析、人工智能、Web 开发等领域。对于初学者而言,掌握 Python 的入门操作是迈向编程世界的第一步。本文将以总分总的结构,系统介绍 Python 的安装方法、推荐的开发工具、第一个 Python 程序示例,以及包管理…

ZooKeeper 安装配置

前言 有时会需要安装开源的大数据集群进行测评或者验证问题&#xff0c;已经装过很多遍了&#xff0c;所以想系统的总结整理一下各个组件的安装部署&#xff0c;包括 Zookeeper、Hadoop、Hive、Spark 等。 版本 Zookeeper 3.5.6 3.8.4 3.9.3 初始化 包括主机名修改、SSH互…

考研数据结构Part3——二叉树知识点总结

一、前言 二叉树是一种特殊的树形结构&#xff0c;每个节点最多有两个子节点&#xff0c;分别称为左子树和右子树。其特点是子树有严格的左右之分&#xff0c;顺序不可颠倒。从历年真题来看&#xff0c;二叉树的链式存储实现、遍历算法、属性统计是高频考点&#xff0c;常以选择…

网络与信息安全有哪些岗位:(12)威胁分析师

今天是七夕节&#xff0c;首先祝大家早遇良缘、有情人终成眷属&#xff01;&#xff01;七夕节快乐、工作顺利、学业有成~~ 想知道网络与信息安全领域有哪些具体岗位吗&#xff1f;此前我们已陆续介绍网络安全工程师、渗透测试工程师、SOC 总监、SOC 工具运维工程师等核心角色&…

mysql双机热备(主主模式)

一、环境准备 主机名ip操作系统备注node01192.168.48.91CentOS Linux 7 (Core)mysql主库node01192.168.48.92CentOS Linux 7 (Core)mysql主库192.168.48.90漂移IP&#xff08;VIP&#xff09; centos7镜像下载地址&#xff1a; https://mirrors.aliyun.com/centos/7.9.2009/…

微积分 | 积分代换

注&#xff1a;本文为 “微积分 | 积分代换法 ” 相关合辑。 英文引文&#xff0c;机翻未校&#xff0c; 中文引文&#xff0c;略作重排。 未去重&#xff0c;如有内容异常&#xff0c;请看原文。 Integration by Substitution 积分代换法 May 23, 2018 / By Dave Peterson …

循环高级(1)

1.无限循环2.break3.coutinue4.练习1 打印矩形&#xff08;循环嵌套&#xff09;5.练习2 打印直角三角形#include<stdio.h> int main() {/*打印一个5行5列的三角形效果如下&#xff1a;***** ***** ***** ***** *****…

vpp开启nat,分片包丢包问题分析与解决

现象描述两个网口都开启nat output-feature&#xff0c;路由模式进行大包转发&#xff0c;网络不同&#xff0c;小包转发没问题。通过trace发现&#xff0c;在nat44-ed-in2out-output-slowpath节点丢包。Packet 503:50:43:447292: handoff_traceHANDED-OFF: from thread 2 trac…

深入解析交换机端口安全:Sticky MAC的工作原理与应用实践

深入解析交换机端口安全&#xff1a;Sticky MAC的工作原理与应用实践在当今企业网络环境中&#xff0c;未授权设备接入是常见的安全威胁之一&#xff0c;而Sticky MAC技术正是解决这一问题的利器。在网络安全管理中&#xff0c;端口安全是保护网络基础设施的第一道防线。Sticky…

AI接管浏览器:Anthropic发布Claude for Chrome,是效率革命还是安全噩梦?

AI智能体&#xff08;Agent&#xff09;的竞赛&#xff0c;正在以超乎想象的速度进入白热化阶段。 就在上个月&#xff0c;OpenAI刚刚凭借ChatGPT Agent&#xff0c;向世界展示了AI在云端远程操作电脑、制作PPT的强大能力。而现在&#xff0c;它的老对手Anthropic&#xff0c;…

LFI-labs靶场通关教程

目录 CMD01-06 pass01 pass02 pass03 pass04 pass05 pass06 HDR-1 hdr-1 LFI-01-14 pass01 pass02 pass03 pass04 pass05 pass06 pass07 pass08 pass09 pass10 pass11 pass12 pass13 pass14 CMD01-06 pass01 看看源码, 这里显示的是一个get参数cmd,并…

随机森林的 “Bootstrap 采样” 与 “特征随机选择”:如何避免过拟合?(附分类 / 回归任务实战)

随机森林的 “Bootstrap 采样” 与 “特征随机选择”&#xff1a;如何避免过拟合&#xff1f;&#xff08;附分类 / 回归任务实战&#xff09; 第一部分&#xff1a;揭开随机森林的神秘面纱 1.1 告别“过拟合”&#xff0c;拥抱更强大的模型 在机器学习的旅程中&#xff0c;…