MySQL内连接和外连接

来源:互联网 发布:开淘宝都买宝马了 编辑:程序博客网 时间:2024/06/05 08:37

MySQL内连接和外连接
MySQL的连接种类分为:

内连接:只连接匹配的行外连接:    左外连接:连接中左边的表不加限制,在结果集中保留连接表达式左表中非匹配记录。    右外连接:连接中右边的表不加限制,在结果集中保留连接表达式右表中非匹配记录。    全外连接:两个表都不加限制,两个表中的行都会包括在结果集中。自连接:连接操作不只是在不同的表之间进行,一张表中还可以进行自身连接操作,同一表的不同行连接起来。在连接中,必须为指定的表取别名,使之在逻辑上成为两张表。交叉连接:两个表之间进行迪卡儿积操作,得到的结果集的行数是两个表的行数的乘积。

如下例子:

student表

(http://img.blog.csdn.net/20160820195649621)

course表

(http://img.blog.csdn.net/20160820195751482)

sc表

(http://img.blog.csdn.net/20160820195843403)

交叉连接:

select A.* , B.* from course A, student B;

(http://img.blog.csdn.net/20160820200024188)

内连接:

(1)内连接的有两种指定条件的方式,一种是在where子句中指定,一种是在from子句中指定。(2)from后可以跟多个表,表名与表名之间用空格间隔。(3)当连接类型在where子句中指定是,where后一定要有连接条件表达式,即两个表的公共字段相等。(4)若不定义别名,表的别名默认为表名,定义别名后使用定义的别名。(5)若在输出列或条件表达式中出现两个表的公共字段,则在公共字段名前必须加别名。(6)在省略inner字段时,默认是内连接。

输出所有女学生的学号,姓名,课程号及成绩(方式一)

select A.sno , sname, cno,  degree from student A, sc B where A.sno = B.sno and  ssex = '女';

(http://img.blog.csdn.net/20160820201929339)
方式二

select A.sno, sname, cno, degree from student A inner join sc B on A.sno = B.sno where ssex = '女';

(http://img.blog.csdn.net/20160820202352165)

1 0
原创粉丝点击