mysql的外键

将一个大的表拆分成两个表  一个是主表 一个是从表

主表中的一个字段,必须是唯一的,可以作为表二的外键,可以不是表2的主键 但必须是唯一的


外键保证了数据的唯一性与完整性


当主表想要删除一条数据,那么必须检查表二中没有对该数据的引用,否则不允许删除;又或者在表二中添加一条数据,那么也必须保证表一中可以找到该数据

### 定义 MySQL 中的一个字段,它引用了另一个中的主或唯一。定义约束的基本语法如下: ```sql [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (col_name, ...) REFERENCES tbl_name (col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] ``` 其中,`CONSTRAINT` 是可选的,用于指定约束的名称;`FOREIGN KEY` 用于指定字段;`REFERENCES` 用于指定引用的和字段;`ON DELETE` 和 `ON UPDATE` 用于指定在引用的中删除或更新记录时的操作 [^1]。 ### 使用方法 以下是一个简单的使用的示例。首先创建两个 `categories` 和 `products`,并在 `products` 中定义一个引用 `categories` 的主: ```sql -- 创建 categories CREATE TABLE categories ( id INT PRIMARY KEY, name VARCHAR(50) ); -- 插入数据到 categories INSERT INTO categories VALUES (1, 'SQL Server'), (2, 'Oracle'), (3, 'PostgreSQL'), (4, 'MySQL'), (5, 'SQLite'); -- 创建 products ,并定义 CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(50), category_id INT, FOREIGN KEY (category_id) REFERENCES categories(id) ); ``` 在这个示例中,`products` 的 `category_id` 字段是一个,它引用了 `categories` 的 `id` 字段 [^3][^4]。 ### 作用 - **数据完整性**:可以确保数据的一致性和完整性。例如,在上面的示例中,如果尝试在 `products` 中插入一个 `category_id` 不存在于 `categories` 中的记录,MySQL 会拒绝该操作,从而避免出现无效的引用。 - **关联**:用于建立之间的关系,使得可以通过关联来查询和操作相关的数据。例如,可以通过 `products` `category_id` 关联 `categories` ,查询某个分类下的所有产品。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值