Home >Database >Mysql Tutorial >Mysql连接查询Mysql支持的连接查询有哪些_MySQL

Mysql连接查询Mysql支持的连接查询有哪些_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:29:591108browse

bitsCN.com

Mysql连接查询Mysql支持的连接查询有哪些

 

CREATE TABLE `chx` (  `id` VARCHAR(20) NOT NULL,  `name` VARCHAR(50) DEFAULT NULL,  `name2` CHAR(4) DEFAULT NULL,  `name3` VARCHAR(4) DEFAULT NULL,  `score` INT(11) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT CHARSET=utf8CREATE TABLE `test` (  `id` int(11) DEFAULT NULL,  `age` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

 

1.Mysql支持的连接查询方式列举如下:

     a:内连接 inner  join也是默认的连接方式

            根据比较方式不同分为如下三种:

                  等值连接:使用等号来作为连接条件 

                  自然连接:natural join,通过在两张表里寻找列名和数据类型都相同的字段(长度不管),然后再根据这些相同的字段进行连接(内连接)。并返回所有符合条件

                                      的结果。

                  不等值连接:就是在连接条件中使用除等号以外的其他比较运算符,例如:on c.id between s.XXX and s.XXX;

                                    注意:可以使用using关键字简化连接:

                                    使用条件:1.查询必须是等值连接  2.等值连接中的列必须具有相同的名称和数据类型。

     b:外连接  outer join

            外连接可以分为以下三类:

                  左外连接(left  outer join 或left join):检索结果为满足连接条件的数据行+左表中不满足连接条件的数据行,然后再根据过滤条件过滤即为查询结果(先连接后

                                                                                         过滤)注意:此处过滤条件很容易犯错,一般要以左表的条件进行过滤,不然容易犯错。例如:

                         

SELECT c.*,t.* FROM chx c LEFT JOIN test t ON c.id = t.id WHERE c.`id`= 1和                         SELECT c.*,t.* FROM chx c LEFT JOIN test t ON c.id = t.id WHERE t.`id`= 1
的结果不一样,

                                                                                      因为当副表t没有等于1的记录而主表c有的话第一条语句是由结果的,而第二条是没有结果的。见下图:

                                                                                      

Mysql连接查询Mysql支持的连接查询有哪些_MySQL

 

                  右外连接(right outer join 或right join):与左外连接相反。

                  全外连接(full outer join 或full join):注意:mysql不支持全外连接:除了显示满足连接条件的行外,还显示join两侧表中所有满足检索条件的行。

 

     c:交叉连接 cross  join

           即两表的所有数据行的笛卡尔积。

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn