重庆建设银行网站,政协系统网站建设,网页制作论文3000字,网站应用开发一、概述 概念#xff1a;约束是作用于表中字段上的规则#xff0c;用于限制存储在表中的数据。 目的#xff1a;保证数据库中数据的正确、有效性和完整性。 分类#xff1a; 注意#xff1a;约束是作用于表中字段上的#xff0c;可以在创建表/修改表的时候添加约束。 二…一、概述 概念约束是作用于表中字段上的规则用于限制存储在表中的数据。 目的保证数据库中数据的正确、有效性和完整性。 分类 注意约束是作用于表中字段上的可以在创建表/修改表的时候添加约束。 二、约束演示 案例需求 根据需求完成表结构的创建。需求如下 CREATE TABLE tb_user(id int AUTO_INCREMENT PRIMARY KEY COMMENT ID唯一标识,name varchar(10) NOT NULL UNIQUE COMMENT 姓名,age int check (age 0 age 120) COMMENT 年龄,status char(1) default 1 COMMENT 状态,gender char(1) COMMENT 性别
);在为字段添加约束时我们只需要在字段之后加上约束的关键字即可需要关注其语法。我们执行上面的 SQL 把表结构创建完成然后接下来就可以通过一组数据进行测试从而验证一下约束是否可以生效。 insert into tb_user(name,age,status,gender) values (Tom1,19,1,男),(Tom2,25,0,男);
insert into tb_user(name,age,status,gender) values (Tom3,19,1,男);
insert into tb_user(name,age,status,gender) values (null,19,1,男);
insert into tb_user(name,age,status,gender) values (Tom3,19,1,男);
insert into tb_user(name,age,status,gender) values (Tom4,80,1,男);
insert into tb_user(name,age,status,gender) values (Tom5,-1,1,男);
insert into tb_user(name,age,status,gender) values (Tom5,121,1,男);
insert into tb_user(name,age,gender) values (Tom5,120,男);三、外键约束
1. 介绍 外键用来让两张表的数据之间建立连接从而保证数据的一致性和完整性。 2. 语法
2.1 添加外键
CREATE TABLE 表名(字段名 数据类型,...[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);案例: 为 emp 表的 dept_id 字段添加外键约束关联 dept 表的主键 id。 alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);添加了外键约束之后我们再到 dept 表(父表)删除 id 为 1 的记录然后看一下会发生什么现象。 此时将会报错不能删除或更新父表记录因为存在外键约束。 2.2 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; 案例 删除emp表的外键fk_emp_dept_id。 alter table emp drop foreign key fk_emp_dept_id;3. 删除/更新行为 添加了外键之后再删除父表数据时产生的约束行为我们就称为删除/更新行为。具体的删除/更新行为有以下几种: 具体语法为: ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;由于 NO ACTION 是默认行为我们前面语法演示的时候已经测试过了就不再演示了这里我们再演示其他的两种行为CASCADE、SET NULL。 1CASCADE alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;1️⃣修改父表 id 为1的记录将 id 修改为 6 我们发现原来在子表中 dept_id 值为 1 的记录现在也变为 6 了这就是cascade 级联的效果。 在一般的业务系统中不会修改一张表的主键值。 2️⃣删除父表 id 为 6 的记录 我们发现父表的数据删除成功了但是子表中关联的记录也被级联删除了。 2SET NULL alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;1️⃣我们发现父表的记录是可以正常的删除的父表的数据删除之后再打开子表 emp我们发现子表 emp 的 dept_id 字段原来 dept_id 为1的数据现在都被置为 NULL 了。