当前位置:首页 » 编程语言 » sql的外键约束有什么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql的外键约束有什么

发布时间: 2023-07-20 02:53:39

sql怎么设置外键(sql怎么设置外键约束)

sqlserver中建立外键约束有3中方式:enterprisemanager中,tables,designtable,设置table的properties,可以建立constraint,referencekey;enterprisemanager中,diagrams,newdiagrams,建立两个表的关系;直接用transactsql语句。

1、三个方法都需要先建立数据表。

1)运肆孝创建表author:

createtable[dbo].[author](

[id][bigint]notnull,[authorname][char](10)null,[address][char](480)null,[introction][ntext]null

)

2)创建表mybbs:

reatetable[dbo].[mybbs](

[id][bigint]identity(1,1)notnull,[authorid][bigint]notnull,[title][char](40)null,[date_of_created][datetime]null,[abstract][char](480)null,[content][ntext]null

)

2、设置表mybbs中的authorid为外键,参照author表的id字段,直接使用transactsql语句,过程如下:

1)增加表mybbs(authorid)的外键约束fk_mybbs_author,表mybbs中的authorid受表author中的主键id约束:

begintransaction

altertabledbo.mybbsaddconstraintfk_mybbs_author

foreignkey(authorid)

referencesdbo.author([id])

2)删除旁稿外键约束fk_mybbs_author:

--altertabledbo.mybbsdropconstraintfk_mybbs_author

--rollback

committransaction

上面onupdatecascade,ondeletecascade两个选项,指明以后author表的id字段有delete,update操作时,mybbs表中的id也会被级联删除或更新。如果没有选中,是不可以对author表中已被mybbs表关联的id进行update或者delete操作的。

拓展资料:

SQL的主键和外键的作用:

1、插入非空值时,如果主键表中没有这个值,则不能插入。

2、更新时,不能改为主键表中没有的值。

3、删除主键表记录时,你可以在建外键雹春时选定外键记录一起级联删除还是拒绝删除。

4、更新主键记录时,同样有级联更新和拒绝执行的选择。

简而言之,SQL的主键和外键就是起约束作用。

❷ SQL中的外部键约束有什么用

设置数据库中的外键约束是为了保证数据库的参照完整性。sql
server
2005中的关系表之间的连接,用外键表中的外键引用主键表中的主键、一旦创建了关系并将关系成功地加入到了数据库中,就能够保证数据的参照完整性、

❸ sql server 中有哪几种约束

一共有五种约束:这里以学生表stuinfo为例1、添加主键约束alter table stuinfo add costraint pk_stuno primary key (stuno)2、唯一约束alter table stuinfo add constraint uq_stuid unique (stuid)3、添加默认约束alter table stuinfo add constraint df_address default ('地址不详') for address4、添加检查约束alter table stuinfo add constraint ck_age check (age between 15 and 40) 这是年龄在15到40之间5、添加外键约束alter table stumarks add constraint fk_stuno foreign key (stuno) references stuinfo (stuno)这是一个成绩表(stumarks)引用学生信息表中的列 学号

❹ sql server 中有哪几种约束

sql
server中主要有四种约束:
1、实体完整性约束(每一行反应不同的实体)
通过索引,唯一约束。主键约束或标识属性来体现
2、域完整性约束(指给定列的输入有效性)
通过限制数据类型,检查约束,输入格式,外键约束,默认值,非空等体现
3、引用完整性约束(表之间的联系)
通过主外建来建立完整性约束
4、自定义完整性约束(根据用户的需求)

❺ 什么是外键约束

外键约束是指用于在两个表之间建立关系,需要指定引用主表的哪一列。

外键约束对子表如此检查处理:

在子表上进行INSERT、UPDATE操作的限制是,要和主表中的主键值匹配,或为NULL,否则不允许。

外键约束对父表如此检查处理:

在父表_上进行UPDATE、DELETE操作的限制,取决于在定义子表的外键时指定的ONUPDATE、ONDELETE子句(不同的DBMS支持的情况不尽相同)。众ONDELETE子句各选项的作用:

1、NoACTION:删除主表记录,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。此为默认操作(不指定ONDELETE子句,系统自动采取的操作)。

2、CASCADE(级联):删除主表记录,也将删除子表中的匹配记录。

3、SETNULL:删除主表记录,将子表中的匹配记录的外键值改为NULL。

4、SETDEFAULT:删除主表记录,将子表中的匹配记录的外键值改为默认值。众ONUPDATE子句各选项的作用。

(5)sql的外键约束有什么扩展阅读

外键的用途是确保数据的完整性。它通常包括以下几种:

1、实体完整性,确保每个实体是唯一的(通过主键来实施)

2、域完整性,确保属性值只从一套特定可选的集合里选择

3、关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值。

约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了。

则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。

FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。

如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。

若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。

❻ SQL2005中的外键约束主要有什么作用(求详细答案)

外键是表中的一个列,其值必须在另一个表的主键中列出。外键主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联行的行。
比如,有一个客户表a,一个订单表B:客户ID为表A的主键,每个客户都有唯一的ID号,订单号为表B的主键,每个订单都有唯一的订单号。订单表中的客户ID列中的值不一定是唯一的,允许一个客户有多个订单,但客户的ID值必须在客户表A中已存在。定义外键后,要删除客户表A中的行,必须确保客户没有在订单表B中没有订单才能删除成功。

❼ SQL语句的外键约束

ALTER TABLE AA ADD CONSTRAINT FK_A FOREIGN KEY (A) REFERENCES CC (C)
把表CC的C字段 引用为表AA的A字段的外键,FK_A是外键约束名
意思就是把表AA的A字段值域限制为表CC的C字段的值域

❽ SQL数据库外键

创建外键时可以指定级联删除选项,设置后主表数据被删除,从表数据也会被删除,反之则不然。

参考:http://hi..com/zagelover/item/c0118adda8f92ef592a97475

sql外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT

NO ACTION
指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。
CASCADE、SET NULL 和 SET DEFAULT
允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。
ON DELETE CASCADE
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。
ON UPDATE CASCADE
指定如果试图更新某一行中的键值,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 (如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON UPDATE SET NULL
指定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON DELETE SET DEFAULT
指 定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。
ON UPDATE SET DEFAULT
指 定如果试图更新某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。