IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySql约束 -> 正文阅读

[大数据]MySql约束

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;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:48:45  更:2022-10-08 20:51:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 7:58:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码