MySQL外键约束创建及删除创建外键定义 :
CREATE TABLE categories (
category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,
name varchar(30) NOT NULL,
PRIMARY KEY(category_id)
) ENGINE=INNODB;
INSERT INTO categories VALUES (1, ‘SQL Server’), (2, ‘Oracle’), (3, ‘PostgreSQL’), (4, ‘MySQL’), (5, ‘SQLite’);
CREATE TABLE members (
member_id INT(11) UNSIGNED NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY(member_id)
) ENGINE=INNODB;
CREATE TABLE articles (
article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
category_id tinyint(3) unsigned NOT NULL,
member_id int(11) unsigned NOT NULL,
INDEX (category_id),
FOREIGN KEY (category_id) REFERENCES categories (category_id), CONSTRAINT fk_member FOREIGN KEY (member_id) REFERENCES members (member_id),
PRIMARY KEY(article_id)
) ENGINE=INNODB;
categories.category_id和articles.category_id、members.member_id和articles.member_id已经建立外键关系,只有articles.category_id的值存在与categories.category_id表中并且articles.member_id的值存在与members.member_id表中才会允许被插入或修改。:
删除外键定义 :
定义外键的时候articles.member_id外键比articles.category_id子句多了一个CONSTRAINT fk_member。这个fk_member就是用来删除外键定义用的:
ALTER TABLE articles DROP FOREIGN KEY fk_member;
这样articles.member_id外键定义就被删除
如果定义时没有指定CONSTRAINT fk_symbol(即外键符号)时MySQL会自己创建一个,可以通过以下命令查看:
SHOW CREATE TABLE articles;
+———-+————————————+ | Table | Create Table | +———-+————————————+ | articles | CREATE TABLE `articles` ( `article_id` int(11) unsigned NOT NULL auto_increment, `category_id` tinyint(3) unsigned NOT NULL, `member_id` int(11) unsigned NOT NULL, `title` varchar(255) NOT NULL, PRIMARY KEY (`article_id`), KEY `category_id` (`category_id`), KEY `member_id` (`member_id`), CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +———-+————————————+ 1 row in set (0.01 sec)
可以看出articles.category_id的外键符号为articles_ibfk_1,因此就可以执行以下命令删除外键定义:
ALTER TABLE articles DROP FOREIGN KEY articles_ibfk_1;
分享到:
相关推荐
除了创建外键约束之外,MySQL还提供了多种管理外键约束的方法,包括添加、删除和修改外键约束等操作。 1. **添加外键约束**:如果在创建表时未定义外键约束,可以通过`ALTER TABLE`语句添加外键约束。 ```sql ...
MySQL 外键的定义、作用、添加和删除 外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立和加强两个表数据之间的连接。例如,在学生档案和成绩单两张表中,如果...
在数据库设计中,数据完整性是至关...总结,外键约束是MySQL数据库设计中的关键组成部分,它保证了表之间的关联性,维持数据的完整性和一致性。理解并正确使用外键约束,对于构建健壮、可维护的数据库系统至关重要。
在使用ALTER TABLE语句时,如果需要删除已经存在的外键,不能直接使用DROP FOREIGN KEY,而要先通过SHOW CREATE TABLE查看外键的确切名称,然后使用ALTER TABLE语句配合DROP FOREIGN KEY命令来删除指定的外键约束。...
5. **修改外键**:如果需要修改外键,需要先删除原有的外键约束,然后再重新添加新的外键约束。 通过以上详细介绍,我们可以看到外键在 MySQL 数据库设计中的重要作用以及如何正确地使用外键来维护数据的完整性和...
MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持); 2.外键列必须建立了索引,...
MySQL外键约束是数据库设计中的一个重要概念,它用于在两个表之间建立联系,确保数据的一致性和完整性。外键约束的使用确保了当一个表(父表)中的数据发生更改时,与其关联的另一个表(子表)的相关数据也会相应...
这构成了一个典型的外键约束场景。 #### 创建表结构 首先,我们来创建 `parts` 表: ```sql CREATE TABLE parts ( model VARCHAR(20) NOT NULL, -- 其他字段定义 ); ``` 接着,创建 `pc` 表: ```sql CREATE ...
同时,外键约束也可以控制级联操作,如级联删除或级联更新,使得当主键表中的数据发生变化时,关联的外键表中的数据能够相应地更新或删除。 总的来说,主键和外键在数据库设计中起着至关重要的作用,它们确保了数据...
- 使用`FOREIGN KEY`关键字来定义外键约束。 3. **示例语法** ```sql CREATE TABLE Orders ( OrderID int PRIMARY KEY, CustomerID int, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ); ``...
MySql 外键设置详解 MySql 外键设置详解 一、外键的使用 外键是数据库中的一种约束,用于确保数据的一致性和完整性。外键的作用主要有两个:一...但是,需要注意创建外键时的注意事项,并且正确地使用外键约束类型。
定义外键约束 在子表中定义外键时,需要指定外键的名称、引用的字段以及被引用的表和字段。 示例代码如下: ```sql ALTER TABLE pc ADD CONSTRAINT fk_cpu_model FOREIGN KEY (cpumodel) REFERENCES parts(model...
这个“mysql外键教程.zip”压缩包包含了关于MySQL外键使用的多个方面,下面将详细解释这些知识点。 首先,我们了解下外键的基础知识。外键(Foreign Key)是数据库设计中的一个重要概念,它是一个字段或者一组字段...
### MySQL外键详解 #### 一、外键概念与作用 **外键(Foreign Key)** 是数据库设计中用于确保数据完整性和关联性的一种机制。它通过定义一个表中的列或列组合,来引用另一个表的主键或唯一键,以此来建立两个表...
`teachers`表包含教师ID和教师名称,`students`表包含学生ID、教师ID和学生名称,并定义了一个外键约束`fk_students_teacherID`,它关联`teacherID`字段,当主表中的记录被删除或更新时,可以选择级联操作(如`ON ...
### MySQL外键详解 #### 一、外键的基本概念与作用 外键(Foreign Key)是一种重要的数据库约束机制,主要用于确保数据库中多个表之间数据的一致性和完整性。它通过引用另一个表的主键来实现这一目标。外键的存在...
数据库新手入门之MySQL中如何定义外键 本文介绍了在MySQL数据库中定义数据表、设置索引、定义外键、级联等操作。下面将详细说明标题和描述中所说的知识点。 首先,文章中提到了创建数据表的过程,例如创建parts表...
这样,当尝试删除一个客户时,如果存在与其关联的订单,数据库会根据定义的外键约束规则拒绝删除操作,除非你选择了`CASCADE`,这样会同时删除相关订单。 总结起来,MySQL的外键功能允许你在多个表之间建立关系,...