Mysql 约束

来源:互联网 发布:数据库查询重复值 编辑:程序博客网 时间:2024/05/21 12:40
约束 约束用于限制加入表的数据的类型。


NOT NULL(非空)
字段不接受NULL值,比如姓名不能为空,id不能为空

name VARCHAR(20) NOT NULL, #设置姓名非空约束

#修改非空约束为空

ALTER TABLE tb_emp MODIFY sname VARCHAR(20)

#在建表后设置为非空约束

ALTER TABLE tb_emp MODIFY sname VARCHAR(20) NOT NULL;


UNIQUE(唯一)
该字段不允许出现重复的值,NULL可以为多个, 比如手机号码或者邮箱都可以使用唯一约束,主键默认唯一

email VARCHAR(100) UNIQUE, #设置邮箱唯一约束

#删除唯一约束

ALTER TABLE tb_emp DROP INDEX email

#在建表后设置为唯一 约束

ALTER TABLE tb_emp MODIFY email VARCHAR(100) UNIQUE


PRIMARY KEY(主键)
主键约束  =  唯一约束+非空约束
一张表都应该要有一个主键且最多只允许有一个主键,主键值必须唯一,不能有NULL 

id INT PRIMARY KEY AUTO_INCREMENT, #设置id为主键约束且设置成自动增长

#删除主键约束 ,先要修改之前设置的自动增长

ALTER TABLE tb_emp MODIFY id INT

ALTER TABLE tb_emp DROP PRIMARY KEY

#在建表后设置自动增长,添加成主键

ALTER TABLE tb_emp MODIFY id INT PRIMARY KEY
ALTER TABLE tb_emp MODIFY id INT AUTO_INCREMENT


CHECK(check约束)
比如给sex设置check约束, sex varchar(2) check(sex='男' or sex='女'),

MySQL可以使用check约束,但check约束对数据验证没有任何作用



DEFAULT(默认值)
比如给性别设置默认值为男

sex VARCHAR(2) DEFAULT '男',

#解除默认约束 

ALTER TABLE tb_emp MODIFY sex VARCHAR(20)

#建表后添加默认约束 

ALTER TABLE tb_emp MODIFY sex VARCHAR(20) DEFAULT '女'


FOREIGN KEY(外键)
一张表的外键指向另一张表的主键
外键参造主表,被参造的就是主表,用外建约束的就是从表
#主表
CREATE TABLE tb_dept(
id INT PRIMARY KEY AUTO_INCREMENT,#主键唯一
NAME VARCHAR(20),
description VARCHAR(200)
);
#从表
CREATE TABLE tb_emp(
 id INT PRIMARY KEY AUTO_INCREMENT,
 sname VARCHAR(20) NOT NULL,
 sex VARCHAR(2) DEFAULT '男',
 address VARCHAR(200),
 email VARCHAR(100) UNIQUE,
 dept_id INT,
 CONSTRAINT FOREIGN KEY tb_emp_fk (dept_id) REFERENCES tb_dept(id)
);

将从表的dept_id与主表的主键字段相连如图:


#删除外键约束
ALTER TABLE tb_emp DROP FOREIGN KEY tb_emp_ibfk_1

/*注意:

添加元素必须先要添加主表,再添加从表

删除元素要先删除从表,再删除主表

*/


0 0