MySQL--マルチテーブルの結合(コネクタ、クロスコネクトを結ぶ外側 - デカルト積)

@ Tocの
     データベースについてのより多くの知識、~~注意ヨーヨーを追加してください。:ブロガーのための接触ガボール主な民間の手紙またはお問い合わせください
     QQ:3327908431
     マイクロ手紙:ZDSL1542334210を

        はじめに:虎などの操作が激しいのMySQLのシリーズ、コード、明確で理解しやすい、シンプルな構造で、今日レットの話についてのMySQLの強力なマルチテーブルの結合、接続テーブルの後、問い合わせを容易にするだけでなく、処理、およびデータ分析を行うには簡単に、など私たちは、絵に直接説明するトラブル、ADO、今日の多くを保存します。**

1、マルチテーブルの接続タイプと文法

1.1縦スプライス

        組合も呼ばスプライス長手スプライスは、各テーブルの全カラムの値に基づいて、2つのマッチングテーブルの行は、同じ列名を持たなければならない2つのテーブルに接続することができ、二つの異なる又は全て同じ順序フィールドなら、その後、クエリによって置き換えられます。構文は次のとおりです。

select * from t1 union select * from t2;  # 两表列名和列顺序完全相同

select 列名称 from t1 union select 列名称 from t2;

1.2、外側連結

        この種の接続は、接続を理解するための最も一般的な、より困難です。外部結合の外に残してもよい結合、右外側連結または完全外部ジョイン。節外から指定された参加場合は、指定されたグループ内のキーワードの次のグループから構成することができる:
        1)を左または左のカップリングは、外側左結合結果セットが左外側句の全てが左テーブルで指定含む参加ラインだけでなく、マッチングは、列行に参加します。あなたが右の表と一致しない場合は、行の行は、テーブルを残し、すべての選択リストの列の右のテーブルに関連付けられた結果セットの行がnull値ですが、同じテーブルに主キーID、二つの主キーの名前を指定する必要があります構文は次のとおりです。

select * from t1 left join t2 on t1.id=t2.id;

        2)右ジョインまたは右外部ジョイン右外側に左外部結合の逆方向リンクに参加します。右の表のすべての行を返します。一致する行が行に存在しない場合は、テーブルを左右の表は、左テーブルのNULL値を返します。

select * from t1 right join t2 on t1.id=t2.id;

1.3、インナーに参加

         内側の2つのテーブルは、関連するデータのみときに、2つの同一の主キーテーブルに結果を表示しないことであることを示す参加します。次の例では、スコアは内部不完全S_ID場合、その接続は、S_IDスコアが対応していないであろう行は表示されません。

select * from stu inner join scores on stu.s_id = scores.s_id;

1.4、クロスカップリング(デカルト積)

        クロスカップリングに=完全参加すべての行がテーブルに残っているリターンを結合、テーブルの右の表の左列の各列のすべての組合せは、主キーを指定する必要はありません。クロスも呼ばれるデカルトの製品を結合しました。句は、任意の順序で外部結合または完全に結合することによって、表またはビューから特定することができ、左右外側の指定されたテーブルまたはビューと結合されたときただし、配列表またはビューは非常に重要です。

select * from t1 join t2;  # 法一

select * from t1 full join t2;# 法二

2、テーブルの作成

学生情報テーブルSTUの作成

create table stu(s_id varchar(5),
   s_name varchar(5),
   s_sex varchar(1),
   s_age int(3),s_day date);

insert into stu values
("001","李华","男",23,'1996-8-16'),
("002","王二","男",24,'1997-3-16'),
("003","赵敏","女",23,'1990-5-26'),
("004","张莹莹","女",22,'1995-2-16'),
("005","朱亚军","男",25,'1999-8-16'),
("006","马云","男",28,'1993-12-16');

学生のスコア表のスコアを作成します。

create table scores (s_id varchar(5),
    c_id varchar(3),score float);
    
insert into scores values 
("001","01",135),
("005","01",120),
("003","01",110),
("002","01",90),
("005","02",140),
("001","02",125.5),
("004","02",100),
("006","02",90),
("002","03",102),
("005","03",100.6),
("001","03",100),
("003","03",95.6),
("004","03",83),
("003","02",80),
("006","03",79.5);

カリキュラムcoureを作成します

create table coure(
c_id varchar(2),t_id char(1),c_name varchar(10));

insert into coure values 
("01","3","数据库原理"),
("02","2","统计学基础"),
("03","1","Python基础");

表教師の先生の情報を作成します。

create table teacher(
 t_id char(1),t_name varchar(5));
 
insert into teacher values
  ("1","邓博"),
  ("2","崔博"),
  ("3","汪院长");

テーブルT1を作成します。

create table t1(s_id varchar(5),
   s_name varchar(5),
   s_sex varchar(1),
   s_age int(3),s_day date);

insert into stu values
("007","走走走","男",105,'1996-8-16');

3、セクションのタイトル

トピック1:STUテーブルと左のスコアテーブルの接続

select * from stu left join scores on stu.s_id=scores.s_id;
# 答案:
001	李华	男	23	1996-8-16	001	01	135
005	朱亚军	男	25	1999-8-16	005	01	120
003	赵敏	女	23	1990-5-26	003	01	110
002	王二	男	24	1997-3-16	002	01	90
005	朱亚军	男	25	1999-8-16	005	02	140
001	李华	男	23	1996-8-16	001	02	125.5
004	张莹莹	女	22	1995-2-16	004	02	100
006	马云	男	28	1993-12-16	006	02	90
002	王二	男	24	1997-3-16	002	03	102
005	朱亚军	男	25	1999-8-16	005	03	100.6
001	李华	男	23	1996-8-16	001	03	100
003	赵敏	女	23	1990-5-26	003	03	95.6
004	张莹莹	女	22	1995-2-16	004	03	83
003	赵敏	女	23	1990-5-26	003	02	80
006	马云	男	28	1993-12-16	006	03	79.5	

coure接続を行うSTUテーブルとスコアテーブルとテーブル:トピック二つの
分析を:マルチテーブルは、より以上のいくつかのテーブルよりも何も参加していない、特定の構文は次のとおりです。

select * from t1 left join t2 on ti.id=t2.id 
left join t3 on t2.id=t3.id left join t4 on t3.id=t4.id ... ;

ここでは、左結合使って、その情報が失われ、どこで異なるカラム名されていないことを確認しなければならない、知られているデータの特性に応じて、以下のとおりです。

select * from stu left join scores on stu.s_id=scores.s_id 
     left join coure on scores.c_id=coure.c_id;
# 答案:
001	李华	男	23	1996-8-16	001	01	135	01	3	数据库原理
005	朱亚军	男	25	1999-8-16	005	01	120	01	3	数据库原理
003	赵敏	女	23	1990-5-26	003	01	110	01	3	数据库原理
002	王二	男	24	1997-3-16	002	01	90	01	3	数据库原理
005	朱亚军	男	25	1999-8-16	005	02	140	02	2	统计学基础
001	李华	男	23	1996-8-16	001	02	125.5	02	2	统计学基础
004	张莹莹	女	22	1995-2-16	004	02	100	02	2	统计学基础
006	马云	男	28	1993-12-16	006	02	90	02	2	统计学基础
003	赵敏	女	23	1990-5-26	003	02	80	02	2	统计学基础
002	王二	男	24	1997-3-16	002	03	102	03	1	Python基础
005	朱亚军	男	25	1999-8-16	005	03	100.6	03	1	Python基础
001	李华	男	23	1996-8-16	001	03	100	03	1	Python基础
003	赵敏	女	23	1990-5-26	003	03	95.6	03	1	Python基础
004	张莹莹	女	22	1995-2-16	004	03	83	03	1	Python基础
006	马云	男	28	1993-12-16	006	03	79.5	03	1	Python基础
007	走走走	男	105	1996-8-16						

トピック3:STU、スコア、coureと教師のテーブルには、接続するために行うには

select * from stu left join scores on stu.s_id=scores.s_id 
    left join coure on scores.c_id=coure.c_id left join teacher on coure.t_id=teacher.t_id;

タイトルIV:表STU縦接続テーブルT1と、

select * from stu union  select * from t1;
# 答案
001	李华	男	23	1996-8-16
002	王二	男	24	1997-3-16
003	赵敏	女	23	1990-5-26
004	张莹莹	女	22	1995-2-16
005	朱亚军	男	25	1999-8-16
006	马云	男	28	1993-12-16
007	走走走	男	105	1996-8-16

トピック5:縦長接続教師coureテーブルとテーブル;
分析:テーブルとして2人のだけ同じidの教師このコラムが、これは、そこそこの垂直接続を実現するために、すべての繰り返しを労働組合を使用していない重複した結果だろうが唯一そうです

select t_id from teacher union all  select t_id from coure;
# 答案
1
2
3
3
2
1

4、紙の卵の終わり - 簡単な瞬間

        まあ、我々はすべて知っているが、17と18歳の男性は、それは、あなたが私の良き友人ウィニーは高校まあ前に、この事を超える登場言う多少れたもの、私たちは、ガールフレンドのチームについて話しますが、彼はまた、2つの共有します、その後、彼らは数週間見ていない失われたので、私たちは、一緒に食べて数週間後に、結果が嘲笑を負担:「!あなたはすぐに死ななければなら以降の女性で子供、」その後、チームの口を残して言った:「あなたは死んだ自分自身を終わるだろう右手!「とその後、静かに頭を下げクマ、彼の右手を見て、以前より厚い角質をたくさんやった...まあ、そのような場合です。

       MySQLの知識についてもっと学ぶためにリラックスした瞬間のよ〜利息 - 今日はヨーヨー//各記事の最後の卵を持って、ここで終了します!見ていただきありがとうございます、私はJetuserデータでした

リンク:[https://blog.csdn.net/L1542334210]
CSND:L1542334210
ここに画像を挿入説明
私はあなたのすべての成功を祈って!家族で楽しみます!

公開された29元の記事 ウォン称賛53 ビュー30000 +

おすすめ

転載: blog.csdn.net/L1542334210/article/details/102031151