mysql数据库笔记 约束_MySQL数据库笔记四:MySQL的约束
<1>概念
是一种限制,它是对表的行和列的数据做出约束,确保表中的数据的完整性和唯一性。
<2>使用场景
创建表的时候,添加约束
<3>分类
1. default:默认约束,域完整性
2. not null:非空约束,域完整性
3. unique:唯一约束,实体完整性
4. primary key:主键约束,实体完整性
5. foreign key:外键约束,参照完整性
6. check:检查约束(MySQL不支持),域完整性
7. atuo_increment:自增长约束
8. unsigned:无符号约束
9. zerofill:零填充约束
数据库中有三个完整性:域、实体、参照完整性
域(列)完整性:
域完整性是对数据表中字段属性的约束。
实体完整性在MySQL中实现:
通过主键约束和候选键约束实现的
参照完整性
也就是说是MySQL的外键
1.default
<1>概念
指定某列的默认值,插入数据的时候,此列没有值,则用default指的的值来填充。
<2>添加
在创建表的时候添加 : create .....default
create table t1(
id int default 1,
name varchar(20) default '老王'
);
通过alter语句添加:alter....modify/change.........
alter table t1 modify id int default 2;
alter table t1 change name name varchar(32) default '大拿';
<3>删除: alter.....modify/change
alter table t1 modify id int;
alter table t1 change name name varchar(32);
2.not null
<1>概念
指定某列的值不为空,在插入数据的时候必须非空 "" 不等于 null ,0不等于 null
<2>添加
在创建表的时候添加 : create .....not null
create table t1(
id int not null,
name varchar(20) not null
);
通过alter语句添加:alter....modify/change.........
alter table t2 modify id int;
alter table t2 change name name varchar(32) null;
<3>删除: alter.....modify/change
3.unique
<1>概念
指定列或者列组合不能重复,保证数据的唯一性
不能不限重复的值,但是可以有多个null
同一张表可以有多个唯一的约束
<2>添加唯一约束
在创建表的时候添加 : create .....unique
create table t3(
id int unique,
name varchar(32) not null
);
insert t3 value (1,'老王');
insert t3 value (1,'老李'); -- id唯一约束,添加异常
create table t3(
id int,
name varchar(32) not null,
constraint id_unique unique(id,name) -- 添加复合约束
);
通过alter语句添加:alter....modify/change......... / alter .... add unique.....
alter table t3 modify id int unique;
alter table t3 add unique(name);
alter table t3 add constraint un_id unique(id);
<3>删除唯一约束:alter .... drop...index 名称 / drop index 名称 on 表名
alter table t3 drop index id_unique
<4>注意:如果删除的唯一约束列具有自增长约束,则必须要先删除自增长约束,再去删除唯一约束。
4.主键约束
<1>概念
当前行的数据不为空并且不能重复
相当于:唯一约束+非空约束
<2>添加主键约束
在创建表的时候添加 : create .....primary key
create table t4(
id int primary key,
name varchar(20)
);
create table t4(
id int,
name varchar(32),
[constraint id_unique] primary key (id,name) -- 联合约束
);
通过alter语句添加:alter....modify/change......... / alter .... add primary key.....
alter table t4 modify id int primary key;
alter table t4 add constraint pk_id_name primary key(id,name);
<3>删除主键:alter ... drop primary key
alter table t4 drop primary key
<4>注意:如果删除的主键列具有自增长约束,则必须要先删除自增长约束,再去删除主键约束。
5.auto_increment:自增长约束
<1>概述
列的数值自动增长,列的类型只能是整数类型
通常给主键添加自增长约束。
<2>添加
在创建表的时候添加 : create .....auto_increment
create table t5(
id int auto_increment,
name varchar(20)
);
通过alter语句添加:alter....modify/change......... auto_increment
alter table t5 change id id int auto_increment;
<3>删除:alter ... modify/change....
alter table t5 modify id int;
<4>注意:
一张表只能有一个自增长列,并且该列需要定义约束。
6.unsigned:无符号约束
<1>概念
指定当列的数值未非负数
age tinyint 1 -128~127 UNSIGNED 0~255
<2>添加
在创建表的时候添加 : create .....UNSIGNED
create table t5(
id int,
age tinyint UNSIGNED
);
通过alter语句添加:alter....modify/change.........
alter table t5 change age age int tinyint UNSIGNED;
alter table t5 modify age tinyint UNSIGNED;
<3>删除:alter ... modify/change....
alter table t5 modify age tinyint;
alter table t5 change age age int;
7.zerofill:零填充约束
<1>概述:
指定当前列的数值的显示格式,不影响当前列显示范围
<2>
在创建表的时候添加 : create .....zerofill
create table t6(
id int,
age tinyint zerofill
);
<3>删除:alter ... modify/change....
alter table t5 modify age tinyint;
alter table t5 change age age int;
8.外键约束
通过建立外键,设置表于表之间的约束性,限制数据的录入
员工表(从表) 部门表(主表)
员工号 员工姓名 部门名称 部门号 部门名称
1 张三 1 1 人力
2 李四 2 2 销售
3 王五 3
<1>概述
建立表和表之间的关系,建立参照完整性。一个表可以有多个外键,每个外键必须参照另一个主键。
被外键约束的列,取值必须参照其主表列中的值。
注意:通常先创建主表,再创建从表
create table dept(
deptno int primary key auto_increment,
dname varchar(32),
loc varchar(32)
);
create table emp(
empno int primary key auto_increment,
ename varchar(32) not null,
deptno int
);
<2>添加外键约束
create table emp(
empno int primary key auto_increment,
ename varchar(32) not null,
deptno int
[constraint fk_name] foreign key (deptno) references dept(deptno); -- 添加外键约束
);
使用alter add constraint....
alter table emp add constraint fk_name foreign key (deptno) references dept(deptno);
<3>删除外键约束
alter drop foreign key fk_name
在创建表时,不去明确的指定外键约束的名称,系统辉自动的随机生成一个外键的名称,
使用 show create table 表名。查看具体的外键名称。
alter table emp drop foreign key fk_name;
<4>设置外键中的级联关系
1.on delete cascade:删除主表中的数据时,从表中的数据随之删除。
2.on update cascade:更新主表中的数据时,从表中的数据随之删除。
3.on delete set null:删除主表中的数据时,从表中的数据置空
级联删除
create table emp(
empno int primary key auto_increment,
ename varchar(32) not null,
deptno int
[constraint fk_name] foreign key (deptno) references dept(deptno) on delete cascade; -- 添加外键约束
);
注意:
插入数据时,先插入主表的数据,在插入从表的数据。
删除数据时候,先删除从表的数据,在删除主表中的数据。
总结:数据库的约束
主键约束、自增长约束、外键约束、唯一约束、非空约束、默认约束
内容来源于网络如有侵权请私信删除
mysql数据库笔记 约束_MySQL数据库笔记四:MySQL的约束相关推荐
- mysql 3.5安装_MYSQL学习笔记-06-搭建数据库
文章内容输出来源:拉勾教育Java高薪训练营 1. 安装说明 基于Ubuntu Linux系统安装,MySQL版本是5.7.29. 安装方式是通过官网下载相应的tar.gz压缩包进行安装.这种方式需要 ...
- mysql字段约束_mysql数据库之表操作及字段约束条件
一.存储引擎 二.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id name age sex 1 li 12 male 2 liu ...
- mysql一对一外键约束_MySQL数据库之-foreign key 外键(一对多、多对多、一对一)、修改表、复制表...
我们在同一数据库创建的表时候,很多时候会出现相同数据的冗余问题,也就是说几个id会有一个或者同n个相同字段,这样就导致数据表结构数据重复冗余, 冗余还无所谓,关键是如果我要改其中一个相同的字段信息,其 ...
- mysql数据库端口链接_mysql数据库端口链接
高校计划ESC7天训练营-PolarDB搭建门户网站 Day04打卡 创建PolarDB数据库账号 使用无痕模式登录子账号 左侧侧边栏-产品与服务-云数据库PolarDB,进入PolarDB管理器 点 ...
- mysql数据库安全模式开启_mysql 数据库安全模式
手把手教你在CentOS 6.8中安装mysql @(Linux)[centos,mysql,安装] 卸载掉原有mysql 查看该操作系统上是否已经安装了mysql数据库:rpm -qa | grep ...
- mysql的crud语句_MySQL数据库CRUD语句快速入门
本文目录: Day11 SQL语句 sql语句,一种用于操作数据库的语言 数据库, 简单地理解为硬盘上的文件, 可以存放数据 sql 语句大致可以分类两大类 进入数据库的方法: 1. 命令行代码: 进 ...
- mysql没法修改数据_MySQL学习笔记之数据的增、删、改实现方法
本文实例讲述了MySQL学习笔记之数据的增.删.改实现方法.分享给大家供大家参考,具体如下: 一.增加数据 插入代码格式: insert into 表明 [列名-] values (值-) creat ...
- mysql数据库高可用_MySQL数据库高可用
一.MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : corb ...
- mysql试题百度云_MySQL数据库无完整备份删库,除了跑路还能怎么办?
1.背景 前段时间,由于运维同事的一次误操作,清空了内网核心数据库,导致了公司内部管理系统长时间不可用,大量知识库内容由于没有备份险些丢失. 结合这两天微盟的删库跑路事件,我们可以看到,数据库的备份与 ...
最新文章
- python的用途实例-Python实例方法、类方法、静态方法的区别与作用详解
- 【转】iOS-Core-Animation-Advanced-Techniques(六)
- redis相关知识记录整理
- jinjia2 模板不解析html
- 一个即将步入运维的菜虫内心
- c语言link错误什么原因,C语言 OpenCV错误:“LINK:致命错误LNK1104:无法打开文件’opencv_core231d.lib’”...
- WPF XAML 从零开始认识XAML
- hdu2066一个人的旅行(多源点多汇点的最短路径问题)
- wps office oa控件 痕迹_WPS加载项案例应用回顾
- jquery 乱码 传参_jquery ajax传递中文参数乱码问题及解决方法说明
- 10、configparser模块
- 在GridView中,设置字符超出单元格部分的内容用“...”表示
- 《Git与Github使用笔记》分享3款Git可视化工具
- 基于Python实现的遗传算法求TSP问题
- Android studio导入项目报错Please refer to the user guide chapter on the daemon at http://gradle.org/docs/2
- 【图像识别】基于ORL数据库的PCA人脸识别系统matlab源码
- 游戏开发热门技术浅析
- 【Linux】nasm/yasm not found
- 3D资产大掌柜—Connecter
- 单片机属于嵌入式系统吗?嵌入式开发要学哪些课程?
热门文章
- jquery删除替换元素remove、detach、empty、replaceWith、replaceAll
- AD16更改器件封装如管脚间距等常规设置
- hashCode 一致性hash 算法
- 判断Mouse事件源类型
- Tasker to stop Poweramp control for the headset while there is an incoming SMS - frozen
- 求助帖--C++中单引号' '内多个字符是什么意思
- 狼来了!中国房地产的实质--比喻太生动了
- jpetstore学习第4章
- [转载] Python数据分析与可视化学习笔记(一)数据分析与可视化概述
- [转载] Python学习笔记 String类型常用方法