SQL文のマルチテーブル接続クエリーについて
添付ファイルはmysql、mssqlserver、oracleのテーブル作成スクリプトです.
#
# SQL92
#
select * from student_table s, teacher_table t;
# =
select * from student_table s, teacher_table t where s.java_teacher = t.teacher_id;
# > <
select * from student_table s, teacher_table t where s.java_teacher > t.teacher_id;
select * from student_table s, teacher_table t where s.java_teacher < t.teacher_id;
#
select * from student_table s, teacher_table t where s.java_teacher = t.teacher_id and s.student_id > 1 and t.teacher_id < 2;
#
# (MySql MSSQLServer , Oracle ) ( , null )
select * from student_table s, teacher_table t where s.java_teacher(+) = t.teacher_id;
# (MySql MSSQLServer , Oracle ) ( , null )
select * from student_table s, teacher_table t where s.java_teacher = t.teacher_id(+);
# SQL99
# (SQL92 ) cross join
select * from student_table s cross join teacher_table t;
# (MSSQLServer ,MySql Oracle ) ( ) natural join ,
select * from student_table s natural join teacher_table t;
# (MSSQLServer ,MySql Oracle ) using ( )
select * from student_table s join teacher_table t using (teacher_name);
# join...on =
select * from student_table s join teacher_table t on s.java_teacher = t.teacher_id;
# join...on > <
select * from student_table s join teacher_table t on s.java_teacher > t.teacher_id;
select * from student_table s join teacher_table t on s.java_teacher < t.teacher_id;
# join...on
select * from student_table s join teacher_table t on s.java_teacher = t.teacher_id and s.student_id > 1 and t.teacher_id < 2;
# left joinj...on SQL92 ( , null )
select * from student_table s left join teacher_table t on s.java_teacher = t.teacher_id;
# right join...on SQL92 ( , null )
select * from student_table s right join teacher_table t on s.java_teacher = t.teacher_id;
# (MySql ,MSSQLServer Oracle ) full join...on ( , null , null )
select * from student_table s full join teacher_table t on s.java_teacher = t.teacher_id;