1、什么是约束?

约束对应的英语单词:constraint
在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的
完整性、有效性!!!约束的作用就是为了保证:表中的数据有效!!

1.2、约束包括哪些?

非空约束:not null
唯一性约束: unique
主键约束: primary key (简称PK)
外键约束:foreign key(简称FK)
检查约束:check(mysql不支持,oracle支持)

1.3、非空约束:not null

非空约束not null约束的字段不能为NULL。
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) not null // not null 只有列级约束,没有表级约束!
);
insert into t_vip(id,name) values(1,‘zhangsan’);
insert into t_vip(id,name) values(2,‘lisi’);

insert into t_vip(id) values(3);
ERROR 1364 (HY000): Field 'name' doesn't have a default value

1.4、唯一性约束: unique

唯一性约束unique约束的字段不能重复,但是可以为NULL。

drop table if exists t_vip;
create table t_vip(id int,name varchar(255) unique,email varchar(255)
);
insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');
insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com');
insert into t_vip(id,name,email) values(3,'wangwu','wangwu@123.com');
select * from t_vip;insert into t_vip(id,name,email) values(4,'wangwu','wangwu@sina.com');
ERROR 1062 (23000): Duplicate entry 'wangwu' for key 'name'insert into t_vip(id) values(4);
insert into t_vip(id) values(5);
+------+----------+------------------+
| id   | name     | email            |
+------+----------+------------------+
|    1 | zhangsan | zhangsan@123.com |
|    2 | lisi     | lisi@123.com     |
|    3 | wangwu   | wangwu@123.com   |
|    4 | NULL     | NULL             |
|    5 | NULL     | NULL             |
+------+----------+------------------+
name字段虽然被unique约束了,但是可以为NULL。

新需求:name和email两个字段联合起来具有唯一性!
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) unique, // 约束直接添加到列后面的,叫做列级约束。
email varchar(255) unique
);这张表这样创建是不符合我以上“新需求”的。
这样创建表示:name具有唯一性,email具有唯一性。各自唯一。

    以下这样的数据是符合我“新需求”的。但如果采用以上方式创建表的话,肯定创建失败,因为'zhangsan'和'zhangsan'重复了。insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');

怎么创建这样的表,才能符合新需求呢?

     drop table if exists t_vip;create table t_vip(id int,name varchar(255),email varchar(255),unique(name,email) // 约束没有添加在列的后面,这种约束被称为表级约束。);insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');select * from t_vip;name和email两个字段联合起来唯一!!!insert into t_vip(id,name,email) values(3,'zhangsan','zhangsan@sina.com');ERROR 1062 (23000): Duplicate entry 'zhangsan-zhangsan@sina.com' for key 'name'

什么时候使用表级约束呢?
需要给多个字段联合起来添加某一个约束的时候,需要使用表级约束。

unique 和not null可以联合吗?
drop table if exists t_vip;
create table t_vip(
id int,
name varchar(255) not null unique
);

 mysql> desc t_vip;+-------+--------------+------+-----+---------+-------+| Field | Type         | Null | Key | Default | Extra |+-------+--------------+------+-----+---------+-------+| id    | int(11)      | YES  |     | NULL    |       || name  | varchar(255) | NO   | PRI | NULL    |       |+-------+--------------+------+-----+---------+-------+

在mysql当中,如果一个字段同时被not null和unique约束的话,
该字段自动变成主键字段。(注意:oracle中不一样!)

 insert into t_vip(id,name) values(1,'zhangsan');insert into t_vip(id,name) values(2,'zhangsan'); //错误了:name不能重复insert into t_vip(id) values(2); //错误了:name不能为NULL。

约束——非空约束和唯一性约束相关推荐

  1. [JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)

    约束 * 概念: 对表中的数据进行限定,保证数据的正确性.有效性和完整性. * 分类:1. 主键约束:primary key2. 非空约束:not null3. 唯一约束:unique4. 外键约束: ...

  2. 【MySQL8.0学习笔记】约束:主键约束、自增长约束、非空约束、唯一性约束、默认约束与零填充约束

    本文对MySQL数据库的约束相关知识进行了归纳总结,包括主键约束.自增长约束.非空约束.唯一性约束.默认约束与零填充约束. 本专栏长期更新,敬请关注. 文章目录 1 MySQL约束简介 2 主键约束 ...

  3. 约束,MySQL约束,非空默认值,主键外键唯一自增,完整详细可收藏

    文章目录 1. 约束(constraint)概述 2. 非空约束 3. 唯一性约束 4. PRIMARY KEY 约束 5. 自增列:AUTO_INCREMENT 6. FOREIGN KEY 约束 ...

  4. MySQL 之 约束 (主键、唯一、非空、自增、外键)

    MySQL 之 约束 (主键.唯一.非空.自增.外键) 目的:使得数据更准确,更完整. 约束的分类: 1.键约束 (1)主键约束 (2)唯一键约束 (3)外键约束 2.非空约束 3.默认值约束 4.自 ...

  5. MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)

    目录 自增长约束概念 特点 自增字段初始值 delete和truncate在删除后自增列的变化 非空约束概念 删除非空约束 唯一约束概念 文末资源推荐 每文一语 自增长约束概念 在 MySQL 中,当 ...

  6. mysql 未能启用约束_未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。...

    来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示"未能启用约束.一行或多行中包含违反 ...

  7. 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

    来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示"未能启用约束.一行或多行中包含违反 ...

  8. SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束

    文章目录 约束 约束介绍和分类 非空约束 唯一约束 主键约束 默认约束 案例练习 外键约束 约束 约束介绍和分类 约束的概念: 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库 ...

  9. 【MySQL - 5】约束是什么?非空约束、唯一约束、主键约束、外键约束有什么作用?

    目录 1. 非空约束 2. 唯一约束 3. 主键约束 自动增长 4. 外键约束 级联操作 首先我们来想象一下,前几篇文章在我们操作数据库的过程中,自由度是很高的,想给哪个赋值就给哪个赋值,但是这样子, ...

最新文章

  1. java json设置编码_我们如何用Java编码JSON对象?
  2. SecureCRT从Windows中上传文件lrzsz工具
  3. 那些炫酷的特效--QQ空间+VUE
  4. java 非法线程_JVM中的线程行为
  5. 学术圈炸了!IEEE限制华为相关专家参与审稿:这操作毁尽三观
  6. ORM框架之Mybatis(四)MyBatis生成器,逆向工程生成实体类和SQL
  7. 通过自动化接口调用InstallShield 报错的解决办法
  8. 微信小程序轮播图实现(超简单)
  9. datavideo切换台说明书_datavideo洋铭 SE-650 HD4通道切换台,高清导播切换台
  10. 如何控制积分成本?常见的积分成本的核算方法
  11. 做大数据的公司_技术
  12. Incorrect string value: '\xE5\xA4\xA7\xE5\xB9\x85...' for column' name' at row 1的解决方法
  13. 在移动端设置overflow:hidden禁止滚动的解决方法
  14. element-ui的走马灯详解
  15. 标准库:csv --- CSV 文件读写
  16. seo整站优化详细教程下载
  17. OpenCV和关于VS平台的一些编程总结
  18. ibm服务器维护重点,IBM服务器存储维护基础知识.pptx
  19. 正弦函数及其FFT变换(一)
  20. add python to path是什么意思_为什么anaconda不建议加入path?

热门文章

  1. 美国往事 - 追忆我的房东Dick - 开心的回忆
  2. python和revit_Python 與 Revit
  3. 白羊座爱情的预测,以及主要的日食,占星术预测2011年的影响
  4. 数据库设计之概念结构设计---------E-R图详解(流程和关系)
  5. 弧齿锥齿轮零件图_弧齿锥齿轮齿轮基础知识
  6. DWH和DB以及DATA Mart区别
  7. CRMEB开源打通版,值得一试的免费商城
  8. (zhuan) 126 篇殿堂级深度学习论文分类整理 从入门到应用
  9. ACL2000简单配置
  10. httpclient调用京东万象数字营销频道新闻api实例