精华内容
下载资源
问答
  • 2020-08-07 09:59:47

    外键约束

    外键必须是另一个表的主键。
    外键的作用:
    1.实体完整性,确保每个实体是唯一的(通过主键来实施)
    2.域完整性,确保属性值只从一套可选的集合里选择
    3.关联完整性,确保每个外键或null或含有与相关主键值相配的值
    foreign key 约束的主要目的是控制存储再外键表中的数据,但它还可以控制对主键表中数据的修改。
    

    外键是用来控制数据库中数据的完整性的,就是当你对一个表的数操作时,和它关联的一个或多个表的数据同时发生改变。

    创建外键约束

    例题:在audit表上创建外键约束,其emp_no对应employees_test表的主键id。

    create table audit (
    EMP_no int NOT NULL,
    create_date datetime NOT NULL,
    foreign key(EMP_no)
    references employees(id)
    );
    
    更多相关内容
  • 外键约束

    千次阅读 2020-11-07 21:40:33
    外键约束 只有InnoDB存储引擎支持外键,并且在创建外键的时候,我们子表的外键必须关联主表的主键。 外键字段依赖于已经存在的表的一个主键,所以一定要先有主表。 我们的外键字段必须和我们主表的主键字段的数据...

    外键约束

    • 只有InnoDB存储引擎支持外键,并且在创建外键的时候,我们子表的外键必须关联主表的主键。
    • 外键字段依赖于已经存在的表的一个主键,所以一定要先有主表。
    • 我们的外键字段必须和我们主表的主键字段的数据类型要相似:如果是数值型,两者必须类型一致,并且同时为有无符号;如果是字符串型,两者的长度可以不同,但是类型必须相同。
    • 如果子表的外键字段没有创建索引,但是当我们创建完外键之后,它会自动的添加索引。
    • 如果子表中有记录外键关联着主表中的记录,那么主表中的这条记录以及主表是无法删除的,子表中的这些记录可以删除。

    创建外键

    建表时指定外键

    [CONSTRAINT 外键名称] FOREIGN KEY(字段名称) REFERENCES 主表(字段名称)
    

    外键名称一般以 从表字段名称_fk_主表名称 进行命名

    动态删除外键

    ALTER TABLE tbl_name
    DROP FOREIGN KEY fk_name;
    

    动态增加外键

    ALTER TABLE tbl_name
    ADD [CONSTRAINT 外键名称] FOREIGN KEY(外键字段) REFERENCES 主表(主键字段);
    

    注意:动态添加外键之前表中的记录一定是合法的记录,没有脏值,否则外键添加不成功。

    外键约束的参照操作

    CASCADE

    级联的。当我们对父表进行删除或者更新,那么我们子表对应得也会进行删除或者是更新。

    SET NULL

    从父表删除或者更新记录,会设置子表对应的外键列为NULL。但是得确保这个字段是可以为空得,不然无法写入NULL值。

    NO ACTION | RESTRICT

    这是默认的。拒绝对父表做更新或删除操作

    测试

    建表时指定外键测试

    -- 创建新闻分类表
    CREATE TABLE IF NOT EXISTS news_cate(
    	id TINYINT KEY AUTO_INCREMENT COMMENT '编号',
        cateName VARCHAR(50) NOT NULL COMMENT '分类名称',
        cateDesc VARCHAR(100) NOT NULL DEFAULT '无' COMMENT '分类描述'
    );
    INSERT news_cate(cateName)
    VALUES('国内新闻'),
    ('国际新闻'),
    ('娱乐新闻'),
    ('体育新闻');
    
    -- 创建新闻表
    CREATE TABLE IF NOT EXISTS news(
    	id INT KEY AUTO_INCREMENT COMMENT '编号',
        title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',
        content VARCHAR(1000) NOT NULL COMMENT '新闻内容',
        cateId TINYINT NOT NULL COMMENT '新闻所属分类编号',
        FOREIGN KEY(cateId) REFERENCES news_cate(id)
    );
    INSERT news(title,content,cateId)
    VALUES('a1','aaaa1',1),
    ('a2','aaaa2',1),
    ('a3','aaaa3',4),
    ('a4','aaaa4',2),
    ('a5','aaaa5',3);
    

    测试插入非法记录

    INSERT news(title,content,cateId) VALUES('b1','bbbb1',8);
    
    1452 - Cannot add or update a child row: a foreign key constraint fails (`king`.`news`, CONSTRAINT `news_ibfk_1` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`)
    

    也就会报错了

    测试删除父表中的记录和删除父表

    -- 测试删除父表中的记录
    DELETE FROM news_cate WHERE id=1;
    
    1451 - Cannot delete or update a parent row: a foreign key constraint fails (`king`.`news`, CONSTRAINT `news_ibfk_1` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`))
    
    -- 测试删除父表
    DROP TABLE IF EXISTS news_cate;
    
    3730 - Cannot drop table 'news_cate' referenced by a foreign key constraint 'news_ibfk_1' on table 'news'.
    

    测试更新父表中的记录

    UPDATE news_cate SET id=10 WHERE id=1;
    
    1451 - Cannot delete or update a parent row: a foreign key constraint fails (`king`.`news`, CONSTRAINT `news_ibfk_1` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`))
    

    尝试向父类插入记录

    INSERT news_cate(cateName) VALUES('教育新闻');
    
    +----+----------+----------+
    | id | cateName | cateDesc |
    +----+----------+----------+
    |  1 | 国内新闻 | 无       |
    |  2 | 国际新闻 | 无       |
    |  3 | 娱乐新闻 | 无       |
    |  4 | 体育新闻 | 无       |
    |  5 | 教育新闻 | 无       |
    +----+----------+----------+
    

    这条语句是可以成功的

    尝试更改新插入的记录

    这条记录是刚插入的,也就是子表还没有使用的。

    UPDATE news_cate SET cateName='教育' WHERE id=5;
    
    +----+----------+----------+
    | id | cateName | cateDesc |
    +----+----------+----------+
    |  1 | 国内新闻 | 无       |
    |  2 | 国际新闻 | 无       |
    |  3 | 娱乐新闻 | 无       |
    |  4 | 体育新闻 | 无       |
    |  5 | 教育     | 无       |
    +----+----------+----------+
    

    尝试在建表时指定外键并指定外键名称

    -- 创建新闻分类表
    CREATE TABLE IF NOT EXISTS news_cate(
    	id TINYINT KEY AUTO_INCREMENT COMMENT '编号',
        cateName VARCHAR(50) NOT NULL COMMENT '分类名称',
        cateDesc VARCHAR(100) NOT NULL DEFAULT '无' COMMENT '分类描述'
    );
    
    -- 创建新闻表
    CREATE TABLE IF NOT EXISTS news(
    	id INT KEY AUTO_INCREMENT COMMENT '编号',
        title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',
        content VARCHAR(1000) NOT NULL COMMENT '新闻内容',
        cateId TINYINT NOT NULL COMMENT '新闻所属分类编号',
        CONSTRAINT cateId_fk_newsCate FOREIGN KEY(cateId) REFERENCES news_cate(id)
    );
    

    下面时表的信息,我们就可以看到我们命名的外键名称

    | news  | CREATE TABLE `news` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `title` varchar(100) NOT NULL COMMENT '新闻标题',
      `content` varchar(1000) NOT NULL COMMENT '新闻内容',
      `cateId` tinyint(4) NOT NULL COMMENT '新闻所属分类编号',
      PRIMARY KEY (`id`),
      UNIQUE KEY `title` (`title`),
      KEY `cateId_fk_newsCate` (`cateId`),
      CONSTRAINT `cateId_fk_newsCate` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 |
    

    尝试动态删除外键

    ALTER TABLE news
    DROP FOREIGN KEY cateId_fk_newsCate;
    

    查看表信息,我们可以发现之前的外键被删除了

    | news  | CREATE TABLE `news` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `title` varchar(100) NOT NULL COMMENT '新闻标题',
      `content` varchar(1000) NOT NULL COMMENT '新闻内容',
      `cateId` tinyint(4) NOT NULL COMMENT '新闻所属分类编号',
      PRIMARY KEY (`id`),
      UNIQUE KEY `title` (`title`),
      KEY `cateId_fk_newsCate` (`cateId`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 |
    

    尝试动态添加外键

    ALTER TABLE news
    ADD FOREIGN KEY(cateId) REFERENCES news_cate(id);
    

    查看表信息

    | news  | CREATE TABLE `news` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `title` varchar(100) NOT NULL COMMENT '新闻标题',
      `content` varchar(1000) NOT NULL COMMENT '新闻内容',
      `cateId` tinyint(4) NOT NULL COMMENT '新闻所属分类编号',
      PRIMARY KEY (`id`),
      UNIQUE KEY `title` (`title`),
      KEY `cateId` (`cateId`),
      CONSTRAINT `news_ibfk_1` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 |
    

    在动态添加外键的时候指定外键名称

    ALTER TABLE news
    ADD CONSTRAINT cateId_fk_newsCate FOREIGN KEY(cateId) REFERENCES news_cate(id);
    

    查看表信息

    | news  | CREATE TABLE `news` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
      `title` varchar(100) NOT NULL COMMENT '新闻标题',
      `content` varchar(1000) NOT NULL COMMENT '新闻内容',
      `cateId` tinyint(4) NOT NULL COMMENT '新闻所属分类编号',
      PRIMARY KEY (`id`),
      UNIQUE KEY `title` (`title`),
      KEY `cateId_fk_newsCate` (`cateId`),
      CONSTRAINT `cateId_fk_newsCate` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 |
    

    尝试在表中有非法记录时动态插入外键

    -- 插入非法记录
    INSERT news(title,content,cateId) VALUES('b1','bbbb1',8);
    
    -- 尝试动态添加外键
    ALTER TABLE news
    ADD CONSTRAINT cateId_fk_newsCate FOREIGN KEY(cateId) REFERENCES news_cate(id);
    
    -- 会报错
    1452 - Cannot add or update a child row: a foreign key constraint fails (`king`.`#sql-3d84_4b`, CONSTRAINT `cateId_fk_newsCate` FOREIGN KEY (`cateId`) REFERENCES `news_cate` (`id`))
    

    我们将那个非法的记录删除后再进行动态添加外键

    DELETE FROM news WHERE id=6;
    
    ALTER TABLE news
    ADD CONSTRAINT cateId_fk_newsCate FOREIGN KEY(cateId) REFERENCES news_cate(id);
    

    添加成功

    所以在表中存在对于将要添加的外键来说是非法的记录时,将无法添加这个外键。

    尝试指定级联操作

    -- 指定级联操作 DELETE,UPDATE CASCADE
    -- 注意先把之前同名的外键删除
    ALTER TABLE news
    ADD CONSTRAINT cateId_fk_newsCate FOREIGN KEY(cateId) REFERENCES news_cate(id)
    ON DELETE CASCADE ON UPDATE CASCADE;
    
    -- 尝试更新父表news_cate
    UPDATE news_cate SET id=11 WHERE id=1;
    

    我们可以发现上面的操作中,我们仅仅对父表进行了更新,但是父表和子表同时进行了更新

    SELECT * FROM news_cate;
    +----+----------+----------+
    | id | cateName | cateDesc |
    +----+----------+----------+
    |  2 | 国际新闻 ||
    |  3 | 娱乐新闻 ||
    |  4 | 体育新闻 ||
    | 11 | 国内新闻 ||
    +----+----------+----------+
    
    SELECT * FROM news;
    +----+-------+---------+--------+
    | id | title | content | cateId |
    +----+-------+---------+--------+
    |  1 | a1    | aaaa1   |     11 |
    |  2 | a2    | aaaa2   |     11 |
    |  3 | a3    | aaaa3   |      4 |
    |  4 | a4    | aaaa4   |      2 |
    |  5 | a5    | aaaa5   |      3 |
    +----+-------+---------+--------+
    
    -- 尝试删除父表中的记录
    DELETE FROM news_cate WHERE id=2;
    
    SELECT * FROM news_cate;
    +----+----------+----------+
    | id | cateName | cateDesc |
    +----+----------+----------+
    |  3 | 娱乐新闻 ||
    |  4 | 体育新闻 ||
    | 11 | 国内新闻 ||
    +----+----------+----------+
    
    SELECT * FROM news;
    +----+-------+---------+--------+
    | id | title | content | cateId |
    +----+-------+---------+--------+
    |  1 | a1    | aaaa1   |     11 |
    |  2 | a2    | aaaa2   |     11 |
    |  3 | a3    | aaaa3   |      4 |
    |  5 | a5    | aaaa5   |      3 |
    +----+-------+---------+--------+
    

    为什么需要外键约束?

    -- 创建新闻分类表
    CREATE TABLE IF NOT EXISTS news_cate(
    	id TINYINT KEY AUTO_INCREMENT COMMENT '编号',
        cateName VARCHAR(50) NOT NULL COMMENT '分类名称',
        cateDesc VARCHAR(100) NOT NULL DEFAULT '无' COMMENT '分类描述'
    );
    INSERT news_cate(cateName)
    VALUES('国内新闻'),
    ('国际新闻'),
    ('娱乐新闻'),
    ('体育新闻');
    
    -- 创建新闻表
    CREATE TABLE IF NOT EXISTS news(
    	id INT KEY AUTO_INCREMENT COMMENT '编号',
        title VARCHAR(100) NOT NULL UNIQUE COMMENT '新闻标题',
        content VARCHAR(1000) NOT NULL COMMENT '新闻内容',
        cateId TINYINT NOT NULL COMMENT '新闻所属分类编号'
    );
    INSERT news(title,content,cateId)
    VALUES('a1','aaaa1',1),
    ('a2','aaaa2',1),
    ('a3','aaaa3',4),
    ('a4','aaaa4',2),
    ('a5','aaaa5',3);
    
    -- 插入一个错误数据
    INSERT news(title,content,cateId) VALUES('a6','aaaa6',45);
    

    **问题1:**对于上面的这个错误数据,也就是脏数据,在news_cate中并没有对用的新闻种类与它的caseId对应,这显然是不合适的。

    -- 查询news id,title,content
    -- news_cate cateName
    SELECT n.id,n.title,n.content,nc.cateName
    FROM news AS n
    INNER JOIN news_cate AS nc
    ON n.cateId=nc.id;
    
    +----+-------+---------+----------+
    | id | title | content | cateName |
    +----+-------+---------+----------+
    |  1 | a1    | aaaa1   | 国内新闻 |
    |  2 | a2    | aaaa2   | 国内新闻 |
    |  3 | a3    | aaaa3   | 体育新闻 |
    |  4 | a4    | aaaa4   | 国际新闻 |
    |  5 | a5    | aaaa5   | 娱乐新闻 |
    +----+-------+---------+----------+
    

    **问题2:**假如这个时候我们将news_cate下的国际新闻删除

    DElETE FROM news_cate WHERE id=2;
    

    但是对于news表中的新闻来说,它的caseId还是有2的,那么也就缺少了对应的caseId,这也显然是不合适的。

    针对上面两个问题,我们就需要使用我们的外键约束。

    展开全文
  • SQL主键约束和外键约束

    千次阅读 2018-01-17 10:45:06
    主键约束 SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 CREATE TABLE ...

    主键约束

    SQL PRIMARY KEY 约束

    PRIMARY KEY 约束唯一标识数据库表中的每条记录。

    主键必须包含唯一的值。

    主键列不能包含 NULL 值。

    每个表都应该有一个主键,并且每个表只能有一个主键。

    CREATE TABLE 时的 SQL PRIMARY KEY 约束

    下面的 SQL 在 “Persons” 表创建时在 “P_Id” 列上创建 PRIMARY KEY 约束:

    MySQL:

    CREATE TABLE Persons
    
    (
    
    P_Id int NOT NULL,
    
    LastName varchar(255) NOT NULL,
    
    FirstName varchar(255),
    
    Address varchar(255),
    
    City varchar(255),
    
    PRIMARY KEY (P_Id)
    
    )

    SQL Server / Oracle / MS Access:

    CREATE TABLE Persons
    
    (
    
    P_Id int NOT NULL PRIMARY KEY,
    
    LastName varchar(255) NOT NULL,
    
    FirstName varchar(255),
    
    Address varchar(255),
    
    City varchar(255)
    
    )

    多个主键约束

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

    MySQL / SQL Server / Oracle / MS Access:

    CREATE TABLE Persons
    
    (
    
    P_Id int NOT NULL,
    
    LastName varchar(255) NOT NULL,
    
    FirstName varchar(255),
    
    Address varchar(255),
    
    City varchar(255),
    
    CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
    
    )

    注释:在上面的实例中,只有一个主键 PRIMARY KEY(pk_PersonID)。然而,pk_PersonID 的值是由两个列(P_Id 和 LastName)组成的。

    外键约束

    SQL FOREIGN KEY 约束

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

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

    “Persons” 表:
    这里写图片描述
    “Orders” 表:
    这里写图片描述
    请注意,”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 约束

    下面的 SQL 在 “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)
    
    )
    展开全文
  • 外键的配置1)先创建一个主表,代码如下:#创建表student,并添加各种约束create table student(id int primary key , #主键约束name varchar(20) , #唯一约束age int NOT NULL, #非空约束sex va...

    1.外键的作用,主要有两个:

    一个是让数据库自己通过外键来保证数据的完整性和一致性

    一个就是能够增加ER图的可读性

    2.外键的配置

    1)先创建一个主表,代码如下:

    #创建表student,并添加各种约束

    create table student

    (

    id int primary key , #主键约束

    name varchar(20) , #唯一约束

    age int NOT NULL, #非空约束

    sex varchar(2) ,

    address varchar(20) default '重庆' #默认约束

    ) ;

    在通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:

    #创建分数表

    create table score

    (

    id int primary key ,

    sid int ,

    china int ,

    history int,

    english int,

    constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接

    ) ;

    创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表

    删除外键:

    alter table drop foreign key '外键名'.

    注意:

    只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除

    如何在MySQL中设置外键约束

    引用:http://blog.sina.com.cn/s/blog_53729e4601011wja.html MySql外键设置详解   (1) 外键的使用: 外键的作用,主要有两个:    一个是 ...

    如何在MySQL中设置主从复制

    mysql主从同步定义 主从同步机制 配置主从同步 配置主服务器 配置从服务器 使用主从同步来备份 使用mysqldump来备份 备份原始文件 主从同步的小技巧 排错 Slave_IO_Running ...

    MySQL基础9-主键约束、外键约束、等值连接查询、一对一和多对多关系

    1.主键约束和外键约束 外键约束 * 外键必须是另一表的主键的值(外键要引用主键!) * 外键可以重复 * 外键可以为空 * 一张表中可以有多个外键! 概念模型在数据库中成为表 数据库表中的多对一关系 ...

    在MySQL中设置事务隔离级别有2种方法:

    在MySQL中设置事务隔离级别有2种方法: 1 在my.cnf中设置,在mysqld选项中如下设置 [mysqld] transaction-isolation = READ-COMMITTED 2 ...

    存储引擎,MySQL中的数据类型及约束

    存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 ​ Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 ​ 支持事务, ...

    Oracle数据库,非空约束、主键约束、外键约束、唯一约束

    非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...

    Mysql中unique与primary约束的区别分析(转)

    本文章来给大家介绍在mysql中unique与primary约束的区别分析,unique与primary是我们在创建mysql时常用的类型了,下面我来给大家介绍介绍.   定义了UNIQUE约束的字段 ...

    如何在MySQL中获得更好的全文搜索结果

    如何在MySQL中获得更好的全文搜索结果 很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录.在后台,这些程序使用在一个SELECT 查询中的LIKE语 ...

    如何在MySQL中查询每个分组的前几名【转】

    问题 在工作中常会遇到将数据分组排序的问题,如在考试成绩中,找出每个班级的前五名等. 在orcale等数据库中可以使用partition语句来解决,但在mysql中就比较麻烦了.这次翻译的文章就是专门 ...

    随机推荐

    Android面试一天一题(1Day)

    写在前面 该博客思路源于在简书看到goeasyway博主写的Android面试一天一题系列,无copy之意,仅为让自己总结知识点,成长一点点.先感谢各位大神的无私分享~! 关于题目,大部分则出自And ...

    矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

    加密解密(11)HMAC-在sha1,md5基础上加密

    HMAC: Hash-based Message Authentication Code http://baike.sogou.com/v10977193.htm http://www.baike.c ...

    Connect them

    zoj3204: 最小生成树,要求最小字典序的解. 用kruscal算法,先排序,输出的时候也要排序. /* zoj3204 解题思路: 赤裸裸的最小生成树.只是要求输出字典序最小的连接方案. 所以在 ...

    【Linux命令】mysql数据库常用操作命令

    #数据库操作: #建立数据库 create database data_name #删除数据库 drop database data_name #查看: show databases; #表操作: # ...

    bzoj-1834 network 网络扩容 【网络流】

    这题就是复习下网络流. #include #define rep(i, a, b) for (int i = a; i <= b; i++) #def ...

    index&lowbar;init&lowbar;oprions&period;go

    {         options.DocCacheSize = defaultDocCacheSize     } }

    【尺取法】Jurisdiction Disenchantment

    [尺取法]Jurisdiction Disenchantment PROBLEM 时间限制: 1 Sec 内存限制: 128 MB 题目描述 The Super League of Paragons ...

    &period;net中使用 道格拉斯-普特 抽希轨迹点

    Douglas一Peukcer算法由D.Douglas和T.Peueker于1973年提出,简称D一P算法,是目前公认的线状要素化简经典算法.现有的线化简算法中,有相当一部分都是在该算法基础上进行改进 ...

    Xunit和Nunit的区别

    https://www.cnblogs.com/Leo_wl/p/5727712.html 舍弃Nunit拥抱Xunit   前言 今天与同事在讨论.Net下测试框架的时候,说到NUnit等大多数测试 ...

    展开全文
  • SQL编程:外键约束

    千次阅读 2020-11-29 20:50:20
    外键约束 foreign key约束用于预防破坏表之间连接的行为,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。【主要目的是确保表的数据的完整性,唯一性】 主表删除某条记录时,从表中与之对应...
  • FOREIGN KEY约束添加规则1、外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列。2、如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用列中存在;否则,...
  • Java-mysql:外键约束

    2022-02-03 22:33:50
    外键约束
  • 外键 # 外键前戏 以创建一张员工表为例 表头内容包含: id name age dep_name dep_desc """ 缺陷: 1.表的重点不清晰 到底是员工表还是部门表 可以忽略 2.表中相关字段一直在重复存储 浪费存储空间 可以...
  • mysql 创建外键约束以及注意事项

    千次阅读 2021-12-06 10:48:33
    mysql 创建外键约束以及注意事项: 创建外键: 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码: @Override public void run() { ...
  • 参照完整性约束(外键约束(Foreign key)) 用户定义完整性约束 参照完整性 属于表间规则,用来保持表之间的关系,确保插入到表中的数据是有效的。 可以使用外键***foreign key*** 来实现 创建外键 问题:如果不加...
  • MySQL外键约束

    2021-06-16 14:22:05
    只有InnoDB的引擎才支持外键。 从表的外键必须是主表的唯一性索引,主键和外键的字段类型要相似,数值型类型要求一致,无符号也要要求一致,字符型长度可以不同,类型需要一致。 如果外键字段没有创建索引,...
  • mysql如何修改外键约束字段

    千次阅读 2022-02-17 10:44:40
    mysql如何修改外键约束字段
  • 外键约束FOREING KEY 外键约束FOREIGN KEY,保持数据一致性,完整性实现一对一或一对多关系。 (因为一个表只存一类信息。用外键来做参照,保证数据的一致性,可以减少数据冗余) 外键约束的要求: 数据表的存储...
  • 外键约束和表关系

    2021-03-10 16:54:59
    表关系数据存储问题:外键约束外键特点基础语法表和表之间的关系1对11对多,多对1多对多自关联 今天主要总结一下关于mysql中表和表之间的关系和约束语法 数据存储问题: 数据冗余 引发问题: 增删改异常和数据...
  • Mysql约束详解什么是约束约束的分类非空约束唯一性约束主键约束外键约束检查约束 什么是约束 约束(constraint),在创建表的时候,我们可以给表中字段加一些约束,来保证表中数据的完整性,可靠性。 约束的分类 ...
  • -- 该表的id 是别的表的...先把外键约束设置失效,中间做更新操作,操作好又把外键约束还原 SET FOREIGN_KEY_CHECKS = 0; update tableName set id=100333 where id=100339; SET FOREIGN_KEY_CHECKS = 1; ...
  • 【IT168 文档】如今,许多关系型数据库管理系统都提供了外键约束这一强大的功能特性,它能够帮助我们自动地触发指定的动作,诸如删掉、更新数据库表的记录等,从而维护各数据库表之间预定义的关系。本文将演示如何在...
  • Loopback4 PostgreSQL 外键约束bug, 运行 npm run migrate 进行迁移时, 报 Cannot migrate database schema error: 在外键约束中的关联字段 “todoListId” 不存在 的错误, 建议: 将外键名的值改为全小写
  • 外键约束 foreign key 描述两张表之间的关系 格式:foreign key(当前的主键) references 对方表名(对方表的主键) 注意:子表主键字段的数据要从主表内取,删除主表的记录需要先删除子表的数据 索引 index 好处...
  • E-R 图 (实体关系模型)E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一...
  • 数据库备份(简单谈谈方案,后面抽空详细描述一下场景) 一种是使用命令定期备份到本地或者服务器,缺点是如果服务器在执行命令之前宕机,只能回复上一次备份的数据,上一次到宕...外键约束场景:如果两张表的数据“感
  • 文章目录1、检查约束(check、ck)1.1 范例1:设置检查约束1.2 范例2:保存正确的数据1.3 范例3:保存错误的数据2、外键约束(foreign key、fk)2.1 范例1:初期设计 --不使用外键2.2 范例2:增加正确数据2.3 范例3:...
  • 主键约束,外键约束 主键约束(primary key,简称PK)的相关术语: 主键约束:一种约束 主键字段:该字段上添加了主键约束 主键值:主键字段的每一个值都叫主键值 1.什么是主键约束(重点需掌握) 主键值是每一行...
  • oracle外键约束

    2021-05-05 03:08:45
    DELETE * ERROR at line 1: ORA-02292: integrity constraint(HR.MAIN_ID_CONS) violated - child record found 测试完毕后,删除外键约束 ALTER TABLE test_subDROP CONSTRAINT main_id_cons;...
  • 而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作。这篇简单描述一下SET TO NULL操作。上一篇描述了Oracle外键处理默认操作:No Action,这里简单介绍一下SET TO NULL操作。还是...
  • MySQL外键约束注意事项

    千次阅读 2016-07-18 11:24:16
    MySQL外键约束注意事项 MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ....
  • 约束 * 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 * 分类: 1. 主键约束:primary key 2.... 3.... 4. 外键约束:foreign key * 非空约束:not null,值不能为null 1....
  • MySQL中使用外键约束的注意事项

    千次阅读 2016-05-27 11:47:35
    1、父表和子表必须使用相同的存储引擎,而且禁止使用临时表。 2、数据表的存储引擎只能为InnoDB。 3、外键列与参照列的数据类型必须相同。 4、外键列与参照列必须创建索引。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,068
精华内容 14,027
关键字:

外键约束的描述