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

MySQL——约束类型

文章目录

    • 一、主键约束
    • 二、唯一约束(unique)
    • 三、外键约束(foreign key)
    • 四、非空约束(not null)
    • 五、检查约束(check)
    • 六、默认值约束(default)
    • 七、自增约束(AUTO_INCREMENT)

一、主键约束

1.主键约束(PRIMARY KEY)
作用:唯一标识表中的每一行,不允许重复或NULL。
特点:一个表只能有一个主键。可由单列或者多列组成(复合主键)。
2.主键的创建
create table users (
id int primary key,
name varchar(50)
);

为已存在的表添加主键
alter table 表名 modify 字段名 数据类型 primary key;
例如:对xsb表的xh字段添加单一主键
alter table xsb modify xh varchar(20) primary key;
3.复合主键
create table student(
id int,
name varchar(50),
primary key(id,name)
);

为已存在的表添加符合主键
alter table 表名 add primary key(字段名1,字段名2);
例如:alter table xkb add primary key(xh,kcdm);
删除创建的主键约束。
alter table xsb drop primary key

二、唯一约束(unique)

作用:确保列中的值唯一。(MySQL中NULL不参与唯一性比较)。
特点:可以有多个唯一约束。常见于邮箱、用户名等字段。
1.唯一性约束的创建
create table student(
id varchar(20) unique,
name varchar(20)
);

为已存在的表添加唯一性约束
alter table 表名 modify 字段名 数据类型 unique;
例如:alter table xsb modify xm varchar(50) unique;
删除唯一性约束
alter table xsb drop index xm;

三、外键约束(foreign key)

作用:维护表之间的引用完整性,确保外键列的值必须存在于关联表的主键或唯一列中。
特点:要么为空,要么依赖子表的值。
外键的创建
create table student(
xh varchar(20) comment ‘学号’,
name varchar(20) comment ‘姓名’,
foreign key(xh) referennces xkb(xh)
);

student为子表,xkb为父表,将两个表中的学号建立关联关系。这两个字段的数据类型必须是一样的。
comment是备注的意思。
为已存在的表创建外键。
alter table 子表名 add foreign key(字段名) references 父表名(字段名);
例如:alter table xkb add foreign key(xh) references xsb(xh);
删除创建的外键约束。
alter table xkb drop foreign key xkb_ibfk_1;
xkb_ibfk_1外键名可以通过show create table 表名;这个命令查看。

四、非空约束(not null)

作用:禁止列的值为NULL。
例如:
CREATE TABLE products (
name VARCHAR(100) NOT NULL
);

为已存在的表添加非空约束
alter table 表名 modify 字段名 数据类型 not null;
例如:alter table xsb modify xm varchar(50) not null;
删除创建的非空约束。
alter table xsb modify xm varchar(50);

五、检查约束(check)

作用:限制列的值必须满足特定条件
例如:create table employees (
age int check(age >= 18 AND age <= 65)
);

为已存在的表添加检查约束
例如:alter table xsb add check(xb='男’or xb=‘女’);
删除检查约束
alter table xsb drop check xsb_chk_1;
xsb_chk_1 可以通过show create table 表名;这个命令查看。

六、默认值约束(default)

作用:为列指定默认值,插入数据时若未提供值则使用默认值。
create table student(
age int default 18,
name varchar(20) not null
);

为已存在的表添加默认值约束
例如:alter table xsb modify xb char(2) default ‘男’;
删除默认值约束
alter table xsb modify xb char(2);

七、自增约束(AUTO_INCREMENT)

作用:自动为整数列生成唯一递增值,每次在最大值的基础上加一,如果不想自增可以自己在建表是设置值。
特点:仅适用于整数类型的主键或唯一键。
例如:CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);

总结:

约束类型关键字作用是否允许NULL
主键PRIMARY KEY唯一标识行
唯一UNIQUE列值唯一是(一个NULL)
外键FOREIGN KEY关联其他表是(需匹配主键)
非空NOT NULL禁止NULL
检查CHECK限定值范围是(需满足条件)
默认值DEFAULT自动填充默认值
自增AUTO_INCREMENT自动生成递增值

完结。

http://www.dtcms.com/a/288079.html

相关文章:

  • 【RK3576】【Android14】分区划分
  • Java行为型模式---中介者模式
  • HOT100——排序篇Leetcode215. 数组中的第K个最大元素
  • 深度解析 rag-vector-agent-semantic-kernel:基于 Semantic Kernel 的 Agentic RAG 实践
  • 变频器实习Day10
  • JS原型相关知识
  • EINO框架解读:字节跳动开源的大模型应用开发框架
  • 【jquery详细讲解】
  • Vue Swiper组件
  • Vue组件化开发小案例
  • 在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)
  • GitLab 社区版 10.8.4 安装、汉化与使用教程
  • GPU集群如何规划
  • 子串算法题
  • Web攻防-身份验证篇JWT令牌空密钥未签名密钥爆破JWKJWUKID算法替换CVE报告复盘
  • 在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏
  • TypeScript 中的「类」:从语法到实战的完整指南
  • 论C/C++的条件编译#if、#ifdef、#ifndef、#undef
  • Promise入门
  • 三级知识点汇总(详解)【c++】——2
  • 我用Cursor,1周上线了一个虚拟资料流量主小程序技术选型
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 【ChatOpenAI】常用方法详解
  • HOT100——动态规划篇Leetcode221. 最大正方形
  • C++ std::thread线程类 相关问题、函数总结
  • 单调队列深度解析(下)
  • 如何解决 ‘NoneType‘ object has no attribute ‘get‘问题
  • GA-BP遗传算法优化BP神经网络数据生成,采用SVM分类模型评估
  • LM317 芯片推荐电路中保护二极管工作原理
  • 教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配