精华内容
下载资源
问答
  • mysql主外键关联
    2022-06-13 19:14:43

    取消外键约束

    SET FOREIGN_KEY_CHECKS = 0

    恢复外键约束

    SET FOREIGN_KEY_CHECKS = 1

    更多相关内容
  • mySql主外键关联例子

    2009-12-07 16:26:03
    知识点很简单,但是语句总忘,在这里写一个小例子,有助于大家记忆。mySql主外键关联例子
  • MySQL外键关联操作

    千次阅读 2022-03-25 16:24:30
    注意,MySQL 的 InnoDB 表引擎才支持外键关联,MyISAM 不支持。MySQL 还支持手动打开或关闭外键约束:SET FOREIGN_KEY_CHECKS = 0/1;。 使用外键约束最大的好处在于 MySQL 帮助我们完成数据的一致性检查。当我们...

    MySQL 的外键约束

    注意,MySQL 的 InnoDB 表引擎才支持外键关联,MyISAM 不支持。MySQL 还支持手动打开或关闭外键约束:SET FOREIGN_KEY_CHECKS = 0/1;。

    使用外键约束最大的好处在于 MySQL 帮助我们完成数据的一致性检查。当我们使用默认的外键类型 RESTRICT 时,在创建、修改或者删除记录时都会检查引用的合法性。

    假设我们的数据库中包含 posts(id, author_id, content) 和 authors(id, name) 两张表,在执行如下所示的操作时都会触发数据库对外键的检查:

    向 posts 表中插入数据时,检查 author_id 是否在 authors 表中存在;

    修改 posts 表中的数据时,检查 author_id 是否在 authors 表中存在;

    删除 authors 表中的数据时,检查 posts 中是否存在引用当前记录的外键;

    作为专门用于管理数据的系统,数据库与应用服务相比能够更好地保证完整性,而上述的这些操作都是引入外键带来的额外工作,不过这也是数据库保证数据完整性的必要代价。上述的这些分析都是理论上的定性分析,我们其实可以简单地定量分析一下引入外键对性能的影响。

    创建表时定义外键(References,参照)

    在 CREATE TABLE 语句中,通过 FOREIGN KEY 关键字来指定外键,具体的语法格式如下:

    [CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]
    

    示例:

    # 部门表 tb_dept1(主表)
    CREATE TABLE tb_dept1
    (
    	id INT(11) PRIMARY KEY,
    	name VARCHAR(22) NOT NULL,
    	location VARCHAR(50)
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    
    # 员工表 tb_emp6(从表),创建外键约束,让 deptId 作为外键关联到 tb_dept1 的主键 id。
    CREATE TABLE tb_emp6
    (
    	id INT(11) PRIMARY KEY,
    	name VARCHAR(25),
    	deptId INT(11),
    	salary FLOAT,
    	CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    

    NOTE:从表的外键关联的必须是主表的主键,且主键和外键的数据类型必须一致。

    以上语句执行成功之后,在表示 tb_emp6 上添加了名称为 fk_emp_dept1 的外键约束,外键名称为 deptId,其依赖于表 tb_dept1 的主键 id。

    查看主表的约束信息

    MariaDB [test_db]> select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME='tb_dept1'\G;
    *************************** 1. row ***************************
               CONSTRAINT_CATALOG: def
                CONSTRAINT_SCHEMA: test_db
                  CONSTRAINT_NAME: fk_emp_dept1
                    TABLE_CATALOG: def
                     TABLE_SCHEMA: test_db
                       TABLE_NAME: tb_emp6
                      COLUMN_NAME: deptId
                 ORDINAL_POSITION: 1
    POSITION_IN_UNIQUE_CONSTRAINT: 1
          REFERENCED_TABLE_SCHEMA: test_db
            REFERENCED_TABLE_NAME: tb_dept1
           REFERENCED_COLUMN_NAME: id
    1 row in set (0.00 sec)
    

    修改原有表的外键约束

    外键约束也可以在修改表时添加,但是添加外键约束的前提是:从表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。

    在修改数据表时添加外键约束的语法格式如下:

    ALTER TABLE <数据表名> ADD CONSTRAINT <外键名> FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
    

    示例:修改数据表 tb_emp2,将字段 deptId 设置为外键,与数据表 tb_dept1 的主键 id 进行关联。

    # 创建 tb_emp2(从表)
    CREATE TABLE tb_emp2
    (
    	id INT(11) PRIMARY KEY,
    	name VARCHAR(25),
    	deptId INT(11),
    	salary FLOAT
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    
    MariaDB [test_db]> desc tb_emp2;
    +--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id     | int(11)     | NO   | PRI | NULL    |       |
    | name   | varchar(25) | YES  |     | NULL    |       |
    | deptId | int(11)     | YES  |     | NULL    |       |
    | salary | float       | YES  |     | NULL    |       |
    +--------+-------------+------+-----+---------+-------+
    
    # 添加外键约束
    ALTER TABLE tb_emp2 ADD CONSTRAINT fk_tb_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id);
    
    MariaDB [test_db]> desc tb_emp2;
    +--------+-------------+------+-----+---------+-------+
    | Field  | Type        | Null | Key | Default | Extra |
    +--------+-------------+------+-----+---------+-------+
    | id     | int(11)     | NO   | PRI | NULL    |       |
    | name   | varchar(25) | YES  |     | NULL    |       |
    | deptId | int(11)     | YES  | MUL | NULL    |       |
    | salary | float       | YES  |     | NULL    |       |
    +--------+-------------+------+-----+---------+-------+
    
    MariaDB [test_db]> SHOW CREATE TABLE tb_emp2\G
    *************************** 1. row ***************************
           Table: tb_emp2
    Create Table: CREATE TABLE `tb_emp2` (
      `id` int(11) NOT NULL,
      `name` varchar(25) DEFAULT NULL,
      `deptId` int(11) DEFAULT NULL,
      `salary` float DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `fk_tb_dept1` (`deptId`),
      CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
    

    删除外键约束

    当一个表中不需要外键约束时,就需要从表中将其删除。外键一旦删除,就会解除主表和从表之间的关联关系。

    删除外键约束的语法格式如下所示:

    ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
    

    示例:删除数据表 tb_emp2 中的外键约束 fk_tb_dept1。

    ALTER TABLE tb_emp2 DROP FOREIGN KEY fk_tb_dept1;
    
    MariaDB [test_db]> SHOW CREATE TABLE tb_emp2\G
    *************************** 1. row ***************************
           Table: tb_emp2
    Create Table: CREATE TABLE `tb_emp2` (
      `id` int(11) NOT NULL,
      `name` varchar(25) DEFAULT NULL,
      `deptId` int(11) DEFAULT NULL,
      `salary` float DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `fk_tb_dept1` (`deptId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
    

    如果感觉小编写得不错,请素质三连:点赞+转发+关注。我会努力写出更好的作品分享给大家。更多JAVA进阶学习资料小编已打包好,可以关注私信找我领取哦

    展开全文
  • mysql外键关联

    千次阅读 2021-02-01 21:28:32
    主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。创建...

    主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性

    外键:是另一表的主键, 外键可以有重复的, 可以是空值,用来和其他表建立联系用的。所以说,如果谈到了外键,一定是至少涉及到两张表。

    创建外键的方式:

    方式一:表已经创建好了,继续修改表的结构来添加外键,代码如下:

    create table student(

    id int primary key auto_increment,

    name char(32) not null,

    sex char(32)

    );

    create table class(

    id int primary key auto_increment,

    name char(32) not null,

    age int,

    dept_id int

    );

    在上述的俩个已经创建好的表中,添加外键:

    alter table class add foreign key(dept_id) references student(id)

    alter table class:在从表class中进行操作;

    add foreign key (dept_id):将从表的字段dept_id添加为外键;

    references student(id):映射到主表studentt当中为id的字段

    方式一:在创建表的时候增加外键,代码如下create table student(

    id int primary key auto_increment,

    name char(32) not null,

    sex char(32)

    );

    create table class(

    id int primary key auto_increment,

    name char(32) not null,

    age int,

    dept_id int

    constraint FK_id foreign key(dept_id) references student(id) );格式:[CONSTRAINT symbol] FOREIGN KEY [id] (从表的字段1) REFERENCES tbl_name (主表的字段2)

    CONSTRAINT symbol:可以给这个外键约束起一个名字,有了名字,以后找到它就很方便了。如果不加此参数的话,系统会自动分配一个名字。

    FOREIGN KEY:将从表中的字段1作为外键的字段。

    REFERENCES:映射到主表的字段2。

    删除外键:

    alter table student drop foreign key 外键名;

    展开全文
  • Mysql 增加外键,删除主外键关联

    千次阅读 2018-03-14 13:19:26
    1.建表时增加外键2.建表完成过后,通过sql语句增加外键alter table table-name ...删除主外键关联表alter table table-name add constraint 外键名 foreign key(字段名) references 引用表明(字段名) ...

    1.建表时增加外键


    2.建表完成过后,通过sql语句增加外键

    1. alter table table-name add constraint 外键名 foreign key(字段名) references 引用表明(字段名)  

    3.删除主外键关联表

    alter table table-name add constraint 外键名 foreign key(字段名) references 引用表明(字段名) on delete cascade

    展开全文
  • mysql主外键建立心得

    2021-02-08 03:20:12
    mysql主主外键建立:(1)、确保参照的表和字段是存在的(2)、关联表必须是Innodb存储类型(3)、必须设置主关联表主键(4)、主键与外键数据类型和字符编码(unsigned)必须一致(5)、确保以上声明的句法是正确的附:mysql...
  • 当 你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的。像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql...
  • mysql外键约束的写法:“CREATE TABLE 表名(FOREIGN KEY 字段名 REFERENCES 表名 主键列)”。(推荐教程:mysql视频教程)mysql主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束...
  • 要求将满足某个条件的表和相关联的几个子表的数据全部删除,其实这个要求很简单,如果子表在创建外键的时候指定了ON DELETE CA条件:p(父表)没有ON DELETE CASCADEc(子表)mysql> delete a,b from p a,c b where...
  • MySQL 外键关联策略

    2021-04-19 08:31:50
    一个用户可有拥有多个订单,一个订单只能属于一个用户,一对多,在tb_order中使用外键user_id关联tb_user的id。当删除、更新tb_user中的主键时,与之关联的tb_order要受到影响,比如#tb_user中的一条记录1chy abcd#...
  • MySQL主外键设置

    2021-12-02 17:27:30
    Q:主外键的关系 pr:ALTER TABLE tb_UserAndRole ADD CONSTRAINT FK__tb_UandR_Role FOREIGN KEY (RoleID) references tb_Role(ID); pr:alert外键名,foreign key(外键字段)reference主表(主键名) pr:本表...
  • #外键关联规则 key fk_当前表_关联表 (当前表外键), constraint fk_当前表_关联表 foreign key (外键) references 关联表 (关联表主键) on delete cascade on update cascade #需要注意的点 表名是否对应 表的字段...
  • 有一个东西一直在我脑海中是个很烦的东西,但是这东西不搞清楚会阻碍自己的前进。...首先我么要搞明白,为什么要使用外键,比如有两张表(在最下面我会附上表的创建SQL语句,以及外键的添加和关联删除时候的语句...
  • 删除数据库的外键关联

    千次阅读 2021-01-19 03:50:14
    然而,在这个时候发现数据库共有近百张表,N张那么多有主要外键关联。简单的举个例子。我想要删一个商品分类,你就会发现分类关联着品牌,品牌关联着商品,商品关联着其它属性...等等等等等。所以,...
  • MySQL如何同时删除主外键关联的两张表中的数据_smile-yan的博客-CSDN博客_关联删除两张表的记录
  • Mysql基础增删改查,主外键关联

    万次阅读 2021-01-07 16:27:28
    章节导航Mysql基础入门创建新增删除修改查询数据类型主键外键数值计算关联查询 1.登录mysqlmysql -uroot -p 2.使用数据库: use 数据库名; 3.导入sql文件: souse 目录; 4.各个关键字的顺序:select 字段信息 ...
  • 使用navicat创建MySQL外键关联

    千次阅读 2020-12-22 14:27:14
    要在Mysql数据库平台建立外键关联,必须满足以下几个条件:1.两个表必须为 InnoDB 类型。2. 外键和被引用键必须是索引中的第一列,InnoDB 不会自动为外键和被引用键建立索引,必须明确创建它们。3. 外键与对应的被...
  • mysqlmysql主外键关系(详细精讲)

    千次阅读 多人点赞 2016-11-25 00:16:02
    mysqlmysql主外键关系(详细精讲) 作者:yjqyyjw 一、外键: 1、什么是外键 2、外键语法 3、外键的条件 4、添加外键 5、删除外键 1、什么是外键: 主键:是唯一标识一条记录,不能有重复...
  • MySQL数据库的多表查询以及外键约束

    千次阅读 2021-01-21 18:25:02
    原标题:MySQL数据库的多表查询以及外键约束来源:Java联盟https://mp.weixin.qq.com/s/QmbWy1OO2UDrRDnz7G9mZQ程序员共读整理发布,转载请联系作者获得授权看到好多伙伴留言~想要了解MySQL的多表查询~那么我们今天...
  • MySQL忽略外键关联

    千次阅读 2015-02-28 13:58:31
    在开发中经常涉及表结构/数据的修改,此时外键关联会给我们带来很大麻烦. 以下SQL语句可以暂时忽略外键关联: /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 重新修改表...
  • 匿名用户1级2018-06-03 回答13.1.2. ALTER TABLE语法 ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ... alter_specification: ADD [COLUMN] column_definition [FIRST | AFTER col_n...
  • 说个题外话,我从来没想过会被拼多多这款软件所魔怔,他的这种社交营销的能力,实在是太强了,在怂恿之下,开始给儿子拼个这个,...》,很有感触,在Oracle中,主外键关系,是看似简单,实则蕴含着很多的知识。和...
  • 第一种:(不要外键约束)手动删除外键约束;删除表数据第二种:(保留外键约束)SET FOREIGN_KEY_CHECKS = 0;TRUNCATE TABLE 表名;SET FOREIGN_KEY_CHECKS = 1;------------------------------------------------------...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,099
精华内容 15,639
关键字:

mysql主外键关联

mysql 订阅