表的约束
为什么需要表的约束
// 唯一约束 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这样的关系型数据库管理系统时。本节主要探讨了MySQL中的表约束和不同类型的表关系。 首先,表约束是确保数据完整性和准确性的规则。MySQL支持...
适合人群:数据库管理人员、开发者,特别是对SQL语言有一定掌握并希望深入了解数据库表约束机制的技术人员。 使用场景及目标:适用于设计新表结构或优化现有数据库模型,目标在于提高数据的完整性和一致性,增强...
数据库实验报告 - 使用 SQLSERVER 企业管理器和 T-SQL 脚本建立表和表约束 该实验报告旨在使用 SQLSERVER 企业管理器和 T-SQL 脚本建立表和表约束。实验中,学生需要创建五张表,分别是员工人事表、客户表、销售主...
在Oracle数据库管理中,表约束是确保数据完整性的重要机制。以下是对给定文件中练习题的详细解释: 一、创建emp1表并设置约束: 1. 主键约束:在eno字段上创建主键约束,目的是确保eno字段的值是唯一的,不能有重复...
0.7 MySQL表约束
表的约束特点,完整性约束特点,主键约束,创建主键约束(单列主键,复合主键表级方式和列级方式)修改主键,删除主键,创建唯一约束(候选键unique),增加都选件,单列候选键和复合候选键的区别,删除候选键,非空...
首先,创建表`emp1`,包含了eno、ename、sex、age和dno五个字段,并在eno字段上创建主键约束,ename字段上创建非空约束,dno字段上创建唯一性约束,以及一个检查约束用于限制年龄和性别的组合。创建表的SQL语句如下...
禁止所有表约束的SQL 当需要暂时禁用表中的所有约束时(例如,在进行大量数据导入操作之前),可以通过以下SQL语句来实现: ```sql SELECT 'ALTER TABLE ' + name + ' NOCHECK CONSTRAINT ALL' FROM sys.tables ...
如果唯一性约束保护多个数据列,那么唯一性约束要作为表约束增加。语法如下: CONSTRAINT CONSTRAINT_NAME (COL1,COL2) UNIQUE USING INDEX TABLESPACE (TABLESPACE_NAME) STORAGE (STORED CLAUSE); 2. 外键约束 ...
小白必看!
表的约束 在数据管理中,表的约束是保证数据的一致性和安全性的重要手段。它可以保障数据的完整性、唯一性和正确性。本文将详细介绍表的约束,包括主键约束、唯一约束、非空约束和默认值约束等。 主键约束 主键...
- **网表约束文件 (Netlist Constraint File, .NCF)**:由综合工具自动生成,基于用户的UCF文件,包含设计综合后的约束信息。 - **物理约束文件 (Physical Constraint File, .PCF)**:在实现阶段由布局布线工具...
SNOMED CT表达约束语言的实现。 表达式约束语言功能支持 特征 例子 支持的 自己 404684003 |临床发现| 是的 后裔 <404684003> 40541001 |急性肺水肿| 是的 祖先或自我 >> 40541001 |急性肺水肿| 是的 成员 ^ ...
对象约束语言(Object Constraint Language,简称OCL)是一种在统一建模语言(UML)中使用的强大工具,用于描述和验证模型元素上的约束条件。由于国内关于OCL的中文资源较少,因此理解并掌握OCL对于UML建模者尤其...
在MySQL数据库管理中,数据定义和表约束是创建和维护数据结构的重要方面,而分页则是处理大量数据查询时常用的技术。以下是对这些概念的详细解释: 1. **数据定义**: 数据定义(Data Definition)是SQL语言的一...
例如,主键约束确保了表中的每条记录都有唯一的标识符,而外键约束则维护了不同表之间的引用完整性。此外,唯一性约束确保特定列中的值不重复,检查约束则允许我们设定特定的条件,以确保插入或更新的数据满足一定的...
在Oracle数据库系统中,存储过程是一种预编译的SQL和PL/SQL代码集合,它可以用于执行复杂的数据库操作,如创建表、添加约束、插入数据等。这个“Oraclr存储过程建表建约束”示例提供了如何利用存储过程来完成这些...