表连接的分类有:1相等
① 内连接
② 外连接 :左连接。
右连接。
交叉连接(左连接加上右连接的结果)。
2:不相等。
3:自连接。
-------------------------------------------------------相等于连接------------------------------
用例1:
Select teacher_id,name,department_name from Teachers,Departments
Where teachers.department_id=Departments.department_id;
用例2:
Select s.id,Studentname,gradename from Student s, grade g where
s.gradeid=g.gradeid
用例3:
Select s.studentid,c.course_id,course_name, from Couses c, Students_grade g where c.course_id=g.couseid;’
-------------------------------------------------------交叉外连接----------------------------------------
用例1:
Select A.id,B.id from A left join B on A.id=B.id
用例2:
Select A.id,B.id from A left join B where A.id=B.id(+)
用例3:
Select A.id,Bid from A left outer join B where A.id=B.id
---------------------------------------------------------不等连接----------------------------------------------
---------------------------------------------------用例1-------------------------------------
select student_id,score,grade form studnets_grade g,grades g
where sg.score between g.low_score and g.high_score;
----------------------------------------------------------------复杂内连接-------------------------------
用例1
Select teacher_id,name department_name from Teachers t,Departments d
Where t.department_id=d.department_id and title=’讲师’
用例2:
Select s.student_id,name,course_id,score from Student s,students_grade sg
Where s.student_id=sg.student_id and specialty=”计算机”;
用例3:
Select c.course_id,course_name,student_id,score from courses c,Students_grade sg
Where c.course_id=sg.course._id and course_name=”c++语言程序设计”;
用例4:
Select s.student_id,s.name,count(*) as 所修课程门数
From Student s, Students_grade sg Where s.student_id=sg.student_id
Group by s.student_id,s.name having count(*)>1
order by s.student_id;
用例5(两个以上)表连接
select s.name,course_name,score from Students s, Courses c,Studnets_grade sg where s.student_id=sg.student_id and c.course_id=sg.course_id group by s.student_id,s.name,c.course_name;;
用例6
Select s.student_id,s.name,c.course/_name,avg(sg.score) as 平均成绩
From Studnets s,courses c,Studnets_grade sg where s.student_id=sg.student_id and c.couse_name;
----内连接sqlservert
1: select grade.*,student.* from grade inner join student on grade.gradeid= student.gradeid
---内连oracle
2:select grade.*,student.* from grade, student where grade.gradeid= student.gradeid
---:左连接oracle
3:select grade.*,student.* from grade left outer join student where grade.gradeid=student.gradeid
---:右连接oracle
4:select grade.*,student.* from grade right outer join student where grade.gradeid=student.gradeid
--sqlservert左连
5:select grade.*,student.* from grade left join student on grade.gradeid= student.gradeid
--oracle右连接
6:select grade.*,student.* from grade,student where grade.gradeid=student.gradeid(+);
或者
select grade.*,student.* from grade,student where grade.gradeid=student.gradeid(right);
--交叉连接
7:select grade.*,student.* from grade left join student on grade.gradeiid=student.gradeid
Union
Select grade.*,student.* from right join student on grade.gradeid=student.gradeid
--不等于连接
8: select sg.studnet_id,sg.course_id,g.grade from student t_grade,sg.grades g where sg.score
Between g.score and g.high
--自连接
9:select s1.name,s2.name from students s1.students S2 where s1.nameid=s2.studactid;