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

开始MySQL之路——MySQL约束概述详解

MySQL约束

create table [if not exists] 表名(字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
)[表的一些设置];
  • 概念

    约束英文:constraint

    约束实际上就是表中数据的限制条件

  • 作用

    表再设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性,比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。

  • 分类

    • 主键约束(primary key) PK

    • 自增长约束(auto_ increment)

    • 非空约束(not_null)

    • 唯一性约束(unique)

    • 默认约束(default)

    • 零填充约束(zerofill)

    • 外键约束(foreign key) FK

主键约束

  • 概念

    MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便再RDBMS中尽快的找到某一行。

    主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。

    每个表最多只允许一个主键

    主键约束的关键字是:primary key

    当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

    操作

    • 添加单列主键

    • 添加多列联合主键

    • 删除主键

①:添加单列主键

创建单列主键有两种方式,一种是在定义字段的同时指定主键,一种是定义完字段之后指定主键

方式1-语法:

在 create table 语句中,通过 primary key 关键字来指定主键。
在定义字段的同时指定主键,语法格式如下:
create table 表名(
...
<字段名><数据类型> primary key
...
)

方式1-实现:

在定义字段之后再指定主键,语法格式如下:
create table 表名(
...
[constraint<约束名>] primary key[字段名]
)数据修改
格式
create  table if not exists emp(sid int primary key,sname varchar(20),deptid int,salary double
);

方式2-实现:

create table emp2(
eid INT,
name VARCHAR(20),
deptId INT,
salary double,
constraint pk1 primary key(id)
)
主键不能重复
insert into emp(sid, sname, deptid, salary) VALUES (1001,'tom',1,122.34);
insert into emp(sid, sname, deptid, salary) VALUES (1002,'jerry',1,122.34);
主键不能为空
insert into emp(sid, sname, deptid, salary) VALUES (null,'tom',1,122.34);

②:联合主键

所谓的联合主键,就是这个主键是由一张表中多个字段中有多个字段组成的。

注意:

1:当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。

2:一张表只能有一个主键,联合主键也是一个主键

语法:

create table 表名(
...
primary key(字段1,字段2,...,字段n)
)

实现:

create table emp3(name varchar(20),deptId int,salary double,primary key(name,deptId)
)insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12);
insert into emp3(name, deptId, salary) VALUES ('tom',1,1200.12);
insert into emp3(name, deptId, salary) VALUES ('jerry',1,1200.12);
insert into emp3(name, deptId, salary) VALUES (null,1,1200.12);

③:添加主键

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加。

语法:

create table 表名(
...
);
alter  table <表名> add primary key(字段列表);

实现:

添加主列主键
​
create table emp5(eid int,name varchar(20),deptId int,salary double
);
​
alter table emp5 add primary key(name,deptId);

④:删除主键

一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。

格式:

alter table <数据表名> drop priamry key;

实现:

删除单列主键
alter table emp1 drop primary key;
​
删除联合主键
alter table emp5 drop primary key;

自增长约束

  • 概念

在MySQL中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。

通过给字段添加auto_increment属性来实现主键自增长

  • 语法

字段名 数据类型 auto_increment

  • 操作

create table t_user1(id int primary key auto_increment,name varchar(20)
);

  

  

 

 

 

非空约束

  

唯一约束

 

默认约束

零填充约束

 

http://www.lryc.cn/news/141766.html

相关文章:

  • CMake基础和命令介绍
  • 【matlab利用shp文件制作mask白化文件】
  • 【LLM】解析pdf文档生成摘要
  • 方案:AI边缘计算智慧工地解决方案
  • 【Python】【数据结构和算法】查找最大或最小的N个元素
  • C++day1(笔记整理)
  • 关于chromedriver.exe一系列问题的解决办法
  • css-选择器、常见样式、标签分类
  • 三星申请新商标:未来将应用于智能戒指,作为XR头显延伸设备
  • 0201hdfs集群部署-hadoop-大数据学习
  • DevOps中的持续测试优势和工具
  • 函数-C语言(初阶)
  • elementuiplus设置scroll-to-error之后 提示被遮挡的解决方案
  • vue中将新添加的div标签自动定位到可视区域内
  • Vue3笔记——(尚硅谷张天禹Vue笔记)
  • 正则表达式一小时学完
  • 上门服务系统|上门服务小程序如何提升生活质量?
  • 系统报错msvcp120.dll丢失的解决方法,常见的三种解决方法
  • 数据库备份工具有哪些
  • Sentinel流量控制与熔断降级
  • The Connector 周刊#10:你真的知道什么是DevOps文化吗?
  • leetcode438. 找到字符串中所有字母异位词(java)
  • 【锐捷】OSPF 多区域配置
  • Linux常用命令_权限管理命令
  • 【黑马头条之热点文章kafkaStream】
  • 【SpringSecurity】三、访问授权
  • 你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢?
  • 【LeetCode75】第三十七题 二叉树中的最长交错路径
  • 百度Apollo学习心得:探索自动驾驶技术的前沿之旅
  • kafka原理之springboot 集成批量消费