精华内容
下载资源
问答
  • sql设置外键(设置外键sql语句)
    千次阅读
    2021-02-01 02:46:07

    sql设置外键(设置外键的sql语句)

    2020-07-24 11:44:03

    共8个回答

    sql怎么设置外键

    创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。

    建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:

    第一步、打开要建外键表的设计器,右击选择“关系”。

    第二步、然后弹出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。

    第三步、弹出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。

    第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何操作”、“级联”、“设置为NULL”、“设置默认值”。

    默认的不执行任何操作。如果是“不执行任何操作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该操作。

    “级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。

    “设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。

    “设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。

    当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign key (studentNo) references T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“ add constraint CMPKey(外键名)

    更多相关内容
  • SQL Server 2012 外键约束(定义外键、删除外键)

    万次阅读 多人点赞 2019-04-21 20:00:26
    文章目录准备知识定义外键使用SSMS工具定义外键使用SQL方式定义外键删除外键使用SSMS工具删除外键方式一:在对象资源管理器中删除主键方式二:在表设计器中删除主键使用SQL方式删除外键 准备知识     外键...







    准备知识

        外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。
        通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键
        FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改
        例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。
        FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去
        外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表或多个表的数据能够同时发生改变



    两个数据表结构如下所示:
    (1)student表
    在这里插入图片描述
    (2)class表
    在这里插入图片描述

    定义外键

    使用SSMS工具定义外键
    1. 右击需要添加外键的数据表,选择“设计”。
      在这里插入图片描述
    2. 进入表设计器界面,选择工具栏上的关系图标,或者右击数据表中的行,在弹出的对话框中选择“关系”。
      在这里插入图片描述
      在这里插入图片描述
    3. 进入外键关系对话框,单击“添加”。
      在这里插入图片描述
    4. 点击右侧网格中的“表和列规范”,再点击右侧的“…”按钮。
      在这里插入图片描述
    5. 进入表和列对话框,从主键表中选择需要外键所在的数据表。
      在这里插入图片描述
    6. 在主键表下方的表格中,选择此表中的主键列,在相邻的网格中选择外键表中相应的外键列。
      在这里插入图片描述
    7. 在“关系名”中填写适合的关系名,点击“确定”。
      在这里插入图片描述
    8. 关闭外键关系对话框,点击保存键,或者按Ctrl+F5键进行保存。展开刚开打开的数据表,再展开“键”,就可以看到刚才定义的外键。
      在这里插入图片描述
      注意:
      (1)定义外键约束的列的数据类型必须和引用的主键列的数据类型相通
      (2)在定义外键约束之前,外键所在的表必须已经定义了主键

    使用SQL方式定义外键
    方式一:在创建数据表的时候定义外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB                                                 --打开数据库schoolDB
    GO
    IF EXISTS(SELECT * FROM sysobjects WHERE name='student') 
    DROP TABLE student                --检查student是否已经存在,如果存在,则删除
    GO
    CREATE TABLE student                                           --表名为student
    (
    	  StuID int NOT NULL,                                           --学生学号
    	  StuName varchar(15) NOT NULL,                                 --学生姓名
    	  Sex char(2) NULL,                                             --性别
    	  Major varchar(20) NULL,                                      --所选专业
    	  ClassID int NULL FOREIGN KEY REFERENCES class(ClassID)
    
    )
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 刷新并查看数据表中的键。
      在这里插入图片描述

    方式二:修改数据表定义外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述
    2. 输入创建SQL代码
    USE schoolDB
    GO
    ALTER TABLE student --打开schoolDB数据库
    ADD CONSTRAINT FK_student_class FOREIGN KEY(ClassID) REFERENCES class(ClassID)     
                              --在表product的CatID列上定义与表category的外键关系
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 刷新并查看数据表中的键。
      在这里插入图片描述


    删除外键

    使用SSMS工具删除外键
    方式一:在对象资源管理器中删除外键
    1. 展开需要删除外键的数据表,然后再展开“键”。
      在这里插入图片描述
    2. 右击需要删除的外键,选择“删除”。
      在这里插入图片描述
    3. 在删除对象界面,点击“确定”,即可完成外键删除。
      在这里插入图片描述
    方式二:在表设计器中删除外键
    1. 右击需要删除外键的数据表,选择“设计”。
      在这里插入图片描述
    2. 进入表设计器界面,右击鼠标,选择“关系”。
      在这里插入图片描述
    3. 在外键关系对话框中选择需要删除的外键,点击“删除”,完成外键删除。
      在这里插入图片描述
    使用SQL方式删除外键
    1. 在SSMS工具栏中单击“新建查询”,打开“SQL编辑器”窗口
      在这里插入图片描述

    2. 输入创建SQL代码

    USE schoolDB --打开schoolDB数据库
    GO
    ALTER TABLE student 
    DROP CONSTRAINT FK_student_class   --删除表student的外键FK_student_class
    
    
    1. 点击“分析”按钮,或按住Ctrl+F5,对SQL代码进行语法分析,确保SQL语句语法正确。
      在这里插入图片描述
    2. 点击“执行”按钮,或按住F5,执行SQL代码。
      在这里插入图片描述
    3. 外键已被删除。
      在这里插入图片描述
    展开全文
  • sql_外键

    2021-05-20 10:25:47
    一、外键定义 1. 外键是一种索引,是通过一张表中的一列指向另一张表的主键,使得这两张表产生关联 2. 是某个表中的一列,它包含在另一个表的主键中 3. 一张表中可以有一个外键也可以有多个外键 二、外键的...

    一、外键的定义

    1. 外键是一种索引,是通过一张表中的一列指向另一张表的主键,使得这两张表产生关联

    2. 是某个表中的一列,它包含在另一个表的主键中

    3. 一张表中可以有一个外键也可以有多个外键

    二、外键的作用

    减少单张表的冗余信息

    三、使用外键后想要删除/更新主表的相关列会报错,因为从表正在使用。使用外键后若想向从表中插入新列,但是外键值主表中没有,会报错,更新从表的外键值,但是值不在从表中会报错。

     

    四、如何创建外键

    法1:创建表的时候添加外键

    CONSTRAINT 约束名 FOREIGN KEY(字段名) REFERENCES 主表(被引用列)
    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
    SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
    RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
    NO ACTION:同 RESTRICT,也是首先先检查外键;

    其中跟随外键改动是:删除主表中,外键行时,从表相关行也删除。更新主表中外键相关行时,从表的使用行也改变

    若,事触发限制为默认值,限制外表中外键的改动,则在添加外键之后对表中数据的增删改查都需要注意

    例:

    CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    sex VARCHAR(255),
    age INT);
    
    CREATE TABLE IF NOT EXISTS student_score(
    id INT PRIMARY KEY AUTO_INCREMENT,
    class VARCHAR(20),
    score INT,
    student_id INT,
    CONSTRAINT fk_s_id FOREIGN KEY(student_id) REFERENCES student(id))

    法2:修改表时添加外键约束

    ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段名)
    REFERENCES 外表表名(主键字段名)
    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
    

     

    例如,1.向从表中插入新行,但是外键值不在主表中,会报错

    #向从表中插入新行,但是外键值不在主表中,会报错
    INSERT INTO student_score(`class`,`student_id`,`score`) VALUES ('语文',2,100)

     2.

    #更新从表外键值,新值不在主表中,会报错
    UPDATE student_score SET student_id=2
    WHERE student_id=1

    3.

    #主表想要删除行,但是主键值在从表里存在,会报错(必须先删除从表使用行,才能再删主表的相关行)--或者采用级联删除
    
    DELETE FROM student
    WHERE id=1;
    
    
    #级联删除 on delete cascade
     
    ALTER TABLE student_score DROP FOREIGN KEY fk_s_id;
    
    ALTER TABLE student_score ADD CONSTRAINT fk_s_id FOREIGN KEY(student_id)
    REFERENCES student(id) ON DELETE CASCADE 
    

    4.

    #主表修改主键值,但是旧值在从表中使用了,会报错,必须先删除从表的使用行,才能再修改--或者采用级联更新
    #级联更新
    on update cascadde
    
    
    UPDATE student SET id = 2 WHERE id = 1;
    
    
    ALTER TABLE student_score DROP FOREIGN KEY fk_s_id;
    
    ALTER TABLE student_score ADD CONSTRAINT fk_s_id FOREIGN KEY(student_id)
    REFERENCES student(id) ON update CASCADE  

     

    展开全文
  • SQL-主键&外键定义

    2021-06-08 23:46:26
    primary key 主键 需设置为不为空不重复&自增列 not null auto_increment primary key 一个表仅允许一个主键,但主键可由多列组成 create table tb1 ( ...foreign key 外键 外键由单列组成 constraint

    primary key 主键

    • 需设置为不为空不重复&自增列
    not null  auto_increment primary key
    
    • 一个表仅允许一个主键,但主键可由多列组成

    create table tb1 (
    id int not null auto_increment,
    department_id int,
    name char,
    age int,
    primary key(id,department_id)
    )

    foreign key 外键

    • 外键由单列组成
    constraint 外键名 foreign  key(列名) references (表名,列名);
    
    • 外键由多列组成(前提是被连接的主键是由多列组成)
    create table tb1 (
    id int not null auto_increment,
    department_id int,
    name char,
    age int,
    primary  key(id,department_id)
    )
    
    create table tb2(
    t_id int  not null  auto_increment primary key,
    q_id int,
    constarint fk_1 foreign key (t_id,q_id)  references t1(id,department_id)
    )
    
    展开全文
  • 建立外键约束可以对sql语句的增删改有约束作用。外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中没有这个值,则不能插入。(2)更新时,不能改为主键表中没有的值。(3)删除主键表记录时,你可以在建...
  • 主键=主码:某个能够唯一标识一条... 作为一个可以被外键有效引用的对象。 主键约束: 表外添加 格式为: alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名) 例子: alter table student add
  • SQL添加外键

    2021-10-07 20:58:12
    [CONSTRAINT] [外键名] FOREIGN KEY (外键的列名) REFERENCES 主表名(列名) ); []中括号内容可以省略。 创建表结束后添加外键 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表名称...
  • 数据sql设置外键约束

    2022-03-21 17:34:04
    子表:定义外键的表 外键的取值要么取父表中字段对应的值,要么取NULL值 严重受限于父表 父表:被引用的字段要具有唯一性(绝大多数都是用的父表的主键) 理论上是可以一张表里的一个字段引用另一个字段,但一般...
  • SQL编程:外键约束

    千次阅读 2020-11-29 20:50:20
    外键(foreign key) 一个表中的foreign key指向另一个表中的unique key(唯一约束的键) 对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表(子表)。 外键约束 foreign ...
  • SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了。SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识。 首先我们来说说SQL sever的主键约束:主键...
  • sql外键_SQL外键

    千次阅读 2020-07-27 05:46:11
    sql外键 In this article let us review different ways to create a SQL foreign key, rules on updates and deletes, enabling foreign key constraints, disabling foreign key constraints and not for ...
  • SQL中的外键

    万次阅读 多人点赞 2019-06-26 21:03:31
    外键 概念: 外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。 外键特点: 从表外键的值是对主表主键的引用。 从表外键类型,必须与主表主键类型一致。 作用:外键可以保证数据...
  • sql组合键设置外键_学习SQL外键

    千次阅读 2020-07-17 22:09:28
    sql组合键设置外键 In the previous article, we talked about the primary key (PK). In this one, we’ll check what is the foreign key (FK) and how it’s related to the primary key. This is the final ...
  • sql外键约束

    2022-01-13 11:50:56
    sql外键约束对于已经存在的字段添加外键约束在创建数据表时设置外键约束删除外键约束 外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效...
  • 1. 创建表的同时添加外键 create table score( ...2. 已经创建表了怎么办:在表的定义外进行添加 alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字
  • SQL server 外键约束操作

    万次阅读 多人点赞 2019-03-25 14:49:21
    创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。 建外键的前提是此外键必须是另外一个表的主键。建外键的步骤: 第一步、打开要建外键的表设计器,...
  • 在实际开发项目中,有的场景需要进行两个表的相关字段的外键关联,如在管理系统中,人员表和部门信息表,在生成一个人员信息时,人员的部门编码必须存在于部门表中,当该部门名称等信息发生变化时,人员表的部门信息也需要...
  • 用的vs2005里面自带的SqlExpress,在VS里面作数据库,感觉不是很方便(废话,都方便了,那sqlserver2005 dev 卖给谁去!)我建了表,然后建了关系,设定了外键约束.然后就以为万事大吉了,去写代码,画界面去了.把代码和界面...
  • 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) ...
  • 如何定义外键

    2021-10-24 00:09:42
    sqlserver中是这样定义外键的, 亲测,left join 和right join 以及 join 三个连接的查询结果没有任何区别
  • sql主键和外键的区别:1、主键是唯一标识一条记录,不能有重复,不允许为空,而外键可以重复,可以是空值;2、主键是用来保持数据完整性,外键是用来建立与其他表联系用的;3、主键只有一个,外键可以有多个。sql...
  • 怎样在MySQL的数据库中定义外键详解除了 CASCADE 外,还有 RESTRICT(禁止主表变更)、SET NULL(子表相应字段设置为空) 等操作。第一行是说要为 pc 表设置外键,给这个外键起一个名字叫做 fk_cpu_model;第二行是说将...
  • sql怎么设置外键

    千次阅读 2021-01-18 19:07:59
    展开全部sql server中建立32313133353236313431303231363533e78988e69d8331333365653833外键约束有3中方式:enterprise manager中,tables,design table,设置table的properties,可以建立constraint, reference key;...
  • QL的主键和外键的作用:外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中...简而言之,SQL的主键和外键就是起约束作用。关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)...
  • sql语句创建外键关联

    千次阅读 2021-01-29 10:26:47
    sql语句 : USE school; CREATE TABLE student( id INT(10) NOT NULL PRIMARY KEY, NAME VARCHAR(30) DEFAULT NULL, tid INT(10) DEFAULT NULL, KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY(`tid`) ...
  • MySQL定义外键的方法

    2021-01-18 18:58:37
    外键为MySQL带来了诸多的好处,下面就为您介绍MySQL定义外键的语句写法,以及MySQL定义外键过程中出现错误的处理方法,供您参考学习。mysql>CREATETABLEcategories(->category_idtinyint(3)...
  • 如何添加外键 方法一:直接在属性值后面添加 create table score( cscore int(11), st_id int(50) references student(id), cs_id int(30) references classes(id), primary key(st_id,cs_id) ); 方法二: create ...
  • 此文主要向大家讲述的是SQL Server 外键的更新(删除)的实际操作规则,以前用数据库德 时候一般都建表关系,但是把这些关系建好了之后往往都用不上,这次写一个项目,涉及到多表的SQL Server 外键约束和级联删除的问题...
  • sql server外键的相关规则是我们在学习SQL数据库中都需要知道和掌握的,下面就将为您详细介绍sql server外键的各类规则,供您参考。sql server外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中没有...
  • SQL SERVR 创建与添加外键

    千次阅读 2021-12-10 20:13:27
    【参考】创建外键关系 - microsoft : https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/create-foreign-key-relationships?view=sql-server-ver15 在新表中创建外键约束 -- 代码引用自 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,395
精华内容 42,558
关键字:

sql定义外键