所在的位置: mysql >> mysql介绍 >> MySQL内连接

MySQL内连接

青少年白癜风防治援助项目 https://m-mip.39.net/baidianfeng/mipso_5476801.html

今天回到家有点晚了,本来是想一篇把几个常用的JOIN全部写出来,但怕影响睡觉的质量,就分开来写了。连接是关系型数据库的主要特点,连接查询是关系型数据库中最主要的查询,主要包括内连接、外连接。通过连接运算符可以实现多个表查询。主要就是介绍下面这三个语句的用法,这一篇介绍INNERJOIN。

-INNERJOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录

-LEFTJOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录

-RIGHTJOIN(右连接):与LEFTJOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

关系型数据库就是对表的连接、筛选和投影三个操作,筛选出满足条件的数据。然后对数据进行聚合、运算等操作。所以连接是第一步,而很多连接都是存在于逻辑当中,因为不需要展示出来所有的连接结果,也没有必要,但是我们大脑中一定要有一张完整的大表,后面的操作才不会乱。所以这里还是先介绍一下笛卡尔积,可以通过这一篇看一下介绍和Python的实现方式(Python_笛卡尔积)。下面是MYSQL中实现笛卡尔积,就是不加任何条件形成一张大表,数据是下面这两张,一个9行学生表,一个5行班级表,生成一张9*5=45的笛卡尔积表。

SELECT

*

FROM

student,

class;

INNERJOIN内连接的语法格式如下:

SELECT字段名FROM表1INNERJOIN表2[ON子句]

-字段名:需要查询的字段名称。

-表1表2:需要内连接的表名。

-INNERJOIN:内连接中可以省略INNER关键字,只用关键字JOIN。

-ON子句:用来设置内连接的连接条件。

上面的笛卡尔积也可以通过INNERJION实现,语法如下↓

SELECT

*

FROM

student

INNERJOINclass;

一般情况下我们会筛选出符合条件,有意义的字段。可以发现,因为Jack是班,而班级表里面没有班,所以加了条件之后,Jack的信息就没有被筛选出来。

SELECT

*

FROM

studentass

INNERJOINclassasc

WHERE

s.s_class_id=c.c_id;

INNERJOIN可以使用WHERE子句指定连接条件,但是INNERJOIN...ON语法是官方的标准写法,而且WHERE子句在某些时候会影响查询的性能。所以上面的语句可以这么写↓

SELECT

*

FROM

studentass

INNERJOINclassascONs.s_class_id=c.c_id;

也可以指定查询的列,如果只需要查询姓名、班级名称和教室地址,就可以这么写↓

SELECT

s.s_nameAS学生姓名,

c.c_nameAS班级,

c.c_addAS教室

FROM

studentass

INNERJOINclassascONs.s_class_id=c.c_id;

多张表查询,这里使用三张表进行查询,再加一个课程表格。

SELECT

*

FROM

studentass

INNERJOINclassascONs.s_class_id=c.c_id

INNERJOINcourseascoONco.c_id=c.c_id

End




转载请注明:http://www.aierlanlan.com/rzfs/2104.html

  • 上一篇文章:
  •   
  • 下一篇文章: