MySql约束

news/2024/7/3 6:10:32

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

分类:

主键约束(primary key)PK

自增长约束(auto_increment)

非空约束(not null)

唯一性约束(unique)

默认约束(default)

零填充约束(zerofill)

外键约束(foreign key)FK

2.主键约束

1)MySql主键约束是一个列或者多个列的组合

2)主键约束相当于唯一约束+非空约束

3)每个表做多只允许一个主键

4)主键约束的关键字:primarty key

5)当创建主键约束时,系统默认会在所在的列或者列组合建立对应的唯一索引

--添加单列主键
--方式1:
create table 表名(
    ...
    <字段名> <数据类型> primary key
    ...
)
--方式2:
create table student(
    sid ind primary key,
    name varchar(20),
    dept int,
    salary double
)

--添加多列主键(联合主键)
create table 表名(
    ...
    primary key (字段1,字段2,...,字段n)
);
--例子
create table student(
    sid int,
    name varchar(20),
    dept int,
    salary double,
    constraint stuId primary key (name,dept)  --constraint给主键起一个别名
)

--通过修改表结构添加主键
create table 表名(
    ...
);
alter table <表名> add primary key (字段列表);
--添加单列主键
create table student(
    sid int,
    name varchar(20),
    dept int,
    salary double
)
alter table student add primary key (sid);

--删除主键约束
alter table <数据表名> drop primary key;

3.自增长约束

概念:当主键定义为自增长后,主键的值就不需要用户输入数据了,每增加一条记录,主键自动以相同的步长进行增长

特点:

1)默认情况下,auto_increment的初始值是1,每新增一条记录,字段值自动加1

2)一个表中只能有一个字段使用auto_increment约束,且该字段必须有唯一索引,以避免序号重复

3)auto_increment约束的字段必须具备not null属性

4)auto_increment约束的字段只能是整数类型(tinyint、smallint、int、bigint)

5)auto_increment约束字段的最大值为该字段的数据类型最大值,如果达到上限,auto_increment会失效

--自增长约束
字段名 数据类型 auto_increment
--例子
create table student(
    id int primary key auto_increment,
    name varchar(20)
);

--指定自增字段初始值
create table student(
    id int primary key auto_increment,
    name varchar(20)
)auto_increment=100;

delete和truncate在删除数据后自增列的变化:

1)delete数据之后自动增长从断点开始

2)truncate数据之后自动增长从默认起始值开始

4.非空约束(not null)

--非空约束
方式1:<字段名><数据类型> not null;
方式2:alter table 表名 modify 字段 类型 not null;
--例子1
create table student(
    id int,
    name varchar(20) not null,
    address varchar(20) not null
);
--例子2
create table student(
    id int,
    name varchar(20),
    address varchar(20) 
);
alter table student modify name varchar(20) not null;

--删除非空约束
alter table student modify name varchar(20);

4.唯一约束(unique)

概念:所有记录中字段的值不能重复出现

--新增唯一约束
方式1:<字段名><数据类型> unique
方式2:alter table 表名 add constraint 约束名 unique(列)
--例子1:
create table student(
    id int,
    name varchar(20),
    phone_number varchar(20) unique --指定唯一约束
);
--例子2:
create table student(
    id int,
    name varchar(20),
    phone_number varchar(20)
);
alter table student add constraint temp unique(phone_number);

--删除唯一约束
alter table <表名> drop index <唯一约束名>
alter table student drop index temp;
--注:如果没有约束名字,默认为该列的名字

5.默认约束(default)

概念:指定某列的默认值

--默认约束
方式1:<字段名><数据类型> default <默认值>;
方式2:alter table 表名 modify 列名 类型 default 默认值;
--例子1:
create table student(
    id int,
    name varchar(20),
    address varchar(20) default '北京' --指定默认约束
); 
--例子2:
create table student(
    id int,
    name varchar(20),
    address vachar(20)
);
alter table student modify address varchar(20) default '北京';

--删除默认约束
alter table <表名> change column <字段名><类型> default null;
alter table student change column address varchar(20) default null;

6.零填充约束(zerofill)

概念:

1)插入数据时,当该字段值的长度小于定义的长度时,会在该值的前面补上相应的0

2)zerofill默认为int(10)

3)当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍

--零填充约束
create table student(
    id int zerofill, --零填充约束
    name varchar(20)
);

--删除零填充约束
alter table student modify id int;


http://lihuaxi.xjx100.cn/news/58088.html

相关文章

生物课高中神经调节视频,初中生物神经系统视频

求高中生物神经调节的全部讲解 神经活动的基本过程是反射&#xff0c;反射的结构基础为反射弧&#xff0c;包括五个基本环节&#xff1a;感受器、传入神经、神经中枢、传出神经和效应器。 感受器是接神经调节受刺激的器官&#xff0c;效应器是产生反应的器官&#xff1b;中枢…

NOIP200801ISBN号码

NOIP200801ISBN号码题目链接字面描述题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示代码实现题目 链接 https://www.luogu.com.cn/problem/P1055 字面描述 题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应&#xff0…

十一、内容补充——SpringCloud + Alibaba 全家桶详解(目前公司最新技术)

因为csdn字数有限&#xff0c;只能另外写一篇把剩下的内容补充完整了。。。。。。 十六、SpringCloud Alibaba Nacos服务注册和配置中心 1. Nacos简介 ⑴ Nacos名字的由来 前四个字母分别为Naming和Configuration的前两个字母&#xff0c;最后的s为Service。 ⑵ Nacos是什…

【思科模拟器基本使用】

切换模式 用户模式&#xff1a;网络设备开机时即用户模式 特权模式&#xff1a;在网络模式下输入enable可切换到特权模式 全局配置模式&#xff1a;在特权模式下输入configure terminal可进入全局配置模式 线路配置模式&#xff1a;在全局配置模式下输入line console 0(配置编号…

opencv从入门到精通 哦吼 07

进阶篇 本篇的内容较多&#xff0c;包含了 6 章内容&#xff0c;分别是模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理以及人脸检测和人脸识别。这 6 章内容虽然相对独立&#xff0c;但是在实际开发的过程中&#xff0c;是相辅相成、相得益彰的 目录 模板匹配 模板匹配方…

The Planets: Earth-Vulnhub靶场

下载靶机&#xff1a;下载地址 下载后直接在vm打开&#xff0c;把靶机和kali网络配置成NAT模式。 开启靶机&#xff0c;查看MAC地址。 打开kali使用命令arp-scan -l查看靶机ip&#xff1a;192.168.195.132 nmap -A 192.168.195.132查看开放的端口&#xff0c;能看到打开了80…

淘宝怎么进行补单?流程是什么?

淘宝怎么进行补单?流程是什么? 对于淘宝商家来说&#xff0c;需要好好的打好店铺的基础&#xff0c;为了能够做得更好&#xff0c;很多的淘宝商家们都会去补单。当然淘宝店铺补单都是有一定的技巧的&#xff0c;那么淘宝商家们如何去进行补单呢?下面进行介绍。 淘宝怎么进…

Nginx反向代理和负载均衡实战

004_Nginx实现反向代理负载均衡_哔哩哔哩_bilibili 准备两台服务器&#xff0c;每台安装tomcat。 准备一台服务器&#xff0c;安装nginx,未配置时&#xff0c;访问nginx&#xff0c;打开了index.html页面 配置upstream name{}这里name随便起&#xff0c;为集群的名字。 在lo…