• 首页>范文 > 范文
  • 外键约束怎么写

    1.SQL 外键约束怎么用语句写出来 谢谢 最好详细点

    create table student

    (

    ID int identity(1,1) primary key,

    Name varchar(20) null default('')

    )

    go

    create table score

    (

    studentId int foreign key references student(id) not null, -- 这行即 外间约束

    score int

    )

    foreign key references userinfo(id)

    外键是 student 表的 id 字段

    2.什么是外键约束

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

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

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

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

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

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

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

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

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

    扩展资料

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

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

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

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

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

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

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

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

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

    参考资料来源:搜狗百科--外键

    参考资料来源:搜狗百科--约束

    3.查看一个外键约束用sql怎么写

    举个例子,比如在创建表时可以设置外键约束:

    Create Table student

    (xuehao int not null primary key,

    name varchar(20) not null,

    courseid int not null Foreign Key(courseid) references Course(courseid))//在student表的courseid 列上创建外键约束,引用主键表Course的courseid 列

    4.SQL的约束,比如唯一性约束、外键约束、规则的语句怎么写

    我只是给你建了两个非常简单的表,前面的建数据库什么的都省掉了

    希望能对你有点帮助

    create table stuInfo

    (

    stuID int not null ,--学生编号,非空

    stuName varchar(10) unique not null --学生姓名,唯一,非空

    )

    go

    create table markInfo

    (

    stuID int not null references stuInfo(stuID), --学号,外键,与上面的stuInfo相关联

    Score int not null -- 成绩,非空

    )

    5.外键约束

    StuID当然得是主键!!! 而且每一个表都应该有一个主键! Stuinfo的主键是StuID Scoreinfo的主键是ID 创建表的时候在这两个字段后加primarykey****************我的意思是每个表都应该有且只有一个主键你写的那两个创建表的语句都没有主键应该这样写:表1……StuID SMALLINT IDENTITY(1,1) primary key, ……表2……ID INT primary key,…… 我想,你问的问题在随便一本SQL教程里都可以找到详细的解释你找来书好好看看吧,读书要注意其中一些关键词语哦,呵呵!~希望你早日学成。

    6.sql暂时解除外键约束的代码怎么写

    --启用/禁用指定表所有外键约束 alter table tbname NOCHECK constraint all alter table tbname CHECK constraint all--禁用/恢复某个表的某个触发器ALTER TABLE tbname DISABLE TRIGGER trignameALTER TABLE tbname ENABLE TRIGGER trigname--禁用恢复某个表上的所有触发器ALTER TABLE tbname DISABLE TRIGGER allALTER TABLE tbname ENABLE TRIGGER all。

    7.SQL的一些问题,主键约束,索引约束,外键约束用SQL语句怎么写

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblCommDevice]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[tblCommDevice]

    GO

    CREATE TABLE [dbo].[tblCommDevice]

    (

    CommDevID int identity(1,1) not null,

    PersonID int not null,

    CommType varchar(20) null,

    CommValue varchar(60) not null,

    ConSTRAINT pk_tblCommDevice PRIMARY KEY CLUSTERED (PetitionID) WITH FILLFACTOR = 90 ON [PRIMARY]

    ) ON [PRIMARY]

    GO

    CREATE INDEX [ix_tblCommDevice] ON [dbo].[tblCommDevice]([CommType]) WITH FILLFACTOR = 60 ON [PRIMARY]

    GO

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tblPerson]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

    drop table [dbo].[tblPerson]

    GO

    CREATE TABLE [dbo].[tblPerson]

    (

    PersonID int identity(1,1) not null,

    LastName varchar(20) not null,

    FirstName varchar(20) not null,

    MailingAddr varchar(40) null,

    City varchar(20) null,

    State varchar(2) null,

    Zip varchar(10) null,

    PersonType varchar(1) null,

    ConSTRAINT pk_tblPerson PRIMARY KEY CLUSTERED (PersonID) WITH FILLFACTOR = 90 ON [PRIMARY]

    ) ON [PRIMARY]

    GO

    CREATE INDEX [ix_tblPerson] ON [dbo].[tblPerson]([FirstName]) WITH FILLFACTOR = 60 ON [PRIMARY]

    GO

    CREATE INDEX [ix_tblPerson_1] ON [dbo].[tblPerson]([LastName], [FirstName]) WITH FILLFACTOR = 60 ON [PRIMARY]

    GO

    发表评论

    登录后才能评论