關于MySQL92和99 等值連接、非等值連接、自連接、外連接及多表查詢的代碼示例總結!
一. MySQL92語法
*1. 內連接 沒有關聯關系的資料是不在查詢范圍之內的
*
1)等值連接
– 查詢出101的班級資訊(并帶上該班級的所有學生資訊)
SELECT *FROM class,student
WHERE class.`id`=student.`clazz_id`
AND class.`name`='101';
– 查詢出rose的所有資訊(包括班級資訊)
SELECT *FROM class,student
WHERE class.`id`=student.`clazz_id`
AND student.`name`='rose';
2)三表查詢(多對多)
– 查詢出rose的個人資訊(包括其選修課程資訊)
SELECT *FROM student,course,course_student
WHERE student.`id`=course_student.`stu_id`
AND course.`id`=course_student.`cou_id`
AND student.`name`='rose';
– 查詢出java這門課的資訊(包括選該門課的學生)
SELECT * FROM student,course,course_student
WHERE student.`id`=course_student.`stu_id`
AND course.`id`=course_student.`cou_id`
AND course.`name`='hadoop';
3)一對一
– 查詢出孫儷的個人資訊(包括其丈夫的資訊)
SELECT * FROM husband,wife
WHERE wife.`wife_id`=husband.`wife_id`
AND wife.`wife_name`='孫儷';
– 查詢出所有班級的資訊(包括其學生的資訊)
SELECT * FROM class,student
WHERE class.`id`=student.`clazz_id`;
4)非等值連接
– 查詢出所有學生的資訊(包括他的年齡級別)
SELECT *FROM student,age_tb
WHERE student.`age`>=age_tb.`min`
AND student.`age`<age_tb.`max`;
5)自連接
– 查詢出北京市的資訊(包括其區的資訊)
SELECT *FROM city c1,city c2
WHERE c1.`id` =c2.`parent_id`
AND c1.`name`='北京市';
2.外連接(不支持)
二. MySQL99語法
1.內連接
1)等值連接(對比)
-- 查詢出101的班級資訊(并帶上該班級的所有學生資訊)
SELECT *FROM class,student
WHERE class.`id`=student.`clazz_id`
AND class.`name`='101';
SELECT *FROM class I
NNER JOIN student
ON class.`id`=student.`clazz_id`
WHERE class.`name`='101'
-- 查詢出rose的所有資訊(包括班級資訊)
SELECT *FROM class,student
WHERE class.`id`=student.`clazz_id`
AND student.`name`='rose';
SELECT *FROM class
INNER JOIN student ON class.`id`=student.`clazz_id`WHERE student.`name`='rose'
2)非等值連接
-- 查詢出所有學生的資訊(包括他的年齡級別)
SELECT *FROM student,age_tb
WHERE student.`age`>=age_tb.`min`
AND student.`age`<age_tb.`max`;
SELECT *FROM student
INNER JOIN age_tb
ON student.`age`>=age_tb.`min`
AND student.`age`<age_tb.`max`;
3)自連接
-- 查詢出北京市的資訊(包括其區的資訊)
SELECT *FROM city c1,city c2
WHERE c1.`id` =c2.`parent_id`
AND c1.`name`='北京市';
SELECT *FROM city c1
INNER JOIN city c2
ON c1.`id` =c2.`parent_id`
AND c1.`name`='北京市';
4)三表連接
-- 查詢出rose的個人資訊(包括其選修課程資訊)
SELECT *FROM student,course,course_student
WHERE student.`id`=course_student.`stu_id`
AND course.`id`=course_student.`cou_id`
AND student.`name`='rose';
SELECT *FROM student
INNER JOIN course
JOIN course_student
ON student.`id`=course_student.`stu_id`
AND course.`id`=course_student.`cou_id`
WHERE student.`name`='rose'
5)一對一
-- 查詢出孫儷的個人資訊(包括其丈夫的資訊)
SELECT * FROM husband,wife
WHERE wife.`wife_id`=husband.`wife_id`
AND wife.`wife_name`='孫儷';
SELECT *FROM husband INNER JOIN wife
ON wife.`wife_id`=husband.`wife_id`
WHERE wife.`wife_name`='孫儷'
-- 查詢出所有班級的資訊(包括其學生的資訊)
SELECT * FROM class,student
WHERE class.`id`=student.`clazz_id`;
SELECT *FROM class
INNER JOIN student
ON class.`id`=student.`clazz_id`;
2.外連接
1)左外連接
-- 查詢出所有班級的資訊(包括其學生的資訊)
SELECT *FROM class
LEFT JOIN student
ON class.`id`=student.`clazz_id`;
-- 查詢出所有學生的資訊(包括其班級的資訊)
SELECT *FROM student
LEFT JOIN class
ON class.`id`=student.`clazz_id`;
2)右外連接
-- 查詢出所有學生的資訊(包括其班級的資訊)
SELECT *FROM class
RIGHT JOIN student
ON class.`id`=student.`clazz_id`;
-- 查詢出所有班級的資訊(包括其學生的資訊)
SELECT *FROM student
RIGHT JOIN class
ON class.`id`=student.`clazz_id`;
3)全外連接(sql不支持)
左外和右外拼接
-- 查詢學生和班級的所有資料
SELECT *FROM class
LEFT JOIN student
ON class.`id`=student.`clazz_id` #(結尾處不要寫分號)
UNION
SELECT *FROM class
RIGHT JOIN student
ON class.`id`=student.`clazz_id`;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/238617.html
標籤:其他
上一篇:本周總結and下周規劃
下一篇:這個SQL 怎么寫
