加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL教程mysql select语句的from子句

发布时间:2020-12-12 02:39:00 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL教程mysql select语句的from子句》要点: 本文介绍了MYSQL教程mysql select语句的from子句,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:mysql数据库中select语句的from子句用法.一,表别号FROM子句是SELECT语句中最先开始处理的子句,F

《MYSQL教程mysql select语句的from子句》要点:
本文介绍了MYSQL教程mysql select语句的from子句,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql数据库中select语句的from子句用法.一,表别号FROM子句是SELECT语句中最先开始处理的子句,FROM子句指定了要查询的表,表...

MYSQL数据库本节内容:
mysql数据库中select语句的from子句用法.

MYSQL数据库一,表别号
FROM子句是SELECT语句中最先开始处理的子句,表的后面可能还跟着一个别号.
表可以直接是表名,也可以在前面加上数据库的名字.

MYSQL数据库例如:
?

SELECT studentNO FROM school.student AS S
?

MYSQL数据库二,笛卡尔积
FROM子句可以有一个表指定,也可以跟多个表指定,如从两张内外读取数据:
?

SELECT studentNO,laterNum FROM student,later

MYSQL数据库later是存放迟到信息的表,有学生学号(studentNO)和迟到次数(laterNum)两列.

MYSQL数据库以上查询语句中从student和later两张表中查询数据.
当FROM子句中指定两张表时,FROM子句返回一个中间成果集,这个中间成果集的列数等于两张表的列相加,行数等于两张表的行数相乘,这通常叫做相关两张表的笛卡尔积.

MYSQL数据库例如:
?

student表
studentNO? name
---------? ----
??????? 1? 张三
??????? 2? 李四
??????? 3? 王五
??????? 4? 赵六
later表
studentNO? laterNum
---------? --------
??????? 2???????? 3
??????? 4???????? 2
?

MYSQL数据库有student表和later表两张表,student表中存放了张三,李四,王五,赵六四个学生的信息,later表中存放的是学生迟到的次数,其中2号李四迟到3次,4号赵六迟到2次.
那么:
?

SELECT studentNO,later

MYSQL数据库执行FROM子句后,FROM子句返回的中间成果集(笛卡尔积)如下:
?

studentNO? name? studentNO? laterNum
---------? ----? ---------? --------
??????? 1? 张三?????????? 2???????? 3
??????? 1? 张三?????????? 4???????? 2
??????? 2? 李四?????????? 2???????? 3
??????? 2? 李四?????????? 4???????? 2
??????? 3? 王五?????????? 2???????? 3
??????? 3? 王五?????????? 4???????? 2
??????? 4? 赵六?????????? 2???????? 3
??????? 4? 赵六?????????? 4???????? 2
?

MYSQL数据库FROM子句中表指定的顺序冰不影响FROM子句执行的成果,执行后的中间成果集是一样的.
?
三,表的联接
例句:
?

SELECT studentNO,later WHERE student.studentNO=later.studentNO
?

MYSQL数据库当FROM子句指定两张或两张以上的表时,叫做表的联接(join),进行比拟的两列叫做联接条件.
上面的FROM先将student表和later表联接,生成一个笛卡尔积中间结果集,然后执行WHERE子句,找出表student和表later的studentNO相等的行.
?

studentNO? name? studentNO? laterNum
---------? ----? ---------? --------
??????? 1? 张三?????????? 2???????? 3
??????? 1? 张三?????????? 4???????? 2
??????? 2? 李四?????????? 2???????? 3
??????? 2? 李四?????????? 4???????? 2
??????? 3? 王五?????????? 2???????? 3
??????? 3? 王五?????????? 4???????? 2
??????? 4? 赵六?????????? 2???????? 3
??????? 4? 赵六?????????? 4???????? 2
?

MYSQL数据库WHERE子句执行完后,结果集中剩下了上面标蓝的两行数据,然后执行SELECT子句,得到如下最闭幕果集:
?

name? laterNum
----? --------
李四????????? 3
赵六????????? 2
?

MYSQL数据库四,显式联接
上面的联接是一个隐式联接,因为SELECT语句中并没有join关键字.
join是联接的关键字,可以通过join显式的指定一个联接.
例如:
?

SELECT name,laterNum FROM student INNER JOIN later ON (student.studentNO = later.studentNO)
?

MYSQL数据库显式联接与上面的隐式联接返回的最闭幕果集是一样的,只不过将联接条件放到了FROM子句中,而隐式联接中联接条件是放在WHERE子句中的.
?
五,左外联接,右外联接
上面的SELECT语句中,指定了INNER JOIN关键字,表明这是一个显式联接,并且是一个内联接.

MYSQL数据库显式联接中的内连接跟隐式联接的返回成果是一样的,显式联接还有另外一种:外联接.

MYSQL数据库以上示例中,找出了有过迟到的李四和赵六的迟到次数.

MYSQL数据库但是张三和王五没有出现在最闭幕果集中,因为他们没有迟到过.

MYSQL数据库有时需要把没有迟到过的人也查出来,这就需要外联接.
外联接通过OUTER JOIN关键字来指定,必须指定是左连接(LEFT)还是右联接,表示是哪个表要联接哪个表.
好比要找出所有人的迟到信息,没有迟到的人也需要显示出来,则用下面的语句:
?

SELECT name,laterNum FROM student LEFT OUTER JOIN later ON (student.studentNO = later.studentNO)
?

MYSQL数据库将得到下面的成果集:
?

name? laterNum
----? --------
张三????????? ?
李四????????? 3
王五????????? ?
赵六????????? 2
?

MYSQL数据库指定student表左连接到later表,所以student表中的所有行必需出现在FROM子句的结果集中,也就是later表中没有对应值的以空值填充.
?
左联接经常用在以下情况中,就是联接条件中,被联接的表中的联接列式联接表中联接列的子集.

MYSQL数据库也就是在上面的例子中,student表中的studentNO是4行,而later表中的studentNO是两行(只有迟到过的学生才会在later表有记录),所以later表的studentNO是student表的studentNO列的子集.如果要查出所有学生的迟到信息(包含没迟到过的),就需要用外联接.
?
右外联接与左外联接正好相反,被联接的表的所有行必须出现在FROM子句的结果集中.
所以将两个表对调一下,然后用右外联接与左外连接的结果是一样的:
?

SELECT name,laterNum FROM later RIGHT OUTER JOIN student ON (student.studentNO = later.studentNO)
?

MYSQL数据库使用USING
在显式联接中,如果联接条件的两个列名字相同,而且联接条件是二者相等,则可以用USING.
?

SELECT name,laterNum FROM student LEFT OUTER JOIN later USING(studentNO)
?

MYSQL数据库这与上面的成果集是一样的.

编程之家PHP培训学院每天发布《MYSQL教程mysql select语句的from子句》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读