数据库约束

有些数据认为是合法数据,有些是非法数据。 人,是非常不靠谱的!!(对计算机而言)

约束:数据库,自动的对数据的合法性进行校验检查的一系列机制,目的就是为了保证数据库中能够避免被插入/修改一些非法的数据。

MySQL 中提供了以下约束:

 ○ NOT NULL-指示某列不能存储 NULL 值。

 ○ UNIQUE-保证某列的每行必须有唯一的值

 ○ DEFAULT-规定没有给列赋值时的默认值。

 ○ PRIMARY KEY-NOT NULL和 UNIQUE的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更

 ○ FOREIGN KEY-保证一个表中的效据匹配另一个表中的值的参照完整性

 ○ CHECK-保证列中的信符合指定的条件。对于MYSQL数据库,对CHECK子句进行分析,但是忽路CHECK子句。

NOT NULL

UNIQUE

Duplicate:重复 entry: 入口、条目

不仅仅是在限制 插入,也会限制 修改!

Unique约束,会让后续插入数据/修改数据的时候,都先触发一次 查询操作,通过这个查询,来确定当前这个记录是否已经存在。

数据库引入约束之后,执行效率就会受到影响,就可能会降低很多

这就意味着,数据库其实是比较慢的系统(干的活多),也比较吃资源的系统,部署数据库的服务器,很容易成为一整个系统的“性能瓶颈”。

DEFAULT

desc 表名; => describle 描述

order by 列名 desc;   => descend 降序

后续插入数据的时候,default就会在没有显示指定插入的值的时候生效了。

上述设置约束的过程,都是先删除表,再重新创建表~

可不可以不删除表,直接设置约束? 可以,alter table可以修改表结构

PRIMARY KEY  (最重要的约束***)

一张表里面只能有一个primary key

一个表里的记录,只能有一个作为身份标识的数据

虽然只能有一个主键,但是主键不一定只是一个列,也可以是多个列共同构成一个主键(联合主键)

对于带有主键的表来说,每次插入数据/修改数据,也会涉及到进行先查询的操作。

Mysql会把带有unique和primary  key的列自动生成索引,从而加快查询速度。

如何保证主键唯一呢?

  Mysql提供了一种“自增主键”这样机制

主键经常会使用int/bigint

程序猿插入数据的时候,不必手动指定 主键 值——由数据库服务器自己给你分配一个主键

写为null其实是交给数据库服务器自动分配

为空就是从刚才 最大的数值 继续往后分配

此处这里的id的自动分配,也是有一定局限性的

如果是单个mysql服务器,没问题

如果是一个分布式系统,有多个mysql服务器构成的集群,这个时候依靠 自增主键 就不行

FOREIGN KEY (外键)

描述了两个表之间的关联关系

执行这个插入操作,就会触发针对class表的查询,就会查100是否在class中存在。

针对父表进行 修改/删除 操作,如果当前被修改/删除的值,已经被子表引用了,这样的操作也会失败。

外键约束始终要保持,子表中的数据在对应的父表的列中,要存在

指定外键约束的时候,要求父表中被关联的这一列,得是主键或者unique

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值