这篇文章主要为大家展示了“sql中参照完整性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“sql中参照完整性的示例分析”这篇文章吧。
<强>一、参照完整性强>
参照完整性指的就是多表之间的设计,主要使用外键约束。
多表设计:一对多、多对多,一对一设计
<强> 1。一对多强>
关联主要语句:
约束cus_ord_fk外键(customer_id)引用客户(id)
创建客户表——订单表
一个客户可以订多份订单,每份订单只能有一个客户。
,,关联(1对N) create table 客户( id int  PRIMARY KEY  auto_increment, name varchar (20), not 空, adress varchar (20), not null ); create table 订单( order_num varchar (20), PRIMARY 键, price FLOAT  not 空, customer_id int,,,,进行和customer 关联的字段,外键 constraint cus_ord_fk  foreign key (customer_id), REFERENCES 客户(id) ); insert into 客户(名称、地址),值(“zs",“北京“); insert into 客户(名称、地址),值(“ls",“上海“); SELECT *,得到客户; INSERT INTO  orders 值(“010“,30.5,1); INSERT INTO  orders 值(“011“,60.5,2); INSERT INTO  orders 值(“012“,120.5,1); SELECT *,得到命令;
注意:约束:约束的意思.foreign关键:外键.references:参照
创建一个名叫customer_id_fk的外键约束,其中外键指的是customer_id,并且参照的是客户表中列的id
扩展:
字表的删除更新策略:
- <李>
1)级联级联策略。使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表
李> <李>2)任何行动无动作策略。使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值。
李> <李>3) RSTRICT主表约束策略。此种策略对主表的约束跟任何行动一样
李> <李> 4)设置没有置空策略。使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为零。需要注意的是,如果子表的外键是主键或者是设置为非空的,则主表的删除和主键的更改跟任何行动一样。
<强> 2。多对多强>
创建学生,老师关系表格
其中一个学生可以有多个老师,一位老师也可以有多个学生
,,多对多关系 ——,创建老师表格 CREATE TABLE  teacher ( id INT, NAME VARCHAR (20), NOT 空, gender CHAR (2), NOT 空, PRIMARY KEY (id) ); ——,创建学生表格 CREATE TABLE  student ( id INT, NAME VARCHAR (20), NOT 空, age INT  NOT NULL ); ALTER TABLE  student ADD PRIMARY  KEY (id); ——,第三张关系表 CREATE TABLE  tch_std ( teacher_id INT, student_id INT, CONSTRAINT fk_teacher  FOREIGN KEY (teacher_id), REFERENCES teacher (id), CONSTRAINT fk_student  FOREIGN KEY (student_id), REFERENCES teacher (id) ); 删除 从 老师 在哪里 时间=id 3; 选择 * 从 老师; SELECT 不同的 * 从 tch_std;
,
注意:多对多是三张表,第三张表创建外键约束对应前两张表中的id
<强> 3。一对一强>
两种形式:
1)按照外键关联
在经办人身份证表中的外键添加唯一约束
2)按照主键关联
对主键添加外键约束
——,一对一 ——,创建用户表格 CREATE TABLE  users ( id INT, NAME VARCHAR (20), NOT 空, gender CHAR (2), NOT 空, PRIMARY KEY (id) ); ——,创建card 表格 CREATE TABLE  card ( id INT, adress VARCHAR (100), NOT 空, user_id INT 独一无二的, constraint users_id_fk  foreign 键(user_id), references 用户(id) ); ALTER TABLE card  ADD PRIMARY  KEY (id);sql中参照完整性的示例分析