列的完整性约束

列的完整性约束

在这里插入图片描述

主键约束(PRIMARY)

主键创建的目的是为了帮助数据库以更快的速度查询信息,逐渐必须是唯一的,一个表中主键标记的列字段不能相同,并且是非空值(不能为空)

主键可以是单一的字段,也可以是多字段的组合.

单字段主键

单字段主键的语法规则如下:
CREATE TABLE tablename(
propName propType PRIMARY KEY, …
);

CREATE TABLE tablename(
propName propType , …
PRIMARY KEY(propName )
);

多字段主键

主键是由多个属性组合而成时,设置和单字段主键类似,在属性定义完之后统一设置主键。语法规则如下:
CREATE TABLE tablename(
propName1 propType ,
propName2 propType ,

[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)
);

[CONSTRAINT pk_name] 这段是可选的可不选的

也就是设置的这俩个字段必须都一样才算重复

给主键设置名字:(CONSTRAINT)

CREATE TABLE tablename(
propName propType , …
CONSTRAINT pk_name PRIMARY KEY(propType)
);

给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:
ps:据说后期有用,前面学的可有可无

外键约束(FOREIGN)

外键时表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整,即构建两个表字段之间的参照关系

设置外键约束的两个表之间具有父子关系,即子表中的某个字段是由附表决定的.

列如:有俩个表–学生表—班级表—
这俩个表都有班级这一列,如果以班级表为父表,那么学生表中的班级一列则是依赖于班级表(学生表中的班级字段一定是来源于班级表),反之亦然

在具体设置外键约束时,设置外键约束的字段必须依赖与数据库中已经存在的父表的主键,同时外键可以为空(NULL)

要删除外键约束的表时,需要先散出外键参考的表才能删除外键约束的表

其语法形式如下:
CREATE TABLE tablename_1(
propName1 propType ,
propName2 propType ,

[CONSTRAINT fk_name] FOREIGN KEY(propName1) REFERENCES table2_name(table2_column)
);

[CONSTRAINT pk_name] 这段是可选的可不选的

mysql> use school;   #选择数据库school 
mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class 
mysql> desc class ;  #查询表class 的定义, describe class 效果等同
mysql> create table student (id int PRIMARY KEY AUTO_INCREMENT, name varchar(64) NOT NULL, class_id int, sex enum('M','F'), FOREIGN KEY(class_id) REFERENCES class(id) );  #创建表student, class_id 为表class id 字段的外键 
mysql> insert into student(name, class_id, sex) values('小红', 2, 'M');   #插入记录,主键自增长 
mysql> insert into student(name, sex) values('小军', 'M');   #插入记录,允许外键为空 



外键约束的参考字段(REFERENCES table_name)是主键约束

非空约束(NOT NULL)

当数据库表中的某个字段比希望设置为NULL,可以用NOT NULL经行约束,确保该字段有值

其语法形式如下:
CREATE TABLE tablename(
propName propType NOT NULL , …
);

唯一约束(UNIQUE)

当数据库的某个字段不允许重复时,可以使用UNIQUE约束设置,保证该段不会重复

法形式如下:
CREATE TABLE tablename(
propName propType UNIQUE, …
);

注意: unique 约束允许受约束的字段出现多个空值 NULL, 不算重复

自增约束(AUTO_INCREMENT)

AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。

在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。

由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成主键。

AUTO_INCREMENT来实现,其语法形式如下:
CREATE TABLE tablename(
propName propType AUTO_INCREMENT, …
);

默认情况下,字段propName的值从1开始增加,每增加一条记录,记录中该字段的值就会在前一条记录(或已存在的最大值(包括曾经存在的))的基础上加1,j即使上一个记录以及删除,也会根据上一条记录增加1

注意: mysql8 中,AUTO_INCREMENT 必须设为键(主键、外键和唯一键均可)! 否则会报错!

默认值约束

当为数据库表中插入一条新记录时,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认值。

为了达到这种效果,可通过SQL语句关键字DEFAULT来设置。

其语法形式如下:
CREATE TABLE tablename(
propName propType DEFAULT defaultvalue, …
);
注意: 如果没有设置,则默认为空

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值