尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

多表查询---连接查询

多表查询---连接查询 若一个查询同时涉及两个以上的关系,则称之为连接查询。连接查询是关系数据库中最主要的查询,包括交叉连接查询 、内连接查询 、外连接查询。一交叉连接查询又称广义笛卡儿积是不带连接谓词的查询。例求学生表student和课程表course的广义笛卡儿积。SELECT * FROM student,course;-- 或SELECT * FROM student CROSS JOIN course;二内连接查询内连接查询中用来连接两个表的条件称为连接条件或连接谓词,其一般格式为: 表名1[INNER] JOIN表名2ON表名1.列名1比较运算符表名2.列名2其中比较运算符主要有: 、、、、、。当连接运算符为“”时,称为等值连接,使用其他运算符称为非等值连接。连接谓词中的列名称为连接字段。连接条件中的各连接字段类型必须是可比的,但不必是相同的。a. 等值连接当比较运算符为“”时称为等值连接其一般格式为表名1[INNER] JOIN表名2ON表名1.列名1表名2.列名2连接条件也可以放在WHERE子句中其格式为:表名1.列名1 表名2.列名2例求学生以及其选修课程的情况。-- 格式1 SELECT student.*,score.* FROM student JOIN score ON student.snoscore.sno;-- 格式2 SELECT student.*,score.* FROM student,score WHERE student.snoscore.sno;b. 自然连接当进行连接的两个表中有同名列时可以使用自然连接来完成其一般格式为表名1NATURAL JOIN表名2也可以使用格式: 表名1JOIN表名2USING字段注意自然连接与其他连接的区别是去掉重复的列。例用自然连接完成求学生以及其选修课程的情况。-- 格式1 SELECT * FROM student NATURAL JOIN score ;-- 格式2 SELECT * FROM student JOIN score USING(sno);c. 自身连接连接操作不仅可以在两个表之间进行,也可以是一个表与其自身进行连接,称为表的自身连接。当表进行自身连接时为了区别两个表必须给他们取不同的别名,表取别名的方式为 表名 别名进行自身连接时由于所有属性名都是同名属性因此必须使用别名前缀。其一般格式为表名 aJOIN表名 bONa. 字段较比运算符b. 字段例求年龄大于王燕的所有学生的姓名、专业名和出生日期。SELECT b.sname,b.dept,b.birthday FROM student a JOIN student b ON a.birthdayb.birthday WHERE a.sname王燕 ;三外连接查询在通常的连接操作中,只有满足连接条件的记录才能作为结果输出有些用户需要的信息可能在结果中就无法出现可使用外连接解决这个问题外连接的格式为表名1 {LEFT|RIGHT|FULL} OUTER JOIN 表名2 ON 连接条件LEFT 表示左边的表中所有记录都出现在结果中RIGHT表示右边的表中所有记录都出现在结果中FULL表示左右两边的表中所有记录都出现在结果中注意不符合连接条件的连接空记录。MySQL暂不支持全外连接例查找未选修任何课程的学生。SELECT * FROM student a LEFT JOIN score b on a.snob.sno WHERE b.sno is null;
返回列表