sql中使用foreign key与之配合的语句
Foreign key是一种用于在关系型数据库中建立表与表之间关系的约束。它指定了一个表中的一个或多个列在另一个表中的列值必须存在或符合某种条件。在SQL中,我们可以使用ALTER TABLE语句来创建外键约束。
1. 创建表
首先,我们需要创建两个表,一个作为主表,一个作为从表。以学生和课程为例,创建两个表:student和course。
sql
CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);
CREATE TABLE course (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    student_id INT,
    FOREIGN KEY (student_id) REFERENCES student(id)
);
2. 插入数据
接下来,我们向这两个表中插入一些数据。
sql
INSERT INTO student (id, name)
VALUES (1, 'John');
INSERT INTO course (id, name, student_id)
VALUES (1, 'Math', 1);
INSERT INTO course (id, name, student_id)
VALUES (2, 'English', 1);
3. 查询数据
我们可以使用SELECT语句来查询这两个表中的数据。通过使用JOIN语句,我们可以将两个表连接起来,并获取学生所选课程的信息。
sql
SELECT student.name, course.name
FROM student
JOIN course ON student.id = course.student_id;
以上查询将返回以下结果:
name      name
John      Math
John      English
4. 更新数据
如果我们在学生表中更新了某个学生的ID,那么与之相关的外键约束将会起作用。如果这个学生在课程表中有关联的记录,那么更新操作将会被拒绝。
sql
UPDATE student
SET id = 2
WHERE id = 1;
这个更新操作将会失败并返回一个错误,因为在course表中有一个外键约束依赖于student表的id列。
5. 删除数据
同样地,如果我们在学生表中删除了某个学生的记录,那么与之相关的外键约束将会起作用。如果这个学生在课程表中有关联的记录,那么删除操作将会被拒绝。
sql
DELETE FROM student
WHERE id = 1;
这个删除操作将会失败并返回一个错误,因为在course表中有一个外键约束依赖于student表的id列。
6. 外键约束的类型
在上面的例子中,外键约束的类型是引用完整性约束,它需要被引用的列在引用表中存在相匹配的值。除了引用完整性约束,还有其他类型的外键约束。
- CASCADE(级联):当主表的记录被更新或删除时,从表中与之相关的记录也被更新或删除。
- SET NULL(设为NULL):当主表的记录被更新时,从表中与之相关的记录的外键列被设为NULL。
- SET DEFAULT(设为默认值):当主表的记录被更新时,从表中与之相关的记录的外键列被设为预定义的默认值。
要指定这些外键约束类型,我们可以在FOREIGN KEY子句后使用ON UPDATE和ON DELETE子句。
sql
CREATE TABLE course (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    student_id INT,
sql语句查询结果取反    FOREIGN KEY (student_id) REFERENCES student(id) ON UPDATE CASCADE ON DELETE SET NULL

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。