SQL学习笔记4

约束

1、约束

约束,是指作用在表中字段上的规则,用于限制字段输入的数据,使得表格式统一,数据内容正确。同一个字段的约束可以有多个

约束包括:

非空约束,限制表中的值不为null:not null

唯一约束:同一个字段的值不重复:unique

主键约束:一行数据的唯一标识,非空且唯一:primary key

默认约束:若字段的值为空,则使用默认值:default

检查约束:保证字段值符合某一个条件:check(条件)

约束的语法为:字段名 字段类型 约束1 约束2……[comment]

create table cusinfo(id int primary key auto_increment comment'序号',name varchar(20) not null comment '姓名',sex varchar(10) check(sex='男'||sex='女'||sex='未知') default '未知' comment '性别',age int check (age>=0&&age<=120)comment '年龄',birthday date  check ( birthday <= '2025-6-27')  comment '生日',phone varchar(20) check(length(phone)=11) unique comment '电话',address varchar(50) comment '地址'
)comment='用户信息表';insert into cusinfo values(null,'张三','男',18,'1999-01-01','13888888888','北京'),
(null,'李四','女',19,'1998-01-01','13888888889','上海'),
(null,'王五','未知',20,'1997-01-01','13888888890','广州'),
(null,'赵六','男',21,'1996-01-01','13888888891','深圳'),
(null,'孙七','女',22,'1995-01-01','13888888892','杭州'),
(null,'周八','男',23,'1994-01-01','13888888893','西安'),
(null,'吴九','女',24,'1993-01-01','13888888894','武汉'),
(null,'郑十','男',25,'1992-01-01','13888888895','南京');

2、外键约束(不常用)

两张表在数据库层面建立连接的约束,使得两张表的完整与统一,外键连接最常用的方法是在子表中创建一个子id,然后去连接父表的主键

添加外键:在创建表格时添加:create table 表名(

字段名 数据类型 ,

……

[constraint] [外键名称] foreign key (外键字段名) reference 父表 父表字段名

创建表后在表中增加一个外键: alter table 表名 [add constraint fk_子表名_父表名] foreign key (父表名_外键字段名 )references 父表名 (父表字段名)

create table serinfo(id int primary key  comment'序号',level varchar(10) comment'等级'
)comment '用户等级表';insert into serinfo values(1,'普通会员'),(2,'高级会员'),(3,'VIP会员');alter table cusinfo add column serinfo_id int comment '等级id';update cusinfo set serinfo_id=1 where id=1;
update cusinfo set serinfo_id=2 where id=2;
update cusinfo set serinfo_id=1 where id=3;
update cusinfo set serinfo_id=3 where id=4;
update cusinfo set serinfo_id=2 where id=5;
update cusinfo set serinfo_id=3 where id=6;
update cusinfo set serinfo_id=1 where id=7;
update cusinfo set serinfo_id=3 where id=8;
update cusinfo set serinfo_id=2 where id=9;alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id);

删除外键

alter table 表名 drop foreign key 外键名称;

alter table cusinfo drop foreign key fk_cusinfo_serinfo;

外键的删除更新行为约束

在创建外键时可以语句后增加一个约束更新、删除的语法:alter table 表名 [add constraint fk_子表名_父表名] foreign key (父表名_外键字段名 )references 父表名 (父表字段名)on update 行为 on delete 行为

外键的更新/删除行为有:

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新:no action #默认存在

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新:

restrict #默认存在,与no action一致

将父表与子表级联:当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录:cascadeas

当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null: set null

alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id) on delete cascade on update cascade;alter table cusinfo add constraint fk_cusinfo_serinfo foreign key (serinfo_id) references serinfo(id) on delete set null;

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

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

相关文章

力扣刷题(第七十天)

灵感来源 - 保持更新&#xff0c;努力学习 - python脚本学习 比特位计数 解题思路 对于任意整数 x&#xff0c;其 1 的个数等于 x // 2 的 1 的个数加上 x % 2。状态转移方程&#xff1a;dp[x] dp[x // 2] (x % 2)。 class Solution:def countBits(self, n: int) ->…

鸿蒙网络编程系列56-仓颉版通过数据包结束标志解决TCP粘包问题

1. TCP粘包问题解决思路 在本系列的上一篇文章演示了TCP数据粘包的原因以及可能的解决方法&#xff0c;本文将通过其中的添加数据包结束标志的方法来解决这个问题。我们知道&#xff0c;数据粘包的原因是因为发送的时候没有标明数据包的边界&#xff0c;那么&#xff0c;我们人…

Redis网络通信模块深度解析:单线程Reactor到多线程IO的架构演进

一、核心架构&#xff1a;单线程Reactor模型 Redis网络模块采用经典Reactor模式&#xff0c;核心流程如下&#xff1a; void aeMain(aeEventLoop *eventLoop) {while (!eventLoop->stop) {// 前置钩子&#xff08;集群心跳/数据持久化&#xff09;if (eventLoop->befor…

PILCO: 基于模型的高效策略搜索方法原理解析

PILCO: 基于模型的高效策略搜索方法原理解析 PILCO (Probabilistic Inference for Learning Control) 是一种基于模型的强化学习算法&#xff0c;由Marc Deisenroth和Carl Rasmussen于2011年提出。该算法在数据效率方面表现出色&#xff0c;能够以极少的样本数据实现有效学习。…

大语言模型训练中的自监督学习和其他训练方式

大语言模型训练中的自监督学习和其他训练方式。 自监督学习&#xff08;Self-Supervised Learning&#xff09; 1. 什么是自监督学习&#xff1f; 自监督学习是一种不需要人工标注数据的训练方式&#xff0c;模型从数据本身学习特征和模式。 在语言模型中的具体实现&#x…

[mcp-servers] 工具与资源 | 模型上下文协议MCP | 锚点分类

第三章&#xff1a;工具与资源 欢迎回来&#xff01; 在之前的旅程中&#xff0c;我们认识了客户端&#xff08;第一章&#xff1a;客户端&#xff09;——AI的信使组件 以及MCP服务器&#xff08;第二章&#xff1a;MCP服务器&#xff09;——接收请求并具备执行能力的智能助…

2025年06月27日Github流行趋势

项目名称&#xff1a;edit 项目地址 url&#xff1a;https://github.com/microsoft/edit项目语言&#xff1a;Rust历史 star 数&#xff1a;10807今日 star 数&#xff1a;411项目维护者&#xff1a;lhecker, DHowett, b6k-dev, rhysd, MingcongBai项目简介&#xff1a;我们都编…

Camera Api 2 和 OPEN GL ES 使用(显示滤镜效果)

Camera Api 2 和 OPEN GL ES 使用&#xff08;显示滤镜效果&#xff09; 相机预览和open GL 使用实现滤镜效果 代码 https://github.com/loggerBill/camera 相机预览 1.相机动态权限 <uses-permission android:name"android.permission.CAMERA" /><uses-f…

CAS教务系统单点登录分析

1. 核心 URL 结构 GET /authserver/login?servicehttp%3A%2F%2F192.168.254.188%2Fjsxsd%2Fframework%2FxsMainV.htmlx认证服务器&#xff1a;authserver.XXXX.edu.cn&#xff08;典型 CAS 系统&#xff09;目标服务&#xff1a;http://192.168.254.188/jsxsd/framework/xsMa…

利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类

大家觉得有读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 工业信息物理系统 &#xff08;ICPS&#xff09; 技术是推动海上自主化的基础&#xff0c;尤其是对于无人水面航行器 &#xff08;USV&#xff09;。然而&#xff0c;船上计算限制和通信延迟…

AI+物联网:从万物互联到万物智联

AI物联网&#xff1a;从万物互联到万物智联的范式革命 当农田传感器自主决策灌溉时机&#xff0c;当咖啡机根据睡眠数据调节浓度&#xff0c;当城市交通系统在拥堵发生前主动干预——这些场景不再是科幻想象&#xff0c;而是2025年AIoT&#xff08;人工智能物联网&#xff09;…

Python爬虫实战:研究Levenshtein库相关技术

1. 引言 1.1 研究背景与意义 随着电子商务的快速发展,网络上积累了海量的产品数据。这些数据来自不同的电商平台、卖家,存在着产品名称不统一、规格描述差异大等问题,给数据整合、价格比较、竞品分析等应用带来了极大挑战。传统的精确匹配方法无法处理产品名称中的拼写错误…

MySQL 总是差八个小时,如何破?

MySQL 总是差八个小时&#xff0c;如何破&#xff1f;_mysql__江南一点雨-Byzer 白泽 解决 SpringBoot 应用中 MySQL 时区配置引起的时间不一致问题 - 路有所思 - 博客园

iOS 为图片添加水印

(instancetype)waterMarkWithImage:(UIImage *)image andMarkImageName:(NSString *)markName{ UIImage *watermarkImage [UIImage imageNamed:markName]; if (!watermarkImage) { NSLog("水印图片加载失败: %", markName); return image; } // 获取原图尺寸和方向 …

蓝牙工作频段与跳频扩频技术(FHSS)详解:面试高频考点与真题解析

蓝牙技术凭借其低功耗、短距离通信的特性,已成为物联网、智能穿戴等领域的核心技术之一。其核心竞争力在于对 2.4GHz ISM 频段的高效利用与跳频扩频技术(FHSS)的创新应用。本文将系统梳理蓝牙工作频段与 FHSS 的高频考点,并结合历年真题与解析,快速掌握核心知识,轻松应对…

ArkTS与仓颉开发语言:鸿蒙编程的双子星

前言 鸿蒙是多语言生态&#xff0c;ArkTS、仓颉和 C/C充分互补。ArkTS 是动态类型编程语言&#xff0c;主打易学易用、生态丰富、极简开发、持续创新四大特征&#xff1b;仓颉是静态类型编程语言&#xff0c;主打高性能、强安全、跨平台、智能化等特性。为满足不同业务场景诉求…

怎么把本地仓库push 到gitlab 上

1. 首先 我们需要再gitlab 上建立一个group &#xff0c; &#xff08;group 可也设定是public 还是private&#xff09;&#xff0c;public 可以不用用户密码用 https 下载 2. 再gitlab 的group 下 建立一个仓库 &#xff08;pulbic/private) 如何删除 一个仓库&#xff08;…

论文笔记(八十六)V-HOP: Visuo-Haptic 6D Object Pose Tracking

V-HOP: Visuo-Haptic 6D Object Pose Tracking 文章概括摘要1. 引言2.背景A. 问题定义B. 触觉表示基于单元阵列的传感器基于视觉的传感器 3. 方法学A. 手爪表示B. 物体表示C. 网络设计D. 训练范式 IV. 实验A. 多形态数据集B. 位姿跟踪比较C. 模态消融D. 融合策略消融E. 遮挡对性…

[论文阅读] (40)CCS24 PowerPeeler:一种通用的PowerShell脚本动态去混淆方法

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0c;非常欢迎大家给我留言评论&#xff0c;学术路上期…

DeepSeek工具对AI编程帮助

一、技术架构&#xff1a;混合专家模型&#xff08;MoE&#xff09;的颠覆性优势 DeepSeek的核心竞争力源于其混合专家模型架构&#xff08;Mixture of Experts&#xff09;&#xff1a; 参数规模&#xff1a;6710亿参数&#xff0c;每个token仅激活37亿参数&#xff0c;实现超…