外键约束哪个表是从表,哪个是主表references 字段应用。
主表的字段必须是主键
设置外键主从表中的字段必须是相同的字段类型的。
在向设置了外键约束的表输入值的时候,该内容主表必须是存在的,或者是null
I.在创建表时设置外键约束
主表
create table typeinfo
(typeid varchar2(10) primary key,
typename varchar2(20));
从表
create table userinfo_f
(id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(typeid));
insert into typeinfo values(1,1);
insert into userinfo_f(id,typeid_new) values(1,2);---2插入不了
insert into userinfo_f(id,typeid_new) values(1,null);
null 是可以插入的;
II.在修改表时添加外键约束
III.删除外键约束
外键约束
一、创建表时设置外键约束
实例:
创建主,从表
二、修改表时添加外键约束
三、删除外键约束
REFERENCES
关于约束
modify 非空约束
add constraint pk_name primary key(column_name)增加约束
remove constraint pk_name to new_pk_name 更换约束名称
drop constraint pk_name
drop primary key (column_name)
--在创建表时设置外键约束
-- CREATE TABLE table1 (column_name datatype REFERENCES table2(column_name),...) 语法
--table1 是从表
--REFERENCES 在要设置外键的字段,后面加上 REFERENCES
--table2 表是主表,要引用的那个表的字段,设置外键约束时,主表的字段必须是主键
-- 主从表中相应的字段必须是同一个数据类型,从表中的外键字段的值必须来自主表中的相应字段的值,或者为null值
CREATE TABLE typeinnfo
(typeid varchar2(10) primary key,
typename varchar2(20));
CREATE TABLE typeinnfo_f
(id varchar2(10) primary key,
usernmae varchar2(20),
typeid_new varchar2(10) references typeinnfo(typeid)
);
INSERT INTO typeinnfo values(1,1);
INSERT INTO typeinnfo_f (id,typeid_new) values(1,1);
INSERT INTO typeinnfo_f (id,typeid_new) values(2,null);
外键约束: (表示主从表之间的关系)
1、在创建表时设置外键约束(列级):
语法:CREATE TABLE table1(column_name datatype REFERENCES table2(column_name),...); --其中table2为主表,table1为从表
注:(1)设置外键约束时,主表字段必须为该表的主键字段
(2)主从表中相应的字段必须是同一个数据类型
(3)从表中外键字段的值必须来自主表中相应字段的值,或者为null值
eg:
主表: create table typeinfo (typeid varchar2(10) primary key,typename varchar2(20));
从表: create table userinfo_f (id varchar2(10) primary key,username varchar2(20),typeid_new varchar(10) references typeinfo(typeid));
外键约束
1、在创建表时设置外键约束
Create Table table1(column_name datatype References table2(column_name),...);
外键约束
1)在创建表时设置外键约束
列级创建
CREATE TABLE table1(cloumn_name datatype REFERENCES table)
例:
创建主表
create table typeinfo
(
typeid varchar(10) primary key,
typename varchar2(20)
);
创建从表
create table userinfo_f
(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(typeid)
);
插入数据验证从表引用主表的字段值是不是源值或null
主表插入数据:insert into typeinfo(typeid,typename) values(1,1);
表级创建
2)在修改表时添加外键约束
3)删除外键约束
外键约束字段插入null也行
往从表中插入值时,外键字段的值必须来自于主表相应字段的值或者null值
创建从表userinfo_f时先创建主表及其主键,再创建外键约束
外键约束
在创建表时设置外键约束
CREATE TABLE table1[从表](column_name datatype REFERENCES table2[主表](column_name),...);
*设置外键约束时,主表的字段必须是主键
*主从表中相应的字段必须是同一个数据类型
*从表中外键字段的值必须来自主表中的相应字段的值,或者为null值create table typeinfo(
typeid varchar2(10) primary key ,
typename varchar2(20));
-------------------------------------------
举例:用户表中有一个用户类型字段,设置它为外键字段,引用用户类型表中的编号字段。
create table userinfo_f(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(typeid));
-------------------------------------------------------------
insert into typeinfo values(1,1);
insert into userinfo_f(id,typeid_new)values(1,1);
insert into userinfo_f(id,typeid_new)values(2,null);
外键可以为空值(或者主表的同值)这是一种怎么样的表示呢
Oracle在创建表时添加外键约束
1、创建表时设置外键约束。
列级别设置外键约束语法:如图。
注意:设置外键约束时,主表的字段必须是主键,并且主从表中的字段数据类型必须一致,从表中外键字段的值必须是主表中主键字段的值,或者为null值。
举例:用户表中有一个用户类型字段,设置它为外键字段,引用用户类型表中的编号字段。
Oracle在创建表时添加外键约束
1、创建表时设置外键约束。
列级别设置外键约束语法:如图。
注意:设置外键约束时,主表的字段必须是主键,并且主从表中的字段数据类型必须一致,从表中外键字段的值必须是主表中主键字段的值,或者为null值。
举例:用户表中有一个用户类型字段,设置它为外键字段,引用用户类型表中的编号字段。
create table typeinfo_f (id varchar2(10) primary key, username varchar2(20),typeid_new varchar2(10) references typeinfo(typeid));创建表时设置主键约束
insert into typeinfo values(1,1);添加主表约束
insert into typeinfo_f (id, typeid_new)values(1,1);添加从表约束
唯一一个涉及两个表中字段关系的约定——外键约束
创建表是设置
CREATE TABLE table1
(column_name datatype【当前表(从表)字段】 REFERENCES
table2(column_name)【引用表(即主表)字段】,...);
设置外键约束时,主表的字段必须是主键
主从表相应字段必须是相同数据类型
从表中外键字段的值必须来自主表中相应字段的值,或者为null值
修改表时设置
删除
设置外键约束:
例:
从表里面的值要么是主表里面的值,要么是空值。
insert into userinfo_f(id,typeid_new)values(1,1);
上面是主表 ,下面是从表
外键约束主从表
外键的值必须是主表的primary key或者唯一性约束或者是null值。
在创建表时设置外键约束:
CREATE TABLE table_name ( column_name datatype REFERENCES table1(column_name), ... )
CREATE TABLE table_name ( column_name datatype, ..., CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table1(column_name) [ON DELETE CASCADE]; )