foreing key约束

foreing key约束是指外键约束,用于引用表或另一张表中的一列或一组列。引用列于引用列可以在同一个表中,这种情况称为“自引用”。

被引用的列或列组应该具有主键约束或唯一约束。

引用列的取值只能为被引用列的值或null。

可以为一个列或一组列定义foreing key约束。

如果引用列种存储了被引用的某个值,则不能直接删除被引用列种的这个值,否则会与第二条相矛盾。如果一定要删除,需要先删除引用列中的这个值,然后再删除引用列中的值。

添加foreing key约束

在创建表时,为列添加foreing key约束,形式如下:

column_name1 data_type [constraint constraint_name]

references table_name2(column_name2)

create table table_name(column_name data_type,[,...]

[constraint constraint_name] foreing key(column_name1)

其中,references关键字用于定义column_name1列指向其他表(或本表)中的column_name2列。

也可以为已创建表中以添加foreing key约束,如下:

alter table table_name1 add [constraint constraint_name]

foreing key(column_name1) references table_name2(column_name2)

具体的操作如下:

SQL> create table stuclass(

2  cid number(4) primary key,

3  cname varchar2(40),

4  num number(4)

5  );

表已创建。

SQL> create table stu(

2  sid number(4),

3  scode varchar2(10),

4  sname varchar2(20),

5  cid number(4) references stuclass(cid) --指向stuclass的cid属性

6  );

表已创建。

SQL> insert into stu values(1,‘s001‘,‘aaa‘,1);

insert into stu values(1,‘s001‘,‘aaa‘,1)

*

第 1 行出现错误:

ORA-02291: 违反完整约束条件 (SYSTEM.SYS_C0010094) - 未找到父项关键字

SQL> insert into stuclass values(1,‘oracle‘,35);

已创建 1 行。

SQL> insert into stu values(1,‘s001‘,‘aaa‘,1);

已创建 1 行。

SQL> select * from stu;

SID SCODE      SNAME                       CID

---------- ---------- -------------------- ----------

1 s001       aaa                           1

SQL>

时间: 2024-11-05 16:29:02

foreing key约束的相关文章

SQL FOREIGN KEY 约束

SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY. 让我们通过一个例子来解释外键.请看下面两个表: "Persons" 表: Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush George Fifth Avenue New York 3 Carter Thomas Changan Street Beijing &qu

SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主键. SQL PRIMARY KEY Constraint on CREATE TABLE 下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束: MySQL: CREATE TABLE Persons ( Id_P i

[MySQL Tips]:如何删除unique key约束

[场景]: 假设最初创建了一个表bank,在street属性上添加了unique约束. create table branch( branch_name char(30) not null primary key, city varchar(20), street varchar(20) unique ); 表结构如下: [问题] 后来发现在同一个street上可以出现多个支行,也就是说street不应该是unique的.此时怎样删除unique约束呢? [方法] alter table bra

sql数据库删除表的外键约束(INSERT 语句与 FOREIGN KEY 约束"XXX"冲突。该冲突发生于数据库"XXX",表"XXX", column 'XXX)

使用如下SQL语句查询出表中外键约束名称: 1 select name 2 from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id 3 where f.parent_object_id=object_id('表名') 执行如下SQL语句删除即可. 1 alter table 表名 drop constraint 外键约束名 sql数据库删除表的外键约束(INSERT 语句与 F

删除提示 FOREIGN KEY 约束引用”

有时想删除某个表时,提示“无法删除对象 'Orders',因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引用了该表的字段.通过系统函数就能解决(SQL Server系统函数提供了非常完善的功能,能代替我们查找和解决许多问题). select    fk.name,fk.object_id,OBJECT_NAME(fk.parent_object_id) as referenceTableNamefrom

SQLServer之PRIMARY KEY约束

原文:SQLServer之PRIMARY KEY约束 PRIMARY KEY约束添加规则 1.在表中常有一列或多列的组合,其值能唯一标识表中的每一行,这样的一列或多列成为表的主键(PrimaryKey). 2.一个表只能有一个主键,而且主键约束中的列不能为空值. 3.只有主键列才能被作为其他表的外键所创建. 4.一般情况下一个表中只能有一个主键. 使用SSMS数据库管理工具添加主键约束 使用SSMS数据库管理工具添加一列作为一个主键约束 1.连接数据库,选择数据表->右键点击,选择设计. 2.在

SQL PRIMARY KEY 约束

SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主键. 1.ALTER TABLE Persons ADD PRIMARY KEY (P_Id) 2.ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) 3.ALTER TABLE Persons DRO

更改具有Foreign key约束的表

1.Foreign key 说明: foreign key(外键) 建立起了表与表之间的约束关系,让表与表之间的数据更具有完整性和关联性.设想,有两张表A.B,A表中保存了许多电脑制造商的信息,比如联想.戴尔.惠普和华硕,B表中保存了许多多型号的电脑,比如lenovo1,lenovo2,hp1,hp2,hp3,dell1,dell2,asus1,现在如何将两张具有从属关系(每个电脑品牌下都有很多型号的电脑)的表关联起来呢? 我们可以在B表中设置外键.首先我们给这个外键关联关系起个名字xx,外键作

(转)sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键

说明你的数据里面有重复记录 两种情况 1.已存在的表中和要导入数据之间的重复 这个时候可以通过在两个表之间建立关联,将主键级联找出重复记录 2.要导入的表中存在重复记录 可通过类似如下的语句将表中的重复记录找出来 select StudentCode from StudentScore group by StudentCode[此处为 PRIMARY KEY 字段] having count(*)>1 然后通过整理删除重复的记录就可以了