本文主要介绍sql中的参照完整性,通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
一、参照完整性
参照完整性是指多个表之间的设计,主要使用外键约束。
多表设计:一对多、多对多、一对一设计
1.一对多
主要相关声明:
约束cus_ord_fk外键(customer_id)引用了客户(id)
创建客户表——订单表
一个客户可以下多个订单,每个订单只能有一个客户。
-关联(1对n)
创建表客户(
id int主键auto_increment
name varchar (20)不为空,
address varchar(20)不为空
);
创建表订单(
order_num varchar(20)主键,
价格浮动不为空,
Customer_id int,-与客户关联的字段的外键
约束cus_ord_fk外键(customer_id)引用了客户(id)
);
转换成客户(姓名、地址)值(' zs ','北京');
插入客户(姓名,地址)值(' ls ','上海');
SELECT * from customer
插入订单值(' 010 ',30.5,1);
插入订单值(' 011 ',60.5,2);
插入订单值(' 012 ',120.5,1);
SELECT * from orders
注意:约束:约束的含义。外键:外键。参考:参考
创建一个名为customer_id_fk的外键约束,其中外键引用customer_id,并引用customers表中的id列。
扩展:
删除和更新单词的策略:
1)级联级联策略。使用该策略时,主表的记录被删除或主键字段被修改,子表也会被同步删除或修改。
2)无行动无行动策略。使用该策略时,要删除主表,必须先删除子表,要删除主表的记录,必须先删除与子表关联的记录,并且不能更新主表主键字段的值。
3) RSTRICT主表约束策略。该策略对主表的约束与无操作相同。
4)设定无空策略。使用这种策略,如果主表被删除或主键被更改,子表中的外键将被设置为NULL。注意,如果子表的外键是主键或者设置为NOT NULL,则主表的删除和主键的更改与无操作相同。
2. 多对多
创建学生——教师关系表单
一个学生可以有多个老师,一个老师可以有多个学生。
-多对多关系
-创建教师表单。
创建表教师(
id INT,
NAME VARCHAR (20)不为空,
性别字符(2)不为空,
主键(id)
);
-创建学生表单。
创建表学生(
id INT,
NAME VARCHAR (20)不为空,
年龄整数不为空
);
ALTER TABLE student添加主键(id);
-第三个关系表
创建表tch_std(
teacher_id INT
student_id INT
约束fk_teacher外键(teacher_id)引用教师(id),
约束fk_student外键(student_id)引用教师(id)
);
删除
从
教师
在哪里
id=3;
挑选
*
从
老师;
选择不同
*
从
tch _ std
注意:多对多是三个表,第三个表创建一个外键约束,对应于前两个表中的id。
3. 一对一
两种形式:
1)根据外键关联
向IdCard表中的外键添加唯一约束。
2)通过主键关联
向主键添加外键约束。
一对一。
-创建用户表
创建表用户(
id INT,
NAME VARCHAR (20)不为空,
性别字符(2)不为空,
主键(id)
);
-创建卡片表单
创建表卡(
id INT,
address VARCHAR(100)不为空,
user_id INT UNIQUE,
约束用户标识外键(用户标识)引用用户(标识)
);
更改表卡添加主键(id);
这个方法是方法1,它为外键添加了唯一约束。
以上是边肖介绍的sql中引用完整性的集成。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。