精华内容
下载资源
问答
  • SQL server添加外键约束 sql语句

    千次阅读 2014-11-02 19:43:08
    ---添加主键约束 alter table 表名 add constraint 约束名 primary key (主键) - --添加唯一约束 alter table 表名 add constraint 约束名 unique

    ---添加主键约束 <br>             

    alter table 表名 <br>        

    add constraint 约束名 primary key (主键) <br>             -

    --添加唯一约束 <br>            

    alter table 表名 <br>             

    add constraint 约束名 unique (字段) <br>        

    ---添加默认约束 <br>             

    alter table 表名 <br>             

    add constraint 约束名 default ('默认内容') for 字段 <br>             

    --添加检查check约束,要求字段只能在1到100之间 <br>             

    alter table 表名 <br>            

    add constraint 约束名 check (字段 between 1 and 100 ) <br>             

    ---添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo) <br>             

    alter table 从表 <br>             

    add constraint 约束名 <br>   foreign key(关联字段) references 主表(关联字段) <br>             GO <br>            

    sql server中删除约束的语句是: <br>             

    alter table 表名 drop constraint 约束名 <br>             

    sp_helpconstraint 表名 找到数据表中的所有列的约束<br>             <br>             

    -----------在创建表时创建约束------------<br>






    sql server中建立外键约束有3中方式:
    1.Enterprise Manager中,Tables,Design Table,设置Table的properties,
       可以建立constraint, reference key;
    2.Enterprise Manager中,Diagrams, new Diagrams,建立两个表的关系。
    3.直接用transact sql语句。

    三个方法都需要先建立数据表。
    -- 创建表author :
    CREATE TABLE [dbo].[author] (
     [ID] [bigint] NOT NULL ,
     [AuthorName] [char] (10) NULL ,
     [address] [char] (480)  NULL ,
     [introduction] [ntext]  NULL 
    )

    -- 创建表myBBS:
    REATE TABLE [dbo].[myBBS] (
     [ID] [bigint] IDENTITY (1, 1) NOT NULL ,
     [authorId] [bigint] NOT NULL ,
     [Title] [char] (40)  NULL ,
     [Date_of_Created] [datetime] NULL ,
     [Abstract] [char] (480)  NULL ,
     [Content] [ntext]  NULL 


                                       author-myBBS关系图

    设置表myBBS中的authorId为外键,参照author表的主键Id字段,直接使用transact sql语句,过程如下:
    --增加表mybbs(authorId)的外键约束FK_mybbs_author,表myBBS中的authorId受表author中的主键ID约束:
    BEGIN TRANSACTION
    alter table dbo.mybbs add constraint FK_mybbs_author
      foreign key (authorId)
      references  dbo.author([id]) ON UPDATE CASCADE ON DELETE CASCADE

    --删除外键约束FK_mybbs_author:
    --alter table dbo.mybbs drop constraint FK_mybbs_author
    --rollback 
    commit transaction

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


    扫描关注作者:



    展开全文
  • 对于已经存在的字段添加外键约束3. 在创建数据表时设置外键约束4. 删除外键约束5. 小结 外键SQL语句的编写 学习目标 能够写出删除外键约束的SQL语句 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会...

    外键SQL语句的编写

    学习目标

    • 能够写出删除外键约束的SQL语句

    1. 外键约束作用

    外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性

    2. 对于已经存在的字段添加外键约束

    -- 为cls_id字段添加外键约束
    alter table students add foreign key(cls_id) references classes(id);
    

    3. 在创建数据表时设置外键约束

    -- 创建学校表
    create table school(
        id int not null primary key auto_increment, 
        name varchar(10)
    );
    
    -- 创建老师表
    create table teacher(
        id int not null primary key auto_increment, 
        name varchar(10), 
        s_id int not null, 
        foreign key(s_id) references school(id)
    );
    

    4. 删除外键约束

    -- 需要先获取外键约束名称,该名称系统会自动生成,可以通过查看表创建语句来获取名称
    show create table teacher;
    
    -- 获取名称之后就可以根据名称来删除外键约束
    alter table teacher drop foreign key 外键名;
    

    5. 小结

    • 添加外键约束: alter table 从表 add foreign key(外键字段) references 主表(主键字段);
    • 删除外键约束: alter table 表名 drop foreign key 外键名;
    展开全文
  • sql语句创建表的同时添加外键约束

    千次阅读 2020-11-22 21:13:00
    sql语句创建表的同时添加外键约束 建立一个商店的数据库store,记录顾客及其购物情况,由下面三个表组成: 商品(商品号,商品名,单价,商品类别,供应商); 顾客(顾客号,姓名,住址); 订单(顾客号,商品...

    sql语句创建表的同时添加外键约束

    题目

    建立一个商店的数据库store,记录顾客及其购物情况,由下面三个表组成:
    商品(
    商品号,商品名,单价,商品类别,供应商);
    顾客(
    顾客号,姓名,住址);
    订单(顾客号,商品号,购买数量);

    设置商品表的商品号,顾客表的顾客号为主键,

    订单表的顾客号设置外键外联于顾客表的顾客号

    订单表的商品号设置外键外联于商品表的商品号

    为了方便阅读学习,用中文当作字段名,实际开发不建议

     

    代码

    CREATE TABLE 商品表(
    商品号 varchar not null primary key,
    商品名  varchar not null,
    单价   int not null,
    商品类别 varchar not null,
    供应商 varchar not null
    )
    CREATE TABLE 顾客表(
    顾客号 varchar not null primary key,
    姓名 varchar not null,
    住址 varchar not null,
    )
    CREATE TABLE 订单表(
    顾客号 varchar not null ,
    商品号 varchar not null,
    购买数量 int not null,
    foreign key(顾客号) references 顾客表(顾客号),
    foreign key(商品号) references 商品表(商品号)
    )
    
    

     

     

    展开全文
  • SQL添加外键约束

    万次阅读 多人点赞 2019-03-14 11:05:42
    --1,sql语句创建表的同时添加外键约束 CREATE TABLE tb_UserAndRole --用户角色表 ( ID INT PRIMARY KEY IDENTITY(1,1), UserID INT NOT NULL,--用户ID RoleID INT NOT NULL,--角色ID foreign key(UserID) ...
    --1,sql语句创建表的同时添加外键约束
    CREATE TABLE tb_UserAndRole  --用户角色表
    (
      ID INT PRIMARY KEY IDENTITY(1,1),
      UserID INT NOT NULL,--用户ID
      RoleID INT NOT NULL,--角色ID
      foreign key(UserID) references tb_Users(ID)--tb_Users表的ID作为tb_UserAndRole表的外键
    )
    
    
       --2、添加外键约束(关联字段要用括号括起来)
       -- ALTER TABLE 从表
       -- ADD CONSTRAINT 约束名 FOREIGN KEY (关联字段) references 主表(关联字段);
       --例如:
      ALTER TABLE tb_UserAndRole
       ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID);
    
    ALTER TABLE table1  ADD CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
    REFERENCES table2(department_id);

    table1是子表,table2是父表。 没错。

    table2的department_id 应该是 主键, 或者 有唯一约束的列。

    外键是table1子表上的。
    也就是 子表 table1.department_id 中的数据, 必须在 table2的department_id 那里要有。

    如果没有, 那么
    如果你 INSERT INTO table1 一个 table2 没有的 department_id
    那么 数据库将 拒绝你的插入操作。

    ALTER TABLE 子表 ADD CONSTRAINT 外键名 FOREIGN KEY (关联字段) 
    REFERENCES 主表(被关联的字段) on delete cascade on update restrict;

    外键约束属性:当有删除或者更新操作的时候发出这个约束

    On Delete和On Update都有Restrict,No Action, Cascade,Set Null属性。现在分别对他们的属性含义做个解释。

    ON DELETE
    restrict(约束):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。

    no action:意思同restrict.即如果存在从数据,不允许删除主数据。

    cascade(级联):当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则也删除外键在子表(即包含外键的表)中的记录。

    set null:当在父表(即外键的来源表)中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)

    ON UPDATE
    restrict(约束):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新。

    no action:意思同restrict.

    cascade(级联):当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则也更新外键在子表(即包含外键的表)中的记录。

    set null:当在父表(即外键的来源表)中更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(不过这就要求该外键允许取null)。

    注:NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。
     

    CASCADE
    在父表上update/delete记录时,同步update/delete掉子表的匹配记录 

    SET NULL
    在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)  

    NO ACTION
    如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作  

    RESTRICT
    同no action, 都是立即检查外键约束

    SET NULL
    父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

     

    NULL、RESTRICT、NO ACTION

    删除:从表记录不存在时,主表才可以删除。删除从表,主表不变

    更新:从表记录不存在时,主表才可以更新。更新从表,主表不变

    restrict: 只要本表格里面有指向主表的数据, 在主表里面就无法更新/删除相关记录,相当于no action。

    CASCADE

    删除:删除主表时自动删除从表。删除从表,主表不变

    更新:更新主表时自动更新从表。更新从表,主表不变

     

    SET NULL

    删除:删除主表时自动更新从表值为NULL。删除从表,主表不变

    更新:更新主表时自动更新从表值为NULL。更新从表,主表不变

     

    外键约束属性: RESTRICT | CASCADE | SET NULL | NO ACTION  外键的使用需要满足下列的条件:

      1. 两张表必须都是InnoDB表,并且它们没有临时表。

      2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。

      3. 建立外键关系的对应列必须建立了索引。

      4. 假如显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。假如没有显式的给出,InnoDB会自动的创建。

      如果子表试图创建一个在父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作。如果父表试图UPDATE或者DELETE任何子 表中存在或匹配的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项。InnoDB支持5种不同的动作,如果没有指定ON DELETE或者ON UPDATE,默认的动作为RESTRICT:

      1. CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。

      2. SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。

      3. NO ACTION: InnoDB拒绝删除或者更新父表。

      4. RESTRICT: 拒绝删除或者更新父表。指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。

      5. SET DEFAULT: InnoDB目前不支持。

      外键约束使用最多的两种情况无外乎:

      1)父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;

      2)父表更新时子表也更新,父表删除时子表匹配的项也删除。

      前一种情况,在外键定义中,我们使用ON UPDATE CASCADE ON DELETE RESTRICT;后一种情况,可以使用ON UPDATE CASCADE ON DELETE CASCADE。

    展开全文
  • SQL语句添加外键约束

    千次阅读 2011-11-16 16:55:35
    ALTER TABLE [Enviroment].[dbo].[T_Bas_EnterpriseData_I] ALTER COLUMN [code_pollute] NVARCHAR(12) NOT NULL    ALTER TABLE [Enviroment].[dbo].[T_Bas_EnterpriseData_I] WITH CHECK ADD FOREIGN KEY(cod
  • 设置外键约束SQL语句: @著一

    万次阅读 2017-09-29 11:49:02
    设置外键约束SQL语句:  alter table 需要建立外键的表 add constraint 外键名字 foreign key(外键字段) references 外键表(被别的表引为外键的字段)  例子:  班级和学生是一对多的关系,将班级表...
  • ——添加外键约束语法: alter table 表1-表名 add constraint 外键名称(一般外键名称为”fK_”开头) foreign key (要设为外键的列名) references 表2-表名(与哪个表有关联) (表2中该列列名);
  • 设置外键约束SQL语句

    千次阅读 2015-12-08 22:48:28
    格式:alter table 需要建立外键的表 add constraint 外键...班级和学生是一对多的关系,将班级表(class)中的主键(class_id)作为学生表(student)的外键对学生表进行约束。  alter table student  add cons
  • 请编写 SQL 语句,为课程表 courses 中的 teacher_id 添加外键约束,使之能与教师表 teachers 中的 id 相关联。 //官方答案 ALTER TABLE courses ADD CONSTRAINT FOREIGN KEY (teacher_id) REFERENCES teachers...
  • --sql语句创建表的同时添加外键约束 CREATE TABLE tb_UserAndRole --用户角色表 ( ID INT PRIMARY KEY IDENTITY(1,1), UserID INT NOT NULL,--用户ID RoleID INT NOT NULL,--角色ID foreign key(UserID) ...
  • SQLServer 2008添加外键约束

    千次阅读 2018-02-26 09:41:56
    在正望ERP管理系统中,给订单表身数据TF_POS添加外键约束的时候遇到如下错误: 无法创建关系“FK_TF_MM0_TF_POS”。 ALTER TABLE 语句与 FOREIGN KEY 约束"FK_TF_MM0_TF_POS"冲突。该冲突发生于数据库&...
  • Mysql 为表添加外键约束

    万次阅读 2017-05-08 09:30:31
    Mysql 为表添加外键约束 Error Code: 1215. Cannot add foreign key constraint (foreign keys)
  • MySQL添加外键约束语法

    万次阅读 2019-05-09 16:00:01
    ·添加外键约束: altertable从表addconstraint外键(形如:FK_从表_主表)foreignkey(从表外键字段)references主表(主键字段); 如果mysql报错:Error Code: 1215. Cannot add foreign key constraint (foreign ...
  • 添加外键约束

    2021-03-26 11:05:23
    1、如果表已经存在 alter table audit add constraint emp_no foreign key(emp_no) references employees_test(id) alter table audit :修改表audit...references employees_test(id):外键约束引用的是employees_te
  • sql语句建表时设置外键约束

    千次阅读 2020-03-20 17:31:09
    建表时创建外键约束 --学生借阅图书表 create table borrow( sno number(8), bno number(5), primary key(bno,sno), --联合主键 foreign key (bno) references book(bno), --借阅表中的bno是book表中的主键 foreign ...
  • 外键的作用是建立子表与父表的关联关系,是约束父表和子表, 1.父表和子表存储引擎一样且只能为InnoDB,禁止使用临时表, 2.外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符...
  • --主键约束 9 emp_name nvarchar(20) not null, 10 emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外键约束 ) 注意点: 1. 创建表的命令后面是小括号(),而...
  • alter table dbo.WebSiteNode add constraint FK_WebSiteNode_REFERENCE_WebSite foreign key (WebSiteId) references dbo.WebSite (WebSiteId)go 转载于:https://www.cnblogs.com/hwc_2008/archive/2009/04/09...
  • 数据库中外键SQL语句的编写

    千次阅读 2021-01-16 22:05:54
    数据库中外键SQL语句的编写 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2. 对于已经存在的字段添加外键约束...
  • 外键SQL语句的编写

    2021-03-26 13:12:21
    2. 对于已经存在的字段添加外键约束 -- 为cls_id字段添加外键约束 alter table students add foreign key(cls_id) references classes(id); 3. 在创建数据表时设置外键约束 -- 创建学校表 create table ...
  • alter table 表名 drop constraint 外键约束名 如: alter table Stu_PkFk_Sc drop constraint FK_s alter table Stu_PkFk_SC drop constraint FK_c –添加外键 语法:alter table 表名 add constraint 外键约束名 ...
  • 一 语法 ADD CONSTRAINT constrint_name FOREIGN KEY(column_name) REFEFRENCES table_name(column_name) [ON DELETE CASCADE] ...SQL> create table userinfo_f4 2(id varchar2(10) primary key, 3 usern
  • SQL语句设置主外键约束

    万次阅读 2016-12-09 11:06:36
    alter table 外键表名 add constraint 约束名称 foreign key(外键字段)  references 主键表名(约束列名)  如表A中的Ids是主键,要约束表B中的Aid列,那么语句应该是: alter table B add constraint A...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,404
精华内容 16,161
关键字:

添加外键约束的sql语句