多表删除:
先进行查询操作
删除没有学习任何课程的同学
学生表,课程表
select * from stu as s
left join stu_lesson as sl
on s.id = sl.stu_id
where sl.stu_id is null
然后把这个表删除
把 select * 换成 delete s //s表示最后合并后的这个表,最后将这个表中没有学习任何课程的同学删除
多对多关系
一个学生可以参加多个课程,一个课程可以对应多个学生,
所以二者之间的关系需要中间表进行连接 stu_lesson
哪个班的同学更喜欢php
班级表,学生表,课程表,stu_lesson表
select * from class as c
inner join stu as s
on c.id = s.class_id
inner join stu_lesson as sl
on s.id = sl.stu_id
inner join lesson as l
on sl.lesson_id = l.id;
在将select * 换成查询条件 select c.id
外连接
相比inner join 来说 left join和right join 可以合并不符合匹配条件的null信息,提供更多select结果
自连接,自己连接自己
对同一个表设置不同的别名
查找学生表中,和李明同一班的学生
select * from stu as s1
inner join stu as s2
on s1.class = s2.class
where s1.name = '李明'
and s2.name !='李明';