您当前的位置: 站长圈 > 数据库技术

MySQL数据库查询——连接查询

来源:站长圈|0 作者:adminzzq 点击: 0
一、多表查询
多表查询就是把几个关系表连接到一个查询中。
用法:
1.在from子句中列出涉及到的每个关系表
2.在select和where子句中引用from子句中列出的表的字段
3.连接的条件写在where子句中
例:查询天天同学选学的课程名称
select student.学号,student.sname,课程.课程名称 from student,学生_学课,课程 where student.学号=学生_学课.student_id and 课程.id=学生_学课.学习课程 and student.sname='天天'
例:查询北京地区的老师的任课情况
select * from teacher,任课 where teacher.id=任课.任课老师id and teacher.taddress='北京'
select teacher.tname,teacher.taddress,任课.课程id from teacher,任课 where teacher.id=任课.任课老师id and teacher.taddress='北京'
select teacher.tname,teacher.taddress,课程.课程名称 from teacher,任课,课程 where teacher.id=任课.任课老师id and teacher.taddress='北京' and 任课.课程id=课程.id
 
二、连接查询
内连接 inner join
基本语法规则:select * from 表1 inner join 表2 on 表1.id=表2.id
外连接
左连接 left join
基本语法规则:select * from 表1 left join 表2 on 表1.id=表2.id
右连接 right join
基本语法规则:select * from 表1 right join 表2 on 表1.id=表2.id
 
例1:查询有学习成绩的学员的信息
使用内连接
SELECT * FROM student inner join 学生成绩 on student.学号=学生成绩.student_id
例2:学生表中有多少学员参加了学习
SELECT * FROM student left join 学生成绩 on student.学号=学生成绩.student_id
例3:有没有没报名就参加了学习的学员?
SELECT * FROM student right join 学生成绩 on student.学号=学生成绩.student_id 
例4:报名参加MYSQL数据库学习的学员信息
SELECT * FROM student right join 学生成绩 on student.学号=学生成绩.student_id where 学生成绩.mysql>0
SELECT student.*,学生成绩.mysql FROM student right join 学生成绩 on student.学号=学生成绩.student_id where 学生成绩.mysql>0
内连接是查询同时满足on子句条件的两个表中的信息
左连接以第一个表的信息为基准,查询第二个表,当第二个中没有满足on子句条件时,以NULL代替相应的记录
右连接以第二个表的信息为基准,查询第一个表,当第一个中没有满足on子句条件时,以NULL代替相应的记录
 
在一个inner join语句中可以嵌套多个join语句
在一个JOIN语句中ON子句可以连接多个条件,多个条件之间用and连接。