精华内容
下载资源
问答
  • SQL学习之foreign key约束

    千次阅读 2019-12-12 21:49:46
    目录参考源SQL foreign key 约束FOREIGN KEY 作用create table 时的 SQL foreign key 约束MySQLSQL Server / Oracle / MS Access给 foreign key 命名alter table 时的 SQL foreign key 约束MySQL / SQL Server / ...

    参考源

    SQL foreign key 约束

    什么是 foreign key ? 就是一个表中存储另一个表的主键 ( PRIMARY KEY )

    CREATE TABLE lesson (
        id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
        name varchar(32) default '',
        views int(11) NOT NULL default '0',
        created_at DATETIME
    );
    
    CREATE TABLE lesson_views (
        uniq bigint(20) primary key NOT NULL default '0' ,
        lession_name varchar(32) default '',
        lession_id int(11) default '0',
        date_at  int(11) NOT NULL default '0',
        views int(11) NOT NULL default '0'
    );
    

    lesson_views 中的lesson_id 就是 lesson 表中的主键id
    很多人都会有疑问,那我们一般不都是这么建表的? 难道添加的就是 lesson_id 就是 FOREIGN KEY
    不是的。我们这么添加,是因为我们开发团队有共识,但是,这种共识数据库系统不认识啊
    如果不给lesson_id 添加 FOREIGN KEY约束,数据库系统会以为 lesson_id只不过是一个普通的 int(11) 字段
    ——简单教程https://www.twle.cn/l/yufei/sql/sql-basic-foreignkey.html

    FOREIGN KEY 作用

    1. FOREIGN KEY 约束用于预防破坏表之间连接的行为

      当删除一个 FOREIGN KEY 指向的主表 (lession) 记录时,如果 FOREIGN KEY 所在的表 (lession_views) 存在记录,那么会删除失败

    2. FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一

      当在 FOREIGN KEY 表 ( lession_views ) 插入或更新一条记录,如果 FOREIGN KEY 指向的主表 ( lession ) 不存在该记录,那么插入或者更新失败

    create table 时的 SQL foreign key 约束

    给一个表添加 foreign key 约束可以使用 foreign key 关键字

    MySQL

    CREATE TABLE lesson_views (
        uniq bigint(20) primary key NOT NULL default '0' ,
        lession_name varchar(32) default '',
        lession_id int(11) default '0',
        date_at  int(11) NOT NULL default '0',
        views int(11) NOT NULL default '0',
        FOREIGN KEY (lesson_id) REFERENCES lesson(id)
    );
    

    SQL Server / Oracle / MS Access

    CREATE TABLE lesson_views (
        uniq bigint(20) primary key NOT NULL default '0' ,
        lession_name varchar(32) default '',
        lession_id int(11) FOREIGN KEY REFERENCES lesson(id),
        date_at  int(11) NOT NULL default '0',
        views int(11) NOT NULL default '0'
    );
    

    给 foreign key 命名

    如果想要给 foreign key 约束命名,可以使用 constraint 关键字

    CREATE TABLE lesson_views (
        uniq bigint(20) primary key NOT NULL default '0' ,
        lesson_name varchar(32) default '',
        lesson_id int(11) default '0',
        date_at  int(11) NOT NULL default '0',
        views int(11) NOT NULL default '0',
        CONSTRAINT fk_lesson_id FOREIGN KEY (lesson_id) REFERENCES lesson(id)
    );
    

    alter table 时的 SQL foreign key 约束

    如果一个表已经被创建,我们仍然可以使用 alter table add foreign key 来添加外键约束

    MySQL / SQL Server / Oracle / MS Access

    ALTER TABLE lesson_views ADD FOREIGN KEY (lesson_id) REFERENCES lesson(id);
    

    如果还想给 foreign key 约束命名,则可以像下面这样使用

    ALTER TABLE lesson_views ADD CONSTRAINT fk_lesson_id FOREIGN KEY (lesson_id) REFERENCES lesson(id);
    

    删除 foreign key 约束

    如果想要删除一个已经命名的 foreign key 约束,可以使用 drop关键字

    MySQL

    ALTER TABLE lesson_views DROP FOREIGN KEY fk_lesson_id;
    
    

    SQL Server / Oracle / MS Access

    ALTER TABLE lesson_views DROP CONSTRAINT fk_lesson_id;
    
    
    展开全文
  • SQL FOREIGN KEY 约束

    2018-07-30 08:37:51
    SQL FOREIGN KEY语名的使用,并熟练的撑握他,里面有举例子说明
  • SQL FOREIGN KEY

    2017-12-26 11:11:18
    一个表的FOREIGH KEY 指向另一个表的PRIMARY KEY。  通过实例来解释外键。请看下面两个表: 注意:  ·"Orders"表的"P_Id"列指向"Persons"表的"P_Id"列。 ...

      一个表中的FOREIGH KEY 指向另一个表中的PRIMARY KEY。

      通过实例来解释外键。请看下面两个表:

    注意:

       ·"Orders"表中的"P_Id"列指向"Persons"表中的"P_Id"列。

       ·"Persons"表中的"P_Id"列是"Persons"表中的PRIMARY KEY。

       ·"Orders"表中的"P_Id"列是"Orders"表中的FOREIGN KEY。

     

    FOREIGN KEY 约束用于预防破坏表之间连接的行为。

    FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

     

    CREATE TABLE时的SQL FOREIGN KEY 约束

      在"Orders"表创建时在"P_Id"列上创建FOREIGN KEY 约束:

    MySQL:

     

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    PRIMARY KEY (O_Id),
    FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
    )


    SQL Server/ Oracle /MS Access:

     

     

    CREATE TABLE Orders
    (
    O_Id int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
    )

      如需命名FOREIGN KEY 约束,并定义多个列的FOREIGN KEY 约束,请使用下面的SQL语法:

     

    MySQL /SQL Server /Oracle /MS Access:

     

    CREATE TABLE Orders
    (
    O_Id int NOT NULL,
    OrderNo int NOT NULL,
    P_Id int,
    PRIMARY KEY (O_Id),
    CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)
    )

     


    ALTER TABLE 时的 SQLFOREIGN KEY 约束

     

     

      当"Orders"表已被创建时,如需在"P_Id"列创建FOREIGN KEY 约束,请使用下面的SQL:

    MySQL /SQL Server /Oracle /MS Access

     

    ALTER TABLE Orders
    ADD FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)

      如需命名FOREIGN KEY 约束,并定义多个列的FOREIGN KEY 约束,请使用下面的SQL语法:

     

    MySQL /SQL Server /Oracle /MS Access:

     

    ALTER TABLE Orders
    ADD CONSTRAINT fk_PerOrders
    FOREIGN KEY (P_Id)
    REFERENCES Persons(P_Id)

     


    撤销FOREIGN KEY 约束
      如需撤销FOREIGN KEY约束,请使用下面的SQL:

     

     

    MySQL:

     

    ALTER TABLE Orders
    DROP FOREIGN KEY fk_PerOrders

     

    SQL Server /Oracle /MS Access:

     

    ALTER TABLE Orders
    DROP CONSTRAINT fk_PerOrders

     

    参考:

    https://www.yuque.com/docs/share/79273585-3f48-4505-b43b-edb59ba84662

     

    展开全文
  • 可以为表2的学号定义外键(FOREIGN KEY),该外键的取值范围参照(REFERENCES)表1的学号 CONSTRAINT是对某列定义约束, 如上表1的”性别”,可以定义约束,将取值限定为不是”男”,就是”女”. CHECK(性别 IN (‘男’,...

    假设两张表,表1(学号,姓名,性别),学号为主键. 表2(学号,课程,成绩). 可以为表2的学号定义外键(FOREIGN KEY),该外键的取值范围参照(REFERENCES)表1的学号

    CONSTRAINT是对某列定义约束, 如上表1中的"性别",可以定义约束,将取值限定为不是"男",就是"女". CHECK(性别 IN (‘男’,‘女’))

    展开全文
  • 1:ERD(entity relationship dialgram)实体属性图PK所对应的就是每个表主键(上图为ERD) ...大多数数据库,主键通常是表的第一列。 3:外键是一个表的列,它是另一个表的主键。 文章列出的ERD...

    在这里插入图片描述1:ERD(entity relationship dialgram)实体属性图中PK所对应的就是每个表中主键(上图为ERD)

    2:当我们用SQL语言查询表的时候,一般第一个列出的就是每个表的主键
    主键是特定表中的唯一列。这是每个表的第一列。这里,这些列都被称为id,但不一定非得是名称。在大多数数据库中,主键通常是表中的第一列。

    在这里插入图片描述在这里插入图片描述
    3:外键是一个表中的列,它是另一个表中的主键。
    文章中列出的ERD中外键有
    region_id
    account_id
    sales_rep_id
    每一个都链接到另一个表的主键

    在这里插入图片描述
    FK总是和PK相连接
    当两个表中间有了PK-FK连接,那么这两个表就有了关系

    连接任何两个表的方法是这样的:链接PK和FK(通常在ON语句中)如下图

    在这里插入图片描述

    展开全文
  • [SQL]foreign key和references的区别

    千次阅读 2020-11-01 22:44:59
    假设两张表, 表1(学号,姓名,性别),学号为主键. 表2(学号,课程,成绩). 可以为表2的学号定义外键(FOREIGN KEY),该外键的取值范围参照(REFERENCES)表1的学号
  • 一个表FOREIGN KEY 指向另一个表的 UNIQUE KEY(唯一约束的键),我们来通过一个实例来解释外键,看一下下面的两个表: P_Id LastName FirstName Address City 1 Hansen Ola Timoteivn...
  • In the previous article Commonly used SQL Server Constraints: NOT NULL, UNIQUE and PRIMARY KEY, we described, in detail, the first three types of the SQL Server constraints; NOT NULL, U...
  • 关系模型Relational_Model,主键Primary_Key,外键Foreign_Key【关系数据库SQL教程2】
  • sql server foreign key 的一点记录

    千次阅读 2011-10-18 21:22:43
    需要破解foreign key约束的时候,需要知道foreign key的名称,sql server 2005有两个试图可以用到:a) sys.foreign_key_columns b) sys.foreign_keys 用SQL查询当前库foreign key并连同引用表一起查询...
  • MySql导入.sql文件时外键报错 通过Navicat for MySQL或者SQLyog等数据库操作工具导出.sql文件时,会发现再次导入的...Error Code: 1217 - Cannot delete or update a parent row: a foreign key constraint fails ...
  • 如何添加foreign key

    2019-02-11 09:36:04
    SQL> create table t1(id int, x varchar2(10), constraint pk_t1 primary key (id));表已创建。想当然的,我以为建表的时候添加外键约束和添加主建约束...
  • 错误如下: ...解决方法是Mysql取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入, 然后再设置外键约束: SET FOREIGN_KEY_CHE...
  • 关于包含外键的表,清理数据的时候,如truncateTable,网上大部分的解决办法是,删除外键-》删除数据-》再新建表。 这里介绍一种不需要删除外键,只需要修改外键属性就可以删除数据的方式。 ...
  • 约束用于规定表的数据规则 如果存在违反约束的数据行为,行为会被约束终止 primary key 约束 某列的唯一标识, 每个表只能有一个primary key 约束 create table Student( ID int primary key) 或 create ...
  • SQL岗位30个面试题,SQL面试问题及答案

    万次阅读 多人点赞 2019-06-19 17:42:34
    SQL岗位30个面试题,SQL面试问题及答案: 什么是SQLSQL(结构化查询语言)是一种设计用于检索和操作数据的数据库。它属于美国国家标准协会(ANSI)的一种标准,...,指定了列数称为字段,但未定义行数称...
  • Sqlserver sql写法与mysql 不同之处收集

    千次阅读 2019-08-26 16:52:10
    Sqlserver sql写法与mysql 不同之处收集 ...sqlserver: select * from tbName where [key]='test'; 关键字一般用[ ]括起来即可! mysql: select * from tbName where `before`='test'; 关键字一般用 ``...
  • 阅读此书以了解根本原因:SQL FOREIGN KEY Constraint [^]
  • 一A 对 多B:A中使用relationship,B中使用ForeignKey,我们总是“多B”中设置某个字段使用Foreignkey来对应“一A”中的唯一ID。(1A中设置relationship但多B中未设置ForeignKey,系统将报错) 总结就是: 1、...
  • Mysql Workbench使用教程

    万次阅读 多人点赞 2019-03-20 23:45:34
    MySQL Workbench 为数据库管理员、程序开发者和系统规划师提供可视化的Sql开发、数据库建模、以及数据库管理功能。 <2>.MySQL Workbench 的下载和安装 (1)安装最新MySql时,有是否安装MySql Workbench的...
  • 一个表FOREIGN KEY 指向另一个表的 PRIMARY KEY。 让我们通过一个例子来解释外键。请看下面两个表: "Persons" 表: Id_P LastName FirstName Address City 1 Adams ...
  • SET FOREIGN_KEY_CHECKS命令

    千次阅读 2019-08-22 15:31:42
    ll写前面正文OverviewWhen ...现在接触的项目是基本不用外键的(foreign key)的,可能单表设计,操作SQL更方便,尤其是JPA的存在,几乎都不用写sql的,但表的设计使用若关联,即不使用外键约束表,只是表里加...
  • 数据库高并发的场景下使用外键约束会有锁问题并且使用外键会增加运维成本,所以很多公司都规定生产环境的数据库禁止使用外键。 那么不使用外键约束的情况下使用 Django ORM 如何实现关联查询两个表呢?这曾是困扰...
  • 注意: A.表有数据不能创建约束 ...主键是每行的唯一标识符,仅仅通过它就能准确定位到一行,其中主键列整个表不能有重复,必须包含唯一的值(不能为NULL)。 alter table t_group  alter column id i...
  • SQL FOREIGN KEY 约束 一个表FOREIGN KEY 指向另一个表的 PRIMARY KEY。 让我们通过一个例子来解释外键。请看下面两个表: "Persons" 表:Id_PLastNameFirstNameAddressCity1AdamsJohnOxford ...
  • SQLServer有五种约束,Primary Key约束、Foreign Key约束、Unique约束、Default约束和Check约束,今天使用SQL Server2008来演示下这几种约束的创建和使用的方法。1、Primary Key约束 常有一列或多列的组合...
  • 外键保证数据的完整性和一致性,被参照的表是主表,外键所在字段的表是子表,依赖于数据库已存在的表的主键。外键的作用是建立子表与父表的关联关系,是约束父表和子表, 1.父表和子表存储引擎一样且只能为InnoDB...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 110,535
精华内容 44,214
关键字:

key在sql中使用foreign