sql中外键写法格式为 foreign key(列名)。如:create table temp(id int,name char(20),foreign key(id))。
将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。建立外键的前提是目标关系的主键和参照关系的外键必须定义在一个或同一组的域上。
扩展资料:
外键能够保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。在实际应用中为了便于识别,当主键与相应的外键属于不同关系时,往往取相同的名字。
有很多时候,程序员会发现字段缺少、多余问题或者是创建外键以后就不能添加没有受约束的行(特殊情况下是有必要的),这个时候不想对表结构进行操作,就可以使用约束失效。
1、创建测试表;
create table test_class(class_id varchar2(10), class_name varchar2(30));
create table test_student(student_id varchar2(10), student_name varchar2(30), class_id varchar2(10));
2、表test_class创建主键,test_student添加外键;
-- Create/Recreate primary, unique and foreign key constraints
alter table TEST_CLASS
add constraint p_class_id primary key (CLASS_ID);
-- Create/Recreate primary, unique and foreign key constraints
alter table TEST_STUDENT
add constraint f_class_id foreign key (CLASS_ID)
references test_class (CLASS_ID) on delete cascade;
3、主键表中,插入数据;
insert into test_class values (1001,'高一(1)班');
insert into test_class values (1002,'高一(2)班');
insert into test_class values (1003,'高一(3)班');
commit;
4、在外键表中,插入数据,但是class_id在主键表中未定义,则可以发现报错信息;
insert into TEST_STUDENT values (100001,'王二',1004);
5、如果外键表中,插入数据,class_id在主键表中已定义,则可以正常插入;
insert into TEST_STUDENT values (100001,'王二',1001);
insert into TEST_STUDENT values (100002,'王二',1002);
insert into TEST_STUDENT values (100003,'王二',1003);
commit;
sql中外键怎么写的方法。
如下参考:
1.创建测试表;创建表test_class(class_idvarchar2(10),class_namevarchar2(30));创建表test_student(student_idvarchar2(10),student_namevarchar2(30),class_idvarchar2(10));
2.表test_class创建主键,test_student添加外键;
创建/重新创建eprimaryuniqueandforeignkeyconstraints
altertableTEST_CLASS
Addconstraintp_class_idprimarykey(CLASS_ID);
创建/重新创建eprimaryuniqueandforeignkeyconstraints
altertableTEST_STUDENT
Addconstraintf_class_idforeignkey(CLASS_ID)
Referencestest_class(CLASS_ID)ondeletecascade;
3.主键在表7a686964616fe58685e5aeb931333433623133中,插入数据;
Insertintotest_classvalues(1001,'class1');
Insertintotest_classvalues(1002,'class2');
Insertintotest_classvalues(1003,'class3');
提交;
4.在外键表中插入数据,但class_id没有在主键表中定义,可以查找错误信息;
InsertintoTEST_STUDENTvalues(100001,'kingtwo',1004);
5.如果将数据插入外键表,并且在主键表中定义了class_id,则可以正常插入;
InsertintoTEST_STUDENTvalues(100001,'kingtwo',1001);
InsertintoTEST_STUDENTvalues(100002,'kingtwo',1002);
InsertintoTEST_STUDENTvalues(100003,'twoKings',1003);
提交;
是添加约束吗?
create table xxx(aa int primary key,
bb int ,
cc int,
dd int,
ee char(2),
foreign key(bb,cc) refrences to yyy( bb,cc),
foreign key(dd) references to zzz(kk)
);
外键一定要用()括起来,即使只有一项。
references to 是只的是那个表的外键,以及在那个表中是主键的名字
a ...,
b...,
...
constraint 约束名 primary key(a,b)
);
如果是已建完表则 去添加 alter table table_name add constraint 约束名 primary key(a,b);