constraint   约束数据(对表中数据的限制条件)

四种条件约束:非空  唯一性  主键约束 外键约束

  • 非空约束(not null)约束的字段不能为空值,必须赋具体的数据

CREATE TABLE t_user (
    id INT (4),
    NAME VARCHAR(32) NOT NULL,
    class BIGINT(1000)
);

这里的ID不可以是空值

  • 唯一性约束(unique)约束的字段具有唯一性,不可重复
  1. 列级约束

CREATE TABLE t_user (
    id INT (4)unique,
    NAME VARCHAR(32) ,
    class BIGINT(1000) 
);

  1. 表级约束(多个字段联合进行约束)

CREATE TABLE t_user (
    id INT (4)
    NAME VARCHAR(32) ,
    class BIGINT(1000)

    unique(id,name)

//多个字段的联合唯一性约束 constraint  表名 _ 字段名 _约束字段名

);

  • 非空性约束与联合性唯一约束的联合应用(既不能重复且唯一使用)

CREATE TABLE t_stu(
    NO INT (4) NOT NULL UNIQUE 
    NAME VARCHAR(128)
);

  • 主键约束

primary ky(pk)

主键约束  主键字段 主键值

表中某个字段被添加主键约束后,该字段被称为主键字段,主键字段中出现的每一个数据都称为主键值

主见约束的作用;

添加主见约束的字段既不能为空,也不能重复。。。。效果与not null unique 相同,但是默认添加了一个"索引 -----index"(

提高了检索效率)

一张表应该有主键,主键的值不能修改,及时两个数据完全相同但是他们的主键值不同,也认为他们是不同索引

  1. 根据个数分类,单一主键和复合主键

列级写法
CREATE TABLE t_stu(
    NO INT (4) PRIMARY KEY

NAME VARCHAR(32) NOT NULL

);

表级写法

CREATE TABLE t_stu(
    NO INT (4),
    NAME VARCHAR(32) NOT NULL
     PRIMARY KEY(id)
);

对于复合主键,只要有一个字段值不同就认为不符合

2.根据业务逻辑分为:自然主键和业务主键

自然主键:若是一个自然数,则这个自然数和业务没有任何关系

业务主键:主键值和当前的业务紧密相关,

mysql自动生成主键值AUTO_INCREMENT 

mysql提供一个自增数字auto_increment,默认从1开始自增。

CREATE TABLE t_students(
    id INT (4) PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(32) NOT NULL
);

  • 外键约束(foreign key)(外键在同一个表中可以有多个

外键约束,外键字段,外键值:

  1. 单一外键:给一个字段添加外键约束

DROP TABLE IF exits  t_class;

CREATE TABLE t_class (
    cno INT(4) PRIMARY KEY,
    cname VARCHAR(32)
);

DROP TABLE IF exits t_stdent;

CREATE TABLE t_student(
    sno INT(4)PRIMARY KEY AUTO_INCREMENT,
    sname INT (4),
    classno INT(4),
    CONSTRAINT t_stdent_class_fk FOREIGN KEY(classno) REFERENCES t_class(cno)
);

首先避免了数据冗余,其次添加了外键约束

以上的表中产生了父子关系,先有父的数据,才有子 ,创建表时应该先创建父表数据再创建字表数据。

外键字段可以为null,外键为空的数据称为孤儿数据

被应用字段必须具有唯一性约束,

外键约束应该注意:

分成两张表来存储,可以减少数据的冗余

典型的一对多的关系,在多的一方要添加外键

SELECT s.sname,c,cname
FROM t_student
JOIN t_class
ON s.cno = c.classno;
查询学生做对应的班级名称。

级联更新与级联删除(在外键约束的基础之上来使用)

在外键约束后面添加关键字(谨慎使用

级联删除:

alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno);

级联更新:

alter table t_student add constraint t_student_classno_fk foreign key(classno) reference t_class(cno) on update cascade;(及时更新与之相关的数据)

  1. 复合外键:给多个字段添加外键约束

mysql 约束基本概念 主键约束 外键约束相关推荐

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

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

  2. MySQL的几个概念:主键,外键,索引,唯一索引

    一.概念: 1.主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录 ...

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

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

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

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

  5. SQL的主键和外键约束

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

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

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

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

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

  8. mysql存在外键的连接_MySQL(外连接、自然连接、新增-追加-删除外键、外键条件-约束)...

    外连接(outer join) left join:左外连接(左连接),以左表为主表 right join:右外连接(右连接),以右表为主表 基本语法:左表 left/right join 右表 on ...

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

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

最新文章

  1. 5、找出100到1000内的不含9的素数,存到result.txt文件中
  2. Kubernetes — 容器与镜像
  3. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书
  4. 【原创视频】docker pull和docker run运行原理分析
  5. 【无套路送书】架构师是怎样炼成的?
  6. android监听动画完成,android判断动画已结束示例代码
  7. 联想y430完全拆机图解_联想Y430P笔记本拆机加内存和SSD图文教程
  8. 网络安全——病毒详解以及批处理01(自启动,修改密码 定时关机,蓝屏,进程关闭)
  9. drcom linux最新版,Drcom-client.org 上线暨新版 PUM v1.0 发布
  10. 40079 钉钉_钉钉获取免登陆授权码CODE,返回:不存在的临时授权码40078
  11. 跨平台第三方平台登录和单点登录
  12. ICPC 2018 焦作 C题 Supreme Command
  13. C中strchr()函数用法
  14. 怎么把视频转换成音频
  15. 蓝懿学习记录,今天又学到了很多
  16. 大唐“痴情”男女-白居易-湘灵
  17. 虚拟机RedHatEenterpriseLinux5安装及Oracle10.2.0安装手记收藏
  18. 抄小米策略,纽曼你成吗?
  19. 优秀员工的十八个习惯
  20. 【XJTUSE计算机图形学】第三章 几何造型技术(2)——Bezier 曲线与曲面

热门文章

  1. 我的心得:数据中心运维管理(二)
  2. 王者荣耀s14服务器维护时间,王者荣耀s14开始时间常见问题 王者荣耀一个赛季一般有多久?...
  3. 华为IP基础快速入门-P5-IP路由选择原理
  4. 指向函数的指针及应用
  5. 解决华硕主板使用机箱前侧面板无声音问题
  6. Integer比较不要使用==使用equals()或Integer.intValue()
  7. 四舍五入C语言(愚人节快乐)
  8. 儿童编程什么语言需求
  9. 2019-12 试卷中的生词(04)
  10. Visual Basic-手机归属查询