一、什么是约束?常见的约束有那些?

约束是在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

常见的约束有:非空约束(not null)、唯一约束(unique)、主键约束(primary key)、外键约束(foreign key)、检查约束(check)<Oracle 数据库有 check 约束>

非空约束:约束的字段不能为NULL

唯一约束:约束的字段不能重复

主键约束:(PK)约束的字段既不能为NULL,也不能重复

外键约束:(FK)

二、非空约束 not null

create table t_user(id int,username varchar(255) not null,password varchar(255));

insert into t_user(id,username,password) values(1,'123','111111');

注意:not null 只有列级约束,没有表级约束

三、唯一约束 unique

唯一约束修饰的字段具有唯一性,不能重复,但可以为NULL

案例:给某一列添加 unique

案例:给两个列或者多个列添加 unique

create table t_user (id int, usercode varchar(255), username varchar(255),  unique(usercode,username));                                  //多个字段联合添加约束(表级约束)

create table t_user (id int, usercode varchar(255) unique, username varchar(255),unique);   //列级约束

四、关键约束 primary key

怎么给一张表添加主键约束呢?

drop table if exists t_user;

create table t_user(id int primary key,username varchar(255),email varchar(255));

insert into t_user(id,username,email) values(1,'zs','zs@123.com');

insert into t_user(id,username,email) values(2,'ls','ls@123.com');

insert into t_user(id,username,email) values(3,'ww','ww@123.com');

select * from t_user;

insert into t_user(id,username,email) values(1,'jack','jack@123.com');

insert into t_user(username,email) values('jack','jack@123.com');

通过以上测试得出,id 是主键,因为添加了主键约束,主键字段中的数据不能为NULL,也不能重复。

主键相关术语:主键约束、主键字段、主键值

主键作用:表的设计三范式中有要求,第一范式就要求任何一张表都应该有主键。

主键值是这行记录在这张表中的唯一标识。

                  一张表的主键约束只能有一个。

主键分类:

根据主键字段的字段数量来划分:单一主键和复合主键(多个字段联合起来添加一个主键约束,但复合主键不适合使用,因为复合主键违背三范式。)

根据主键性质来划分:自然主键和业务主键(主键值和业务挂钩,例如:拿银行卡卡号作为,不推荐使用)最好不要拿着和业务挂钩的字段作为主键,因为以后的业务变化一旦发生改变的时候,主键值可能也需要随着发生变化,但有的时候没有办法变化,因为变化可能会导致主键值重复。

使用表级约束方式定义主键:

drop table if exists t_user;

create table t_user(id int,username varchar(255),primary key(id));

insert into t_user(id,username) values(1,'zs');

insert into t_user(id,username) values(2,'ls');

insert into t_user(id,username) values(3,'ww');

select * from t_user;

Mysql 提供主键值自增

drop table if exists t_user;

create table t_user(id int primary key auto_increment,username varchar(255));

insert into t_user(username) values('zs');

insert into t_user(username) values('ls');

insert into t_user(username) values('ww');

select * from t_user;

五、外键约束

外键约束的相关术语:
外键约束:foreign key

外键字段:添加有外键约束的字段

外键值:外键字段中的每一个值

业务背景:

请设计数据库表,用来维护学生和班级的信息。

第一种方案:一张表存储所有数据(有冗余)

第二种方案:两张表(班级表和学生表)

将以上表的建表语句写出来:
t_student 中的classno字段引用 t_class 表中的cno字段,此时t_student 表叫做子表,t_class表叫做父表。

删除数据的时候,先删除子表,再删除父表;

添加数据的时候,先添加父表,再添加子表;

创建表的时候,先创建父表,再创建子表;

删除表的时候,先删除子表,再删除父表。

drop table if exists t_student;

drop table if exists t_class;

create table t_class(cno int primary key,cname varchar(255));

create table t_student(sno int ,sname varchar(255),classno int, foreign key(classno) references t_class(cno));

insert into t_class values(101,'abc'),(102,'def');

insert into t_student values(1,'zs1',101),(2,'zs2',101),(3,'zs3',102),(4,'zs4',102),(5,'zs5',102),(6,'zs6',102);

select * from t_user;

select * from t_student;

 外键可以为NULL?

注意:被引用的字段不一定是主键,但至少具有unique约束。

数据库 --- 约束相关推荐

  1. MySQL数据库(数据库约束)

    目录 数据库约束 数据库约束的类型: null约束 : unique约束(唯一约束): default约束(默认值约束): primary key约束(主键约束): foreign key约束(外键约 ...

  2. 【数据库】MySQL数据库约束(六大约束)

    目录 1.数据库约束 1.1约束类型 1.2 非空约束(NOT NULL ) 1.3 唯一约束(UNIQUE) 1.4默认值约束(DEFAULT ) 1.5主键约束(PRIMARY KEY) 1.6外 ...

  3. ​ 数据库约束【mysql】

    数据库约束 约束就是让数据库帮助程序员更好的检查数据是否正确! 1.not null NOT NULL指定某列不能存储NULL值 2.unique UNI保证某列的每行必须有唯一的值 数据库是如何判断 ...

  4. oracle数据库约束是什么意思,oracle数据库约束

    oracle数据库约束 约束用于确保数据库数满足业务规则. 约束包括:NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY以及CHECK等5种类型. 建立主键约束和唯一约束时 ...

  5. MySQL数据库约束,表的设计

    Author: 老九 个人博客:老九的CSDN博客 ?? 个人名言:不可控之事 乐观面对 ?? 系列专栏:MySQL通关系列 文章目录 数据库约束 not null unique default pr ...

  6. 数据库约束查找的约束_数据库约束的好处,成本和文档

    数据库约束查找的约束 Constraints exist as a way to enforce or document rules within the database. How do they ...

  7. MySQL 表的增删改查(进阶篇①)· 数据库约束 · 表的设计 · 新增查询结果 · 聚合查询 · 聚合函数 · group by · having · 笛卡尔积

    一.数据库约束 1.1 约束类型 1.2 非空约束 not null 1.3 唯一约束 unique 1.4 默认约束 default 1.5 主键约束 primary key 1.6 自增主键 pr ...

  8. MySQL 数据库约束、聚合查询、多表查询

    一.数据库约束 约束就是数据库在使用的时候,对于里面能够存的数据提出的要求和限制,程序猿就可以借助约束来完成更好的校验 1.约束类型 ① NULL约束 NOT NULL - 指示某列不能存储 NULL ...

  9. Java面向对象系列[v1.0.0][SQL语法之数据库约束]

    数据库约束 所有关系型数据库都支持对数据表使用约束,在表面上是强制执行的数据校验规则,通过约束可以更好的的保证数据表里数据的完整性 大部分数据库支持5中完整性约束 NOT NULL:非空约束,指定某列 ...

  10. mysql数据库约束无符号_mysql 数据类型 约束条件

    今日内容: 引擎:决定数据库存取数据的方式==>不同的特点==>不同的用户体验 数据类型:规定了数据库可以存放哪些数据 约束:限制储存数据的规则 引擎: 针对于表的 前提:引擎是建表时规定 ...

最新文章

  1. 图像窗口方面 window
  2. clientHeight、offsetHeight 和 scrollHeight
  3. 《算法图解》之选择排序
  4. 《流畅的Python》读书笔记——Python一等函数
  5. ps 命令查看进程状态
  6. 无法验证的代码未能通过策略检查
  7. LeetCode_151_python_翻转字符串里的单词
  8. 理解FPS游戏中的矩阵方框透视自瞄
  9. 对视频马赛克的调研学习报告
  10. Java读文件的三种方式
  11. DBeaver出现:The Network Adapter could not establish the connection 已解决
  12. java.lang.ClassNotFoundException(通俗易懂)
  13. 即时通讯软件调查报告
  14. 花了10分钟,终于明白矩阵的逆到底有什么用
  15. iphone长截图哪个软件好_亲身体验过13款滚动截屏App,谁才是最好用的iPhone长截屏工具?...
  16. cie规定的标准光源_标准光源的定义(精)
  17. 职场新人如何发公司内部邮件
  18. D-Determine the Photo Positio
  19. C++ 捕获本机网卡的IP包并对其解析的实现
  20. 如何才能快速成为一名Java架构师?

热门文章

  1. 银河麒麟服务器操作系统V10SP2安装虚拟化管理软件
  2. 正则表达式之断言及常用正则表达式
  3. linux学习书籍汇总 值得推荐的linux学习书籍
  4. retainAll()和removeAll()
  5. 图灵的遗产和后继者们的责任
  6. 零基础怎么学习单片机?
  7. iOS 常用正则表达式一览表
  8. MPI 初认识 (入门教程)
  9. 计算机联锁的应用领域,全电子计算机联锁系统优缺点
  10. linux安装英特尔AX200网卡驱动