sql中外键怎么写?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中外键怎么写?相关的知识,希望对你有一定的参考价值。
sql中外键怎么写?
sql中外键写法格式为 foreign key(列名)。如:create table temp(id int,name char(20),foreign key(id))。
将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。建立外键的前提是目标关系的主键和参照关系的外键必须定义在一个或同一组的域上。
扩展资料:
外键能够保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。在实际应用中为了便于识别,当主键与相应的外键属于不同关系时,往往取相同的名字。
有很多时候,程序员会发现字段缺少、多余问题或者是创建外键以后就不能添加没有受约束的行(特殊情况下是有必要的),这个时候不想对表结构进行操作,就可以使用约束失效。
参考技术A1、创建测试表;
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;
参考技术Bsql中外键怎么写的方法。
如下参考:
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);
提交;
参考技术C what do you mean ? 一楼的把我搞糊涂了。是添加约束吗?
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 是只的是那个表的外键,以及在那个表中是主键的名字本回答被提问者采纳 参考技术D create table 表名(
a ...,
b...,
...
constraint 约束名 primary key(a,b)
);
如果是已建完表则 去添加 alter table table_name add constraint 约束名 primary key(a,b);
sql 设置外键问题
create database guestroom
on
(name = guestroom_dat,
filename= 'd:\data\guestroom_dat.mdf',
size = 10,
maxsize=50,
filegrowth=5)
log on
(name='guestroom_log',
filename='d:\data\guestroom_log.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb)
我在设置外键的时候总是出现
表‘Guestinfo’ 中的列与现存的主键或UNIQUE约束不匹配
我弄了一个下午 依然没有解决这个问题
希望高手看下
建表
建立guest表
USE GUESTROOM
GO
create table guestinfo(
Cid int primary key ,
Cname char(8) not null,
Csex char (2) not null,
Cage tinyint not null ,
Cpnum char (18) not null,
Cadd varchar (50) ,
Cintime smalldatetime not null,
Cday tinyint ,
Rnum char (5) not null,
Couttime smalldatetime ,
Cdeposit int not null,
Ccost int ,
Aid int not null)
建立adminifo表
USE GUESTROOM
GO
create table Adminifo (
Aid int primary key,
Aname varchar (16) not null ,
Anima varchar (16) not null ,
Alimit char (1) not null )
建立room表
USE GUESTROOM
GO
create table Roominfo (
Rnum varchar primary key,
Rtype char (4) ,
Rprice smalldatetime ,
Rstates char (2),
Cid int not null )
还有你用哪个字段关联student(sno)没有写
给你改了一下
create
table
sc
(
sno
char(8)
not
null,
cno
char(8)
not
null,
score
int,
constraint
pk_snocno
primary
key
(sno,cno),
constraint
pk_sno_key
foreign
key
(sno)
references
student(sno),
constraint
chk_score
check(score>0
and
score<=100)
); 参考技术B 你建立关系的两个列中可能有一个有重复的值,或是索引不对吧,可能有一个是唯一无重复的索引,一个却是有重复的.本回答被提问者采纳 参考技术C 这是圣诞及还是愚人节呢。这是个创建数据库的语句,咋标题问创建外键呢。平安果吃太多了吧
你创建外键的语句呢 拿来看看啊 参考技术D 创建时name后面应该打单引号,路径上应该是单引号,后面的size里的mb应该大写,小写应该会报错的
以上是关于sql中外键怎么写?的主要内容,如果未能解决你的问题,请参考以下文章