• 无符号、零填充
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. Excel如何默认禁用科学计数法?

    微软论坛版主回复"无法默认禁用此功能",可在"设置单元格格式"-"自定义"-"类型"改为"0",去除 ...

  2. 安装 vue devtools 时,npm i 和 npm run build 报错问题

    1.如果 npm i 报错,运行如下命令: npm i --legacy-peer-deps 2.如果 npm run build 报错,运行如下命令: npm install -g yarn yar ...

  3. 2020ccpc威海C.Rencontre题解(树形dp)

    题目大意:给定一棵带边权树,给三份点的集合U1,U2,U3,求0.5*(E(dis(u1,u2))+E(dis(u1,u3))+E(dis(u2,u3))). 即,我们需要维护两份点的所有距离和.显然 ...

  4. git reset命令适用场景详解

    ☆ git reset 场景1:本地开发环境,已提交N个commit.但尚未push,希望:①丢弃本地所有的更改,代码强制回退到某个历史版本. 解决办法:git reset --hard HEAD~回 ...

  5. CC2020 分享信息

    CC2020是鄙人第一次参与的国际计算教育报告.CC2020报告的特色是希望面向未来的教育能走近每一个教育的利益相关者,包括家长.学生.行业雇主.政府决策制定者和学术界人士.敬请各位从自己的身份角度对 ...

  6. Spring Boot中编写单元测试

    编写单元测试可以帮助开发人员编写高质量的代码,提升代码质量,减少Bug,便于重构.Spring Boot提供了一些实用程序和注解,用来帮助我们测试应用程序,在Spring Boot中开启单元测试只需引 ...

  7. 解决navicat远程连接MySQL失败,报错1130问题

    1select host from user where user='root'; 2update user set host = '%' where user ='root';3flush priv ...

  8. python 安装fbprophet模块的艰辛历程

    fbprophet这个模块是我目前见过最难装的一个模块,我安装这个包安装了3天,气死我了,需求的依赖包太多,而且对依赖包的版本有极高的要求,所以建议在装这个模块的时候在一个空的虚拟环境下安装,这样依赖 ...

  9. jsp第4个作业(2)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  10. php 后台注册环信用户

    <?php //Easemob.php <?php /** -------------------------------------------------- 环信PHP REST示例代 ...