A. sql中创建组合主键和组合外键
联合主键:primary
key(id,name)
外键:FOREIGN
KEY
(id,name)
REFERENCES
user(id,name)
注:联合主键的外键必须同时引用两个主键无法单个引用
B. 怎么在SQL中设置外键
sql ce表中建立外键约束的语法:CREATE TABLE DetectTable(UserID integer,StartTime datetime not null,EndTime datetime not null,MassName nvarchar(10), foreign key (UserID) references UserTable(UserID)),其中,UserID为UserTable表中的主键。
也可以在创建数据库关系图直接拖
在数据库关系图上右键-->新建关系图-->添加表
然后直接用鼠标拖字段连接就可以建立外键约束了
C. 求助,sql外键的创建问题
-- 创建外键(默认选项)
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
-- 删除 外键约束
ALTER TABLE test_sub DROP CONSTRAINT main_id_cons;
不知道楼主明白了么?
那个constraint id_fk 中的 id_fk
是为了 方便你 删除外键
当然了。某些数据库, 是 允许 暂时禁用外键约束.
禁用的时候, 也是要给一个名字的。
下面是一段 Oracle 的例子
SQL>--创建外键(默认选项)
SQL>ALTERTABLEtest_subADDCONSTRAINTmain_id_consFOREIGNKEY(main_id)REFERENCEStest_main;
表已更改。
SQL>--测试插入子表数据.将出错ORA-02291:违反完整约束条件
SQL>INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE');
INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE')
*
ERROR位于第1行:
ORA-02291:违反完整约束条件(TEST.MAIN_ID_CONS)-未找到父项关键字
--尝试禁用外键约束.
SQL>ALTERTABLEtest_subMODIFYCONSTRAINTmain_id_consDISABLE;
表已更改。
SQL>INSERTINTOtest_sub(ID,MAIN_ID,VALUE)VALUES(3,3,'THREETHREE');
已创建1行。
SQL>INSERTINTOtest_main(id,value)VALUES(3,'THREE');
已创建1行。
SQL>commit;
提交完成。
--恢复启用外键约束.
SQL>ALTERTABLEtest_subMODIFYCONSTRAINTmain_id_consENABLE;
表已更改。
SQL>DELETEtest_mainWHEREID=1;
DELETEtest_mainWHEREID=1
*
ERROR位于第1行:
ORA-02292:违反完整约束条件(TEST.MAIN_ID_CONS)-已找到子记录
D. sql中外键怎么写
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));
E. sql怎么设置外键
创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。
建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:
第一步、打开要建外键表的设计器,右击选择“关系”。
第二步、然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。
第三步、弹出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。
第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”、“级联”、“设置为NULL”、“设置默认值”。
默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。
“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。
“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。
“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。
当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign
key
(studentNo)
references
T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“
add
constraint
CMPKey(外键名)
foreign
key(studentNo)
references
T_Student(studentNo)”。
F. sql用命令创建主键与外键。
创建SQL的主键和外键约束的方法:
--在创建表时就可以对字段加上约束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)
StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)
StudentAge int DEFAULT ((0)), --加默认值约束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式)
)
--如果在表创建好了以后再加约束,则格式分别为:
-- 主键:
alter table 表名
add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名
primary key (字段名) --字段名同上
--唯一约束:
alter table 表名
add constraint UQ_字段名
unique (字段名)
--外键约束:
alter table 表名
add constraint FK_字段名--"FK"为外键的缩写
foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成绩表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
级联更新,级联删除,这样在删除主表Student时,成绩表中该学生的所有成绩都会删除。
--检查约束:
alter table 表名
add constraint CK_字段名
check (条件表达式) --条件表达式中的条件用关系运算符连接
--默认值约束:
alter table 表名
add constraint DF_字段名
default '默认值' for 字段名--其中的'默认值'为你想要默认的值,注意'for'
--删除创建的约束:
alter table 表名
drop constraint 约束名--约束名为你前面创建的如:PK_字段这样的约束名
--注意:如果约束是在创建表的时候创建的,则不能用命令删除
--只能在'企业管理器'里面删除
参考资料 : http://www.studyofnet.com/news/92.html
希望以上的回答能够帮到你
G. sql 添加外键语句
为数据库表添加外键方法(以SqlSever2005数据库为例):
1、新建两张表,一张为主表,一张为副表。主表里的外键就是连接到副表的主键。
H. sql中怎样创建外键约束
添加外键 ,alter table B
语法:alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名)
如:
altertableStu_PkFk_Sc
addconstraintFk_s
foreignkey(sno)
referencesStu_PkFk_S(sno)
--cc是外键约束名,不能重复,也不能是int类型(如1,2,3)
add constraint cc
--B表里的需要约束的字段(id)
foreign key (id)
--A表后的(id)可省略
references A (id)
(8)sql中建立外键时候出来一个key扩展阅读:
数据查询语言,其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
参考资料:结构化查询语言_网络
I. SQL建立外键
-- 创建测试主表. ID 是主键.
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 创建测试子表.
CREATE TABLE test_sub (
id INT,
main_id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
默认外键约束方式
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
DELETE CASCADE 方式
-- 创建外键(使用 ON DELETE CASCADE 选项,删除主表的时候,同时删除子表)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON DELETE CASCADE;
UPDATE CASCADE方式
-- 创建外键(使用 ON UPDATE CASCADE 选项,更新主表的主键时候,同时更新子表外键)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON UPDATE CASCADE;
SET NULL方式
-- 创建外键(使用 ON DELETE SET NULL 选项,删除主表的时候,同时将子表的 main_id 设置为 NULL)
ALTER TABLE test_sub
ADD CONSTRAINT main_id_cons
FOREIGN KEY (main_id) REFERENCES test_main ON DELETE SET NULL;
是否可以解决您的问题?