表的约束
为什么需要表的约束
// 唯一约束 unique
drop table if exists a;
create table a
(
name varchar(20) unique,
age varchar(20)
);
insert into a values('aaa','28');
insert into a(age) values(23);
// 非空约束
drop table if exists b;
create table b
(
name varchar(20) not null,
age varchar(20)
);
insert into b(name,age) values('aaa','23');
insert into b(name) values('bbb');
// 为了方便对表中的数据进行查询,通过会为每个记录指定一个id
// id 不能为空 唯一
// 主键约束 primary key 相当于 非空约束加唯一约束
create table c
(
id int primary key,
name varchar(20)
);
insert into c (name) values('aaa'); // id 不能为空
insert into c (id,name) values(1,'aaa');
insert into c (id,name) values(1,'bbb'); // 主键id必须唯一
// 删除主键约束
alter table c drop primary key;
// 增加主键约束
alter table c add primary key(id);
// 建立联合主键
create table d
(
firstname varchar(20),
lastname varchar(20),
primary key(firstname,lastname)
);
insert into d (firstname,lastname) values('aaa','bbb');
insert into d (firstname,lastname) values('aaa','ccc');
insert into d (firstname,lastname) values('aaa','bbb'); // 联合主键所有主键都不能为null,唯一性是针对所有主键来检查的
// 设置主键的自动增长
// 缺点: 记录删除了,主键在原来的基础上继续增长 ; 不便于我们在程序中获得主键
create table e
(
id int primary key auto_increment,
name varchar(20)
);
insert into e (name) values('aaa');
insert into e (name) values('bbb');
delete from e where id=3;
insert into e (name) values('bbb');
// 手工插入id为2的记录
insert into e (id,name) values(2,'eeee');
// 外键约束
// 创建一张Person表
create table person
(
id int primary key auto_increment,
name varchar(20)
);
insert into person(name) values('zhangsan');
insert into person(name) values('wangwu');
drop table orders;
create table orders
(
id int primary key auto_increment,
name varchar(20)
);
// 增加一列 每个订单有个订单人
alter table orders add personid int;
insert into orders(name,personid) values('book',1);
insert into orders(name,personid) values('car',2);
// 问题1: 假如zhangsan离职了 这人没了
delete from person where id=1;
// 查看一下book这个商品是谁下的订单
// 查出商品对应的personid
select personid from orders where name='book';
// result : 1
// 拿着 personid=1 去查 person表 查出是谁
select name from person where id=1; // 查无此人
// 问题2 : 有可能输入订单的时候会误操作 填写一个不存在的订单人id
insert into orders(name,personid) values('ship',4);
// 要解决上述的两个问题,就需要加外键约束 // 这一列是需要参照 person 表的 id 需要加外键约束
// 创建 orders 表
drop table orders;
create table orders
(
id int primary key auto_increment,
name varchar(20),
personid int,
constraint personid_FK foreign key(personid) references person(id)
);
insert into orders(name,personid) values('book', 1);
insert into orders(name,personid) values('car',2);
// zhangsan离职了 删除这个人
delete from person where name='zhangsan';
删不掉的原因: 记录被另外一张表所参照
对于增删改操作而言,我们都需要考虑参照完整性的问题
// 删除外键约束
alter table orders drop foreign key personid_FK;
insert into orders(name,personid) values('ship',3);
// 增加外键约束
// 加外键之前要把参照不完整的数据去除
delete from orders where personid=3;
alter table orders add foreign key(personid) references person(id);
分享到:
相关推荐
MySQL表约束和表关系学习ppt
0.7 MySQL表约束
(完整word版)数据库实验报告:分别使用SQLSERVER企业管理器和T-SQL脚本建立表和表约束.doc
表的约束特点,完整性约束特点,主键约束,创建主键约束(单列主键,复合主键表级方式和列级方式)修改主键,删除主键,创建唯一约束(候选键unique),增加都选件,单列候选键和复合候选键的区别,删除候选键,非空...
1)禁止所有表约束的SQL select ''alter table ''+name+'' nocheck constraint all'' fromwhere type=''U'' 2)删除所有表数据的SQL select ''TRUNCATE TABLE ''+name from sysobjects '' 3)恢复所有...
小白必看!
SNOMED CT表达约束语言的实现。 表达式约束语言功能支持 特征 例子 支持的 自己 404684003 |临床发现| 是的 后裔 <404684003> 40541001 |急性肺水肿| 是的 祖先或自我 >> 40541001 |急性肺水肿| 是的 成员 ^ ...
表约束与列约束:比较表级约束和列级约束的区别和使用场景。 约束的创建与管理:如何添加、修改和删除约束。 约束在复杂查询中的应用:展示如何在复杂的SQL查询中利用约束。 适用人群 数据库管理员:需要深入理解...
事件表约束使用 Choco Solver v3.3.1 来试验 JSR-331,约束编程。 此应用程序实现了一个表示事件的模型客人名单桌子和他们的座位关于客人之间关系的约束该项目提供了模型和变量的启动。 目前,实现了2种启动方法: ...
。。。
。。。
本文实例讲述了MySQL学习笔记之数据定义表约束,分页方法。分享给大家供大家参考,具体如下: 1. primary key 主键 特点:主键是用于唯一标识一条记录的约束,一张表最多只能有一个主键,不能为空也不能重复 create...
利用摄动分析结合打靶法,分析了具有单侧表面约束的圆板,在面内压力与横向力联合作用下发生屈曲和过屈曲问题,得到了在一系列横向力作用下周边固支和简支圆板的过屈曲路径。在微电子元件和微力电系统中大量存在有...
项目中需要把一个数据库的部分表插入到另外一个数据库,设计到外键约束,写了一个程序对主表子表进行排序,插入的时候再也不用去考虑外键约束问题了
利用Oraclr存储过程建表建约束,插入数据,有详细的注释代码!
稀疏的表面约束,结合了基于物理的弹性模拟和无对应对象重建(CVPR 2020) , , , , 慕尼黑工业大学 执照 该软件(不包括第三方库)是根据MIT开源许可证发行的。 有关详细信息,请参见LICENSE 。 资源 引文 如果...
在求解约束优化问题时,为了有效处理约束条件,克服文化算法易陷入局部极值点、混沌搜索优化初值敏感、搜索效率低等缺陷,将混沌搜索优化嵌入至文化算法框架,提出一种求解约束优化问题的混沌文化算法。该模型由基于...
完整性约束的特点,定义实体完整性约束主键约束,创建主键:单列主键,复合主键,添加主键约束,添加多列主键约束,唯一约束 (候选键Unique),3.非空 (NOT NULL),默认值(Default)
NULL 博文链接:https://cutesunshineriver.iteye.com/blog/1286185