链接是二元运算,能够对两个或多个表进行查询,结果一般是含有参加链接运算的两个或多个表的指点列的表数据库
在SQL中,链接有两大类表示形式,一是符合SQL标准链接谓词(where)的表达形式,二是oracle扩展的使用关键字JION的表达形式。oracle
1.链接谓词spa
能够在select语句的where子句中使用比较运算符给出链接条件对表进行链接,将这种表示形式称为链接谓词表示形式。code
--查找数据库每一个班的学生信息。 select * from school_students,school_class where stu_class=class_id;
链接谓词中的两个列(字段)称为链接字段,它们必须是可比的,链接谓词的比较符能够是<,<=,=,>,>=,!=和<>,当比较符为=是就是等值链接,若在目标列中去除相同的字段名,则为天然链接。blog
--查找选修了100014课程且成绩在70分以上的学生姓名及成绩。 select stu_name 姓名, result_number 成绩 from school_students, school_result where result_stu=stu_id and result_course='100014' and result_number>=70;
链接和子查询可能都要涉及两个或多个表,区别是:链接能够合并两个或多个表,而带子查询的select语句的结果只能来自一个表。子查询的结果是用来做为选择结果数据时进行参照的。io
--查找选修了“数据库技术及应用”课程且成绩在70分以上的学生学号、姓名、---课程名及成绩。 select stu_id 学号, stu_name 姓名, course_name 课程名, result_number 成绩 from school_students, school_course, school_result where stu_id=result_stu and course_id=result_course and course_name='数据库技术及应用' and result_number>=70;
2.以JOIN关键字指定的链接class
oracle的PL/SQL语句扩展以jion关键字指定链接的表示方法,加强了表的链接运算能力。扩展
内链接:按照On所指定的链接条件合并两个表,返回知足条件的行select
--查找数据库每一个班的学生信息。 select * from school_students join school_class on class_id=stu_class ;
内链接还能够用于链接多个表的链接方法
--查找选修了100014课程且成绩在70分以上的学生姓名及成绩。 select stu_name 姓名, result_number 成绩 from SCHOOL_STUDENTS join school_result on stu_id=result_stu where result_course='100014' and result_number>=70;
外链接:外链接的结果表不但包含知足链接条件的行,还包括相应表中的全部行。
外链接包括三种:
1 左外连接:结果表中除了包括知足链接条件的行外,还包括左表的全部行
--查找全部班级学生状况及,若班级没有学生,也要显示其状况。 select class_name,stu_name from SCHOOL_CLASS left join school_students on stu_class=class_id;
2 右外连接:结果表中除了包括知足链接条件的行外,还包括右表的全部的行
--查找全部班级学生状况及,学生没有班级,也要显示其状况。 select class_name,stu_name from SCHOOL_CLASS right join school_students on stu_class=class_id;
3 彻底连接:结果表除了包括知足链接条件的行外,还包括两个表的全部行
4.交叉链接:交叉链接其实是将两个表进行笛卡尔积运算,结果表是由第一个表的每行与第二个表的每一行拼接后造成的表,所以结果表的行数等于两个表行数之积。
--列出学生全部可能的选课状况。 select class_name,stu_name from SCHOOL_CLASS cross join school_students ;
注意:交叉链接也能够使用where子句进行条件限定