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 服务器,包括: 管理工具 (克隆.复制.比较.差异.导出.导入) 复制工具 (安装.配 ...
随机推荐
- QTreewidget树状列表右击事件
树状列表右击事件(添加 删除 修改等操作) 思路:首先我们需要一个void contextMenuEvent(QContextMenuEvent * event); 管理Menu事件的一个接口 此接口 ...
- JNI接口的实现
JNI接口的实现 什么是JNI 说明:JNI 是 Java Native Interface 的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++,但是它并不妨碍你使用 ...
- Vivado中综合,实现,编程和调试工程可能会出现的问题及解决方案
Xilinx公司的IDE(集成开发环境) Vivado用处广泛,学会使用Vivado对FPGA的学习至关重要,这里以PRX100-D开发板为例,对Vivado的学习使用进行探讨.本文将会持续更新,列出 ...
- Spring Boot 中处理跨域
HTML 5中新增的跨域资源访问(Cross-Origin Resource Sharing)特性可以让我们在开发后端系统的时候决定资源是否允许被跨域访问.所谓跨域指的是域名不同或者端口不同或者协议不 ...
- POE供电及PD的功率分级
POE供电标准有IEEE802.3af和IEEE802.3at 802.3af,PSE最高提供15.5W的功率而PD端则为12.95W: 802.3at,PSE最高提供30W的功率而PD端则为25W: ...
- Calendar 获取当前月份最后一周
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Ca ...
- Tutorial_WorkflowProcessor usage in AX 2012
Check under system administration if the BC proxy and workflow excecution account are still valid. C ...
- jxg项目Day4-数据库和mybatis的连接映射
配置:yml配置文件中配置数据库的参数,还有映射的参数 1.建实体类User,属性与数据库表对应 2.Mapper包下建UserMapper,继承BaseMapper<User> 3.Se ...
- Day06 ServletContext
ServletContext的介绍与用法 1.什么是ServletContext 1.1 SevrvletContext:Servlet上下文 服务器会为每一个Web工程创建一个ServletCont ...
- RPC方式调用远程webservice接口
/** * 可调整调用方法与命名空间的请求 * @param wsMethod 方法名 * @param bodyMessage json请求体.toString() * @return JSONOb ...