MySQL外键

本文介绍了MySQL中关于外键的基本概念及使用方法。包括外键的支持版本、数据类型要求、外键的作用及其创建方式等。同时详细说明了通过CREATETABLE和ALTERTABLE定义外键的语法。
MySQL只在v3.23.34版本以后才引入外键,并且只有INNODB引擎支持外键 建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。 外键作用: 使两张表形成关联,外键只能引用外表中的列的值。 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) 事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action 可以通过 CREATE TABLE 或者 ALTER TABLE 来定义外键。 CREATE TABLE 语法: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,…)] create_definition: column_definition | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,…) [reference_definition] column_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT ’string’] [reference_definition] index_col_name: col_name [(length)] [ASC | DESC] reference_definition: REFERENCES [...]
### 定义 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、付费专栏及课程。

余额充值