MySQL约束条件介绍
- 无符号、零填充
unsigned
# 因为正负值符号会占用一个比特位,使用此约束条件可以去掉数字类型里面的正负值符号,之后相同数字类型会支持的正数范围会更大
id int unsigned
zerofill
# 整数型默认是int(11),也可以指定int(num),之后插入的数据如果不足指定的数据类型长度则会使用数字0进行填充
id int(5) zerofill
- 非空
not null
# 非空可以指定字符类型不可以为空。
# 创建语句如下:
create table t1(
id int,
name varchar(16) not null
)
# 例外,当插入内容指定为空字符串时是可以插入的。
insert into t1 values(1, '');
# 如上所示,是可以插入的,这只能在代码层面作限制。
- 默认值
default xxx
# 此约束条件可以在插入时如果不插入数据,则会默认插入默认值
create table t1(
phone bigint default 00000000000,
name varchar(16)
);
# 插入null的话,则不会触发默认值
insert into t1 values(null, 'jason');
- 唯一值
unique
# 使一列的数据为唯一,不可重复
create table t1(
id int unique,
name varchar(10)
);
# 注意:唯一并不可以限制为空,空值是可以重复的
mysql> insert into t1 values(null, 'jack');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t1 values(null, 'rose');
Query OK, 1 row affected (0.00 sec)
mysql> desc t1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | UNI | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql> select * from t1;
+------+------+
| id | name |
+------+------+
| NULL | jack |
| NULL | rose |
+------+------+
2 rows in set (0.00 sec)
- 主键
primary key
# 使用方法
create table t1(
id int primary key,
name varchar(10)
);
'''
主键的特性:
1.约束性为not null与unique的结合(也就是定义主键后,这一列的值为非空且唯一)
2.在MySQL的Innodb存储引擎中,必须有一列为主键,并且也只能有一列为主键(不可以设置多个主键)
2.1 补充说明:当你在建一个表的时候,如果没有设置主键,会有两种情况出现:
2.1.1 所有的字段都没有unique+not null约束条件:
Innodb存储引擎会创建一个隐藏列作为主键(隐藏列无法使用)
2.1.2 一个字段或多个字段设置有unique+not null约束条件
Innodb存储引擎会将第一个有unique约束条件的列自动转换为主键
'''
- 自增
auto_increment
# 使用方法:
create table t1(
id int primary key auto_increment,
name varchar(16)
);
'''
特性:
1. 自增只能设置到主键字段中,且字段只能为整数型。
1. 自增不会因为数据的删除而回退。
2. 自增设置后也可以手工添加数据
2.1 因为是主键列,所以插入的数据肯定不能重复
2.2 如果插入的数据比当前自增的数字小,只要符合primary key的条件也可以插入
2.3 如果插入的数据比当前自增的数字大,那么自增的数字会自动变为插入的数据值+1
3. 自增如果想要回退只能通过truncate清空表进行重置。
'''
- 外键
foreign key(本表的字段名) references table_name(字段名)
on update cascade
on delete cascade
create table book(
id int primary key auto_increment,
book_name varchar(32)
);
create table author(
id int primary key auto_increment,
name varchar(16),
book_id int, # 如果是一对一,需要加上unique约束条件,不加则是一对多
foreign key(book_id) references book(id)
on update cascade
on delete cascade
);
'''
外键是强耦合,不符合解耦合的特性
在实际项目中,大部分时候会使用代码进行约束,而不是使用外键
特性:
一对多
基础的用法,外键建立在多的一方(一个数据对应多个外键,那外键就建在多那那一方)
多对多
针对多对多的关系,适合建立维度表与事实表进行结合
一对一
建议将外键创建在使用频率高的表中
创建的时候,需要对外键字段加unique约束条件,这样就形成了一对一
'''
MySQL约束条件介绍的更多相关文章
- mysql 约束条件介绍
mysql 约束条件介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FO ...
- mysql 约束条件目录
mysql 约束条件 mysql 约束条件 not null与default mysql 约束条件 unique key 唯一的键 mysql primary key 主键 mysql auto_in ...
- 十周周末总结 MySQL的介绍与使用
python 十周周末总结 MySQL的介绍与使用 MySQL字符编码与配置文件 查看数据库的基本信息(用户,字符编码) /s windos下MySQL默认的配置文件 my_default.ini 修 ...
- MySQL 复制介绍及搭建
MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...
- 第1 章MySQL 基本介绍
第 1 章 MySQL 基本介绍 前言: 作为最为流行的开源数据库软件之一,MySQL 数据库软件已经是广为人知了.但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介 ...
- Spotlight on Mysql详细介绍
Spotlight on Mysql详细介绍 by:授客 QQ:1033553122 1. 版本 2. 使用介绍 1) 主页 会话面板 MySQL面板 INNODB面板 存储面板 主机面板 ...
- 三、安装cmake,安装resin ,tars服务,mysql 安装介绍,安装jdk,安装maven,c++ 开发环境安装
三.安装cmake,安装resin 2018年07月01日 21:32:05 youz1976 阅读数:308 开发环境说明: centos7.2 ,最低配置:1核cpu,2G内存,1M带宽 1. ...
- MySQL入门介绍(mysql-8.0.13)
MySQL入门介绍(mysql-8.0.13单机部署) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL数据库介绍 1>.MySQL是一种开放源代码的关系型数据库 ...
- MySQL主从复制介绍
MySQL主从复制介绍 MySQL数据库的主从复制方案,和使用scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输,只不过MySQL的主从复制是其自带的功能,无需借助第三方工具,而且,M ...
- MySQL管理工具MySQL Utilities — 介绍与安装(1)
MySQL Utilities介绍 MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入) 复制工具 (安装.配 ...
随机推荐
- NS-Atmosphere payload Programmer
NS-Atmosphere payload Programmer 通过该软件将任意payload烧写到NS-Atmosphere 注入器中, 兼容windows, ubuntu, 苹果 MAC OS ...
- Topsis法的python实现
TOPSIS (Technique for Order Preference by Similarity to an Ideal Solution )法是C.L.Hwang和K.Yoon于1981年首 ...
- md5信息摘要算法实现(python 和 go版本)
纯手写实现的md5信息摘要算法 github地址如下 https://github.com/kittysmith5/dgst/blob/main/md5 python3版本代码 #!/usr/bin/ ...
- C++与C语言中struct 与typedef struct 应用区别(摘自csdn mpp_king)
typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,stru ...
- jmeter之【报错记录】
{ "code": "E0001", "success": false, "description": "Co ...
- Alibaba Cloud Linux 3.2104 64位安装php7.2.12
1 安装php所需要的扩展 yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel curl curl ...
- SpringBoot - Lombok使用详解1(基本介绍、安装配置、var和val)
我们创建 POJO 类时,经常需要先写属性,然后手写或者自动生成 get 和 set 方法,然后还要重写 toString 方法....一系列操作下来,这个 POJO 类便会产生太多的样板式代码. 这 ...
- dart 环境搭建
1. 打开dart官网 获取 Dart SDK | Dart 2. 安装Chocolatey,以管理员身份打开cmd,输入下面代码 Set-ExecutionPolicy Bypass -Scope ...
- nextcloud file location
- Microsoft SQL Server,错误: 3023
对数据库的备份.文件操作(如 ALTER DATABASE ADD FILE)以及加密更改必须序列化.请在当前备份或文件操作完成后重新发出该语句.ALTER DATABASE 语句失败. (Micro ...