MySQL 主外键
MySQL 主外键是一种关系型数据库中非常重要的概念,用于建立表与表之间的关联性,是保证数据库完整性和有效性的关键因素。在MySQL中,主键和外键都是通过列约束来实现的。
主键
主键是唯一标识一个表中每行记录的列或列的集合。主键的值在整个表中必须是唯一的,并且不能为NULL。在MySQL中,一个表只能有一个主键约束。主键用于查找和链接其他表中的数据。
在MySQL中,我们可以通过以下方式创建主键:
#### 方式一:在创建表时指定主键
```
CREATE TABLE students (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
#### 方式二:在创建表后添加主键约束
ALTER TABLE students ADD PRIMARY KEY (id);
#### 方式三:直接在列定义中指定主键
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
age INT UNSIGNED NOT NULL
外键
外键是一个列或列的集合,它引用了另一个表中的主键或唯一键。外键的存在可以保证表与表之间的完整性,确保了相关数据的正确性和一致性。
在MySQL中,我们可以通过以下方式创建外键:
#### 方式一:在创建表时指定外键
CREATE TABLE orders (
customer_id INT UNSIGNED NOT NULL,
product_id INT UNSIGNED NOT NULL,
price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id),
FOREIGN KEY (product_id) REFERENCES products(id)
#### 方式二:在创建表后添加外键约束
ALTER TABLE orders ADD FOREIGN KEY (customer_id) REFERENCES customers(id);
ALTER TABLE orders ADD FOREIGN KEY (product_id) REFERENCES products(id);
外键约束也可以指定ON DELETE和ON UPDATE属性来控制在主表中删除或更新数据时从表中的数据如何处理。例如:
FOREIGN KEY (customer_id) REFERENCES customers(id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(id) ON UPDATE CASCADE
以上代码中,当customers表中的主键被删除时,与之相关的orders表中的记录也将被删除(ON DELETE CASCADE)。当products表中的主键被更新时,与之相关的orders表中的记录也将被更新(ON UPDATE CASCADE)。
代码示例
以下是一个使用主外键的完整MySQL表结构示例:
CREATE TABLE customers (
CREATE TABLE products (
name VARCHAR(50) NOT NULL,
price DECIMAL(10,2) NOT NULL
以上示例中,customers和products表都定义了一个自增的主键id。orders表中的customer_id和product_id列都是外键,分别引用了customers表和products表中的主键id。
MySQL主外键是关系型数据库中非常重要的概念。通过使用主外键来建立表与表之间的关系,可以有效地保证数据库的完整性和有效性,确保数据的一致性和正确性。在MySQL中,我们可以通过添加列约束来定义主键和外键,还可以指定ON DELETE和ON UPDATE属性来控制在主表中删除或更新数据时从表中的数据如何处理。
网友留言(0)