delete 和 join 理解使用

发布时间 2023-10-01 23:53:57作者: yimming

delete 和 join

先来两个语句:

DELETE studentgrade
FROM course
WHERE course.course_name='数据结构' and studentgrade.course_id=course.course_id

DELETE studentgrade
FROM course
join StudentGrade on studentgrade.course_id=course.course_id
WHERE course.course_name='数据结构'

这两个是等效的,都是从studentgrade表中删除那些选了’数据结构’课程的学生的成绩。它们的区别是第一个语句使用了隐式连接,第二个语句使用了显式连接。隐式连接是在WHERE子句中指定连接条件,显式连接是在FROM子句中使用JOIN关键字指定连接条件。一般来说,推荐使用显式连接,语法更清晰

记住delete的from后面接的表(暂记为tf,包括join连接成的大表),是来帮助delete后面接的表(暂记为td,td可以是多个表)定位行数据的,td即是要删除数据的表。
tf表通过where筛选后得到的数据,通过主键找到td表要删除的行数据

以上是帮助理解使用,不确定是底层的情况