+ -manyマルチテーブルクエリ3つのテーブルでも+サブクエリをチェック

マルチテーブルクエリ
に必要なデータのクエリを複数のテーブル
のインスタンスのためには:授業や学生テーブルテーブルがあり
ますが、すべての参加者のためのクラス名のデータを参照する必要があり
、クラスIDにクラスを取得するためにテーブルをチェックし、その後、IDに対応するテーブルクエリに基づいて大学に行きます生徒

データを準備する:
表EMP(int型のID、名前のCHAR(10)、セックスチャー、DEPT_IDのINT)を作成し、
INSERT EMP値(1、 "ルバーブ"、 "M" ,. 1);
INSERT EMP値(2、「王"" M "2);
INSERT EMP値(3、"町の話"" W "30);

表部門(ID int型、文字名(10の作成));
(INSERT部門値1、"市場" );
DEPTの値を挿入する(図2に示すように、「金融」);
INSERT DEPT値(3)「管理」;

方法マルチテーブルクエリ
1デカルト積クエリ
デカルト積が何でありますか、レコードが別のテーブル内のすべてのレコードをリンクする座標で
乗算を行うためにデータの2つのテーブルのような
データの無駄な重複がたくさんになり
、我々は効果を持っているが、その:従業員IDと部署テーブル同じIDで一緒にスプライスされた部門表
正しいデータでスクリーニング
; EMPからSELECT *、emp.dept_id = dept.id DEPT

キーON
であるマルチテーブルクエリ条件において役割
EMP SELECT * FROM、emp.dept_idにDEPT = dept.id。 間違った構文上でのみ特殊なマルチテーブルクエリで使用することができるからである


2内の接続クエリ
インナー参加
DEPT = dept.id参加にEMPインナーemp.dept_idからSELECT *;

全従業員のために#をクエリし、彼らが属していますセグメント情報
3.外部結合を左
ジョイン、左
データテーブルの左には、正確なだけ表示するには、表の右側に表示されているデータと一致している
emp.dept_id = dept.id上DEPTを結合左EMPからSELECT *を、

#は、すべてのセクタを照会し、そのすべての従業員情報
4.右外の参加
権利参加する
テーブルのデータがテーブルショーの表示データまで、右に左に一致する完全な
SELECT * FROM EMPが右側にDEPTに参加するから emp.dept_id = dept.id。

#は、テーブル表の複数のすべてのデータを表示します
。5.フルリンクされ
たOracleサポートはサポートしていませんMySQLの参加のフル
連合によって間接的に達成することができ
ユニオンクエリ結果はマージ手段の複数の複合クエリーを表し
要件がマージされますテーブル構造は同じでなければなりません
デフォルトの重複排除

を繰り返すが、削除せずに組み合わせる
連合のすべて

dept.id = ON参加部門EMP右emp.dept_idからSELECT *を
連合
;部門EMPはemp.dept_id = dept.id ON左入会からSELECT *を




マルチテーブル:概要をあなたはすべてが左に書かれた表示したい場合は、左へのリンクに従って書面で空白を埋める参加し
、すべての権利右に参加し
たすべての結果を表示するには、左と右のリンクの連結業績は、リンク
のコースを、あなたが一緒に複数のテーブルを確認することができますが、意味がないとあなたは試してみてください確認することがあまりにも多くのテーブルを避けるため
、多くの時間で最大3つ

DEPTに参加左EMPから選択* emp.dept_id = dept.idにxxtable参加左;

create table tec(id int,name char(10));
insert into tec value(1,"egon");
insert into tec value(2,"yyh");

create table stu(id int,name char(10));
insert into stu value(1,"大傻");
insert into stu value(2,"中傻");
insert into stu value(3,"小傻");
create table s_t(s_id int,t_id int);
insert into s_t value(1,2);
insert into s_t value(2,2);
insert into s_t value(3,1);

需求 找出 yyh 这个老师 教过的学生信息
思路:
第一步 到关系表中 去查询 哪些老师教过哪些学生(学生的id) 形成了一个临时表
第二步 将上一步得到临时表 与 学生表进行连接
第三步 加上额外的筛选条件 老师的name 是 yyh


select tec.name teacher,stu.name student from
tec inner join s_t on tec.id = s_t.t_id
inner join stu on s_t.s_id = stu.id
where tec.name = "egon" ;

子查询
什么是子查询:将上一次查询的结果 作为本次查询的原始数据(或是查询条件)
也就是嵌套查询 这中嵌套的语法一班不让写,不允许使用,

おすすめ

転載: www.cnblogs.com/1832921tongjieducn/p/11128910.html