mysql 5.7 check约束_mysql5.7学习笔记---约束

一.约束的种类

主键约束,

外键约束,

非空约束,

唯一键约束,

默认约束

二.功能及使用

1.主键约束

又称主码,是表中一列或多列的组合.要求键的数据唯一,并且不允许为空.主键与记录一一对应.可加快查询速度.分为单字段主键和多字段主键.

1.1单字段主键

(1)定义时候指定,由一个字段组成的主键,语法规则如下:

字段名    数据类型    PRIMARY KEY [默认值]

CREATE TABLE `test_man` (

`id` int(11) PRIMARY KEY ,

`name` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` char(255) DEFAULT NULL

);

(2)定义完后指定主键

[CONSTRAINT ]  PRIMARY KEY [字段名]

CREATE TABLE `test_man` (

`id` int(11) ,

`name` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` char(255) DEFAULT NULL,

PRIMARY KEY (`id`)

);

两种方式的执行结果是一样的.

1.2 多字段联合索引

主键由多个字段联合组成,语法如下

PRIMARY KEY [字段1,字段2,....字段n]

意义:某表没有建立主键,由多个字段联合确定某一条记录

sql如下:

CREATE TABLE `test_dept` (

`name` varchar(20) NOT NULL,

`age` int(4) NOT NULL DEFAULT '0',

`sex` char(1) NOT NULL DEFAULT '0',

`adress` varchar(100) DEFAULT NULL,

PRIMARY KEY (`name`,`age`,`sex`)

)

1.3主键自增

用AUTO_INCREMENT实现.

一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分.AUTO_INCREMENT可以是任何整型(TINYINT,INT,BIGINT,SMALLIN).

语法如下

字段名    数据类型    AUTO_INCREMENT

CREATE TABLE `test_man` (

`id` int(11) PRIMARY KEY  AUTO_INCREMENT ,

`name` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` char(255) DEFAULT NULL

);

2.外键约束

外键用来在两个表数据之间建立链接,可以是一列或多列.一个表可以有一个或多个外键.可以为空值,若不为空则必须对应主表的数据.

首先外键是一个字段,不可以是主键.但对应主表的主键.定义外键后不允许删除对应的主表数据.外键作用是保证数据引用的完整性,一致性.

语法:

[CONSTRAINT ] FOREIGN KEY 字段名1  [,字段名2,.....] REFERENCES 主键列1  [,主键列2,.......]

"外键名"为定义的外键约束名称,一个表中不能有相同名称的外键;

"字段名"表示子表需要添加外键约束的字段列;

"主表名"即被子表外键依赖的主表名称;

"主键列" 表示主表中定义的主键列, 或者列组合.

(1) 创建表时候添加外键

CREATE TABLE `test_man` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` char(255) DEFAULT NULL,

`emp_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `fk_emp_man` (`emp_id`),

CONSTRAINT `fk_emp_man` FOREIGN KEY (`emp_id`) REFERENCES `test_emp` (`id`)

)

(2) 表已经创建添加外键

ALTER TABLE test_man ADD CONSTRAINT fk_emp_man FOREIGN KEY (emp_id) REFERENCES test_emp (id);

(3) 删除外键

ALTER TABLE test_man DROP FOREIGN KEY fk_emp_man

3.非空约束

非空约束指字段不能为空,如果为空插入数据,数据库会报错.

语法:

字段名    数据类型   not null;

CREATE TABLE `test_man` (

`id` int(11) PRIMARY KEY  AUTO_INCREMENT ,

`name` varchar(255) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` char(255) DEFAULT NULL

);

4. 唯一约束

要求该列唯一,允许为空,但只能出现一个空值,保证数据不重复

语法1:

字段名 数据类型  UNIQUE

CREATE TABLE `test_dept` (

`name` varchar(20) UNIQUE,

`age` int(4) NOT NULL DEFAULT '0',

`sex` char(1) NOT NULL DEFAULT '0',

`adress` varchar(100) DEFAULT NULL,

PRIMARY KEY (`name`,`age`,`sex`)

)

语法2:

[CONSTRAINT ] UNIQUE()

CREATE TABLE `test_dept` (

`name` varchar(20) NOT NULL,

`age` int(4) NOT NULL DEFAULT '0',

`sex` char(1) NOT NULL DEFAULT '0',

`adress` varchar(100) DEFAULT NULL,

PRIMARY KEY (`name`,`age`,`sex`),

CONSTRAINT aa UNIQUE(`name`) -- 此处用 UNIQUE KEY `aa` (`name`) 也是一样

)

唯一性约束与 主键约束的区别: 一个表中,可以有多个唯一性约束,且被约束的字段允许有空值.而主键只能有一个,且声明主键的列不能有空值.

5  默认约束

即DEFAULT.指定某列的默认值

语法

字段名 数据类型 DEFAULT 默认值 如:

CREATE TABLE `test_dept1` (

`age` int(4) NOT NULL DEFAULT '0'

)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值