常用约束

  • 非空约束(not null):约束的字段不能为NULL;只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空);
  • 唯一约束(unique):约束的字段不能重复;既有列级约束,也有表级约束
  • 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK);既有列级约束,也有表级约束
  • 外键约束(foreign key):...(简称FK);
  • 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束

not null:只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空)

create table t_student(student_name         varchar(25) not null,    )

unique:既有列级约束,也有表级约束

unique约束修饰的字段具有唯一性,不能重复。

但可以是NULL,NULL不是值,所以多个NULL不是重复

列级约束

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

多个字段联合起来添加1个约束unique 【表级约束】

create table t_user(id int,usercode varchar(255),username varchar(255),unique(usercode,username) );

主键约束:primary key:既有列级约束,也有表级约束

主键相关的术语?

  • 主键约束 : primary key

主键字段 : id字段添加primary key之后,id叫做主键字段

主键值 : id字段中的每一个值都是主键值。

主键特点:不能为NULL,也不能重复

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

有表级约束也有列级约束

表级约束

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

列级约束

create table t_student()student_id          int(10)  primary key,
student_name         varchar(20) not null,sex                char(2)  default  'm',birthday        date,email                varchar(30)  ,classes_id        int(3)        )

主键值自增

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

外键约束:foreign key

关于外键约束的相关术语:

  • 外键约束: foreign key
  • 外键字段:添加有外键约束的字段
  • 外键值:外键字段中的每一个值。

外键可以为NULL;

如果表中某个字段为外键字段,则该字段的值必须来源参照表的主键;

外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键

顺序要求:

  • 删除数据的时候,先删除子表,再删除父表。
  • 添加数据的时候,先添加父表,在添加子表。
  • 创建表的时候,先创建父表,再创建子表。
  • 删除表的时候,先删除子表,在删除父表。
create table t_class(cno int,cname varchar(255),primary key(cno));create table t_student(sno int,sname varchar(255),classno int,primary key(sno),foreign key(classno) references t_class(cno));

级联更新与级联删除

  1. 父表中的数据更改,子表中的数据也会跟着变动。
  2. 父表中的数据删除,子表中的数据也会删除。

约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】相关推荐

  1. SQL的主键和外键约束

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  2. SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建

    文章目录 一.主键约束(primary key) 二.外键约束(foreign key) 三.检查约束(check) 四.非空约束(not null) 五.唯一性约束(unique) 六.默认值约束( ...

  3. SQL Server的主键与外键约束

    SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...

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

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

  5. mysql外键_MySQL外键约束(FOREIGN KEY)

    MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用.对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表). 外键用 ...

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

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

  7. 数据库元数据数据字典查询_5_列出给定表的主键、外键约束

    列出给定表的主键.外键约束 需求描述 需求:查询出给定的表emp的外键约束信息. 解决方法:通过各个数据库里提供的与外键约束相关的数据字典进行查询. 注: 数据库数据集SQL脚本详见如下链接地址 员工 ...

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

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

  9. MySQL设置主键、联合主键、外键、唯一约束、非空约束、默认约束

    MySQL登录.查看记录等基本操作 MySQL设置表的属性值自动增加 auto_increment 1.主键.联合主键.外键 1.什么是主键 主键是在多条记录中用于确定一条记录时使用的标识符.主键具备 ...

  10. templet 显示字段外键对应名_主外键和外键约束

    主外键和外键约束 主键 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 . 外键 外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个 ...

最新文章

  1. python 简单trace 过滤处理
  2. 2012年最佳30款免费 WordPress 主题
  3. DataSet数据导入到Excel
  4. python mock server_python学习笔记6--mockserver
  5. 软件系统上线前演示剧本
  6. java 获取拼音_Java获取汉字对应的拼音(全拼或首字母)
  7. 虚拟机opnsense作为dhcp服务器,ESXI 与 OPNSense 配合
  8. 视频画面大小剪裁操作教程
  9. 俄罗斯技术宅教你如何花5万美元制作家用DNA测序仪
  10. 【NTL密码算法开源库-概述】
  11. Hibernate第九篇【组件映射、继承映射】
  12. Finger.02 - 搭建MQTT服务器
  13. 基于Springboot的学生信息管理系统
  14. 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图
  15. 如何在Docker容器里开启fail2ban防止SSH暴力破解
  16. A review of 3D vessel lumen segmentation techniques: Models, features and extraction schemes
  17. 深度学习--超参数(持续更新)
  18. 腾讯会议突围背后:端到端实时语音技术是如何保障交流通畅的?
  19. 习题4-5 换硬币 (20分)
  20. STL源码剖析-第一章STL概论与版本简介

热门文章

  1. 431 Request Header Fields Too Large
  2. 不从SD卡启动树莓派2
  3. Python进行vivo手机评论数据信息情感分析、LDA主题分析
  4. 雅诗兰黛公司宣布品牌集群领导层更新
  5. Excel将xlsx后缀格式的宏文件转为xlsm格式?
  6. spring-test部分翻译
  7. php中怎么添加css样式_html怎么添加css样式?
  8. VMWare虚拟机序列号大全
  9. GO+Selenium批量关注各大网站实战 1 (基础+demo)
  10. stay foolish, stay hungry