• 无符号、零填充
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约束条件介绍的更多相关文章

  1. mysql 约束条件介绍

     mysql 约束条件介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FO ...

  2. mysql 约束条件目录

    mysql 约束条件 mysql 约束条件 not null与default mysql 约束条件 unique key 唯一的键 mysql primary key 主键 mysql auto_in ...

  3. 十周周末总结 MySQL的介绍与使用

    python 十周周末总结 MySQL的介绍与使用 MySQL字符编码与配置文件 查看数据库的基本信息(用户,字符编码) /s windos下MySQL默认的配置文件 my_default.ini 修 ...

  4. MySQL 复制介绍及搭建

    MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...

  5. 第1 章MySQL 基本介绍

    第 1 章 MySQL 基本介绍   前言: 作为最为流行的开源数据库软件之一,MySQL 数据库软件已经是广为人知了.但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介 ...

  6. Spotlight on Mysql详细介绍

    Spotlight on Mysql详细介绍   by:授客 QQ:1033553122     1. 版本 2. 使用介绍 1) 主页 会话面板 MySQL面板 INNODB面板 存储面板 主机面板 ...

  7. 三、安装cmake,安装resin ,tars服务,mysql 安装介绍,安装jdk,安装maven,c++ 开发环境安装

    三.安装cmake,安装resin 2018年07月01日 21:32:05 youz1976 阅读数:308   开发环境说明: centos7.2 ,最低配置:1核cpu,2G内存,1M带宽 1. ...

  8. MySQL入门介绍(mysql-8.0.13)

    MySQL入门介绍(mysql-8.0.13单机部署) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL数据库介绍 1>.MySQL是一种开放源代码的关系型数据库 ...

  9. MySQL主从复制介绍

    MySQL主从复制介绍 MySQL数据库的主从复制方案,和使用scp/rsync等命令进行的文件级别复制类似,都是数据的远程传输,只不过MySQL的主从复制是其自带的功能,无需借助第三方工具,而且,M ...

  10. MySQL管理工具MySQL Utilities — 介绍与安装(1)

    MySQL Utilities介绍 MySQL Utilities 提供一组命令行工具用于维护和管理 MySQL 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入) 复制工具 (安装.配 ...

随机推荐

  1. Software Engineering homework 3

    博客信息 沈阳航空航天大学计算机学院2020软件工程作业 作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/1061 ...

  2. C语言历史与C++的区别

    前期演变: C语言的前身是1967年由Martin Richards为开发操作系统和编译器而提出的两种高级程序设计语言BCPL和B.BCPL.Ken Thompson在BCPL的基础上,提出了新的功能 ...

  3. 使用idea从零编写SpringCloud项目-Hystrix

    ps:Hystrix和Fegin里面使用的Hystrix,有些许区别.我理解的是Fegin.Hystrix主要是用于消费方在调用服务方接口时的异常处理,返回兜底数据等,而Hystrix则是消费方自己本 ...

  4. 正确理解RestFul 接口

    一.REST# REST,即Representational State Transfer的缩写,翻译过来就是"表现层状态转化".不得不承认,我在刚开始看到这个名词的时候是一脸懵逼 ...

  5. ACwing语法基础课第一节课例题与习题及个人总结

    第一次课例题 若涉及到浮点数的计算,float一般是6到7位有效数字,double一般是15到16位有效数字,但是为了方便起见,建议直接设为double,因为若涉及浮点数的乘除运算,使用float类型 ...

  6. Eclipse离线安装svn插件下载

    site-1.4.8.zip site-1.6.18.zip site-1.8.22.zip site-1.10.9.zip site-1.10.13-1.9.x.zip site-1.10.13-1 ...

  7. NOIP2012普及组

    T2]寻宝 读懂题目!! 是逆时针,第几个有钥匙的房间,还有能够直接上楼的是作为第一个有钥匙的房间,而不是就从这里直接上楼了 #include<iostream> #include< ...

  8. C/C++命名规范-C语言基础

    这一篇文章想要介绍的是编写代码的时候业界比较常用的一些命名规范,以及个人平时的一些命名规范.涉及"驼峰命名法"."下划线命名法"."帕斯卡命名法&qu ...

  9. idea安装阿里规范审查插件

    Install from repositories Settings >> Plugins >> Browse repositories... Search plugin by ...

  10. TiSpark 初级应用

    目前正在使用tispark 进行离线计算,简单记录一下操作过程 一.技术验证 场景:计算每次充电过程中单体最高电压的变化速率  解决方案:     使用tispark 直接访问tidb的数据,采用sp ...