> 데이터 베이스 > MySQL 튜토리얼 > mysql连接查询_MySQL

mysql连接查询_MySQL

WBOY
풀어 주다: 2016-06-01 12:58:47
원래의
949명이 탐색했습니다.

一:新建两张表

student表

 

CREATE TABLE student(

idINT PRIMARY KEY AUTO_INCREMENT,

snameVARCHAR(20) NOT NULL

);

SELECT * FROM student;

INSERT INTO student VALUES (1,'张三'),(2,'李四'),(3,'王五');

 

 

course表

 

CREATE TABLE course(

idINT PRIMARY KEY,

cnameVARCHAR(20) NOT NULL

);

SELECT * FROM course;

INSERT INTO course VALUES (1,'足球'),(2,'音乐'),(4,'美术');

 

二:外连接

外连接可分为:左连接、右连接、完全外连接。

1. 左连接 left join或者left outer join

SELECT * FROM student LEFT JOIN course ONstudent.id=course.id;

 

id sname id cname

1 张三 1 足球

2 李四 2 音乐

3 王五 \N \N

 

左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).

注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

 

2.右连接 right join 或 right outer join

SELECT * FROM student RIGHT JOIN course ONstudent.id=course.id;

 

id sname id cname

1 张三 1 足球

2李四 2音乐

\N \N 4美术

 

右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。

注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

 

2. 完全外连接 full join 或 full outer join

 

SELECT * FROM student FULL JOIN course;

idsnameidcname

1张三1足球

2李四1足球

3王五1足球

1张三2音乐

2李四2音乐

3王五2音乐

1张三4美术

2李四4美术

3王五4美术

 

三:内连接join或者inner join

SELECT * FROM student INNER JOIN course ONstudent.id=course.id;

 

idsnameidcname

1张三1足球

2李四2音乐

 

inner join 是比较运算符,只返回符合条件的行。

此时相当于:select * from student,course where student.id=course.id

 

四:交叉连接cross join

SELECT * FROM student CROSS JOIN course;

 

idsnameidcname

1张三1足球

2李四1足球

3王五1足球

1张三2音乐

2李四2音乐

3王五2音乐

1张三4美术

2李四4美术

3王五4美术

 

如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from student cross join course wherestudent.id=course.id

此时将返回符合条件的结果集,结果和inner join所示执行结果一样。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿