004_DDL五大类约束

--什么是约束
--	约束是在表上强制执行的数据校验规则
--	约束主要用于保证数据库的完整性。
--	当表中数据有相互依赖性时,可以保护相关的数据不被删除
--	大部分数据库支持下面五类完整性约束:
--	1.not null非空,标识字段的值不能为空
--	2.unique key唯一键,标识
--	3.primary key主键
--	4.foreign key外键,外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
--	5.check检查,检查数据

------------------------------以下是在建表的时候,添加约束,在本例中,tb_emp中的外键约束没有起作用,可能mysql不支持这样
--创建员工表
CREATE TABLE tb_emp(
	id INT PRIMARY KEY AUTO_INCREMENT, 		--主键,和自动增长
	NAME VARCHAR(18) NOT NULL,			--非空约束
	sex VARCHAR(2) CHECK(sex='男' OR sex='女'),	--检查约束
	age INT CHECK(age > 0 AND age < 120),		--约束
	address VARCHAR(200) NOT NULL,			--非空约束
	email VARCHAR(100) UNIQUE,			--唯一约束
	dapt_id INT REFERENCES tb_dapt(id)		--部门ID号,tb_emp(员工表)字段引用了tb_dapt(部门表)的id字段
);

--创建部门表
CREATE TABLE tb_dapt(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(18),
	address VARCHAR(40)		--部门地址
);


--插入数据
INSERT INTO tb_emp(NAME,sex,age,address,email,dapt_id) VALUES('李枫','男',22,'成都','249438054a@qq.com',2);
INSERT INTO tb_dapt (NAME,address) VALUES('S1T160','成都');

DROP TABLE tb_emp;
DROP TABLE tb_dapt;



----------------------------以下代码,在建表后,创建约束

--=========第一种方式,在建表的最后,去登陆约束
--创建员工表
CREATE TABLE tb_emp(
	id INT,
	NAME VARCHAR(18),			--Id号
	sex VARCHAR(2),				--名称
	age INT,				--性别
	address VARCHAR(200),			--年龄
	email VARCHAR(100),			--邮箱
	dapt_id INT, 				--部门ID号,
	
	--在键表之后,创建一个外键,tb_maple_fk是外键的名称,REFERENCES 指向了 tb_dapt的id字段
	CONSTRAINT FOREIGN KEY tb_maple_fk (dapt_id) REFERENCES tb_dapt(id) --CONSTRAINT FOREIGN KEY 外键名(外键) REFERENCES 主表(字段)
	
	--为ID添加主键
	CONSTRAINT PRIMARY KEY id;
);

--创建部门表
CREATE TABLE tb_dapt(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(18),
	address VARCHAR(40)		--部门地址
);


--=========第二种方式

--创建员工表
CREATE TABLE tb_emp(
	id INT,
	NAME VARCHAR(18),			--Id号
	sex VARCHAR(2),				--名称
	age INT,				--性别
	address VARCHAR(200),			--年龄
	email VARCHAR(100),			--邮箱
	dapt_id INT 				--部门ID号,
)


--创建部门表
CREATE TABLE tb_dapt(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(18),
	address VARCHAR(40)		--部门地址
);


--在外面来添加主外键关联,给dapt_id字段添加外键,指向了tb_dapt表的id
ALTER TABLE tb_emp ADD CONSTRAINT FOREIGN KEY tb_maple_fk (dapt_id) REFERENCES tb_dapt(id) 

--为name添加主键
ALTER TABLE tb_emp ADD CONSTRAINT PRIMARY KEY(id);

--为email添加唯一键
ALTER TABLE tb_emp ADD CONSTRAINT UNIQUE (email);

--为name添加非空约束,添加不了
ALTER TABLE tb_emp ADD CONSTRAINT NOT NULL(NAME);

--为sex添加检查约束
ALTER TABLE tb_emp ADD CONSTRAINT CHECK(sex='男' AND sex='女');

--删除约束
ALTER TABLE tb_emp MODIFY NAME VARCHAR(20); --相当于将name字段更新了

--删除主键
ALTER TABLE tb_emp DROP PRIMARY KEY;

--删除外键
ALTER TABLE tb_emp DROP FOREIGN KEY;

--删除唯一约束
ALTER TABLE tb_emp DROP INDEX email;

  

posted on 2013-07-27 19:48  樱花满天  阅读(222)  评论(0)    收藏  举报

导航