SQLクエリに参加 - 関連して、接続するので、左と右の接続を接続する(重要)

はじめに、クエリの接続

異なる接続からのフィールドデータテーブルは、クエリを完了するために使用することができる場合に照会テーブルを複数接続すると、クエリ、クエリを実装することができます。

参加クエリはに分けることができます。

  • インナーには、クエリに参加します
  • 左は、クエリに参加します
  • 右のクエリに参加
  • クエリを自己結合

1.クエリをインナーに参加します

クエリの二つのテーブル修飾合計
ここに画像を挿入説明

select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2

2つのテーブルを構築します:

create table students( id int unsigned primary key auto_increment not null, name varchar(20) not null, math int not null, gender enum('男','女','保密'), cid int)engine=InnoDB default charset=utf8;

ここに画像を挿入説明

create table class( id int unsigned primary key auto_increment, name varchar(20) not null)engine=InnoDB default charset=utf8;

ここに画像を挿入説明
いくつかのデータを挿入します。

nsert into students values(0,'王问起',100,'女',3),(0,'王子见',62,'男',3),(0,'出溜溜',90,'女',2),(0,'助理云',90,'女',1);
insert into class values(0,1),(0,2),(0,3),(0,4);

ここに画像を挿入説明
データを表示:

select * from students;
select * from class;

ここに画像を挿入説明
エン:

select * from students inner join class on students.cid=class.name;

ここに画像を挿入説明
キーワードとして過ごします。

select * from students as s inner join class as c on s.cid=c.name;

ここに画像を挿入説明
概要

  • エン...、条件の2つのテーブルがクエリに参加表し上...内部結合を使用して
  • 二つの接続のテーブルを削除し、「交差点」コネクタクエリ

2.左のクエリに参加します

右側のデータテーブルに基づいてクエリ条件はヌルパディングの値が存在しない場合は、左メインテーブル右のテーブルデータのクエリの条件は、
ここに画像を挿入説明
クエリの結合構文を左:

表1からフィールドを選択し、表2 ON =表1フィールド2フィールド2参加左
説明:

  • 左は左結合結合問合せのキーワードです
  • クエリの結合条件に
  • 表1は、左テーブルであります
  • 表2は、右の表です

例1:使用左は学生のクラスのテーブルとクエリのテーブルを結合します:

ここに画像を挿入説明
我々は、データをヌルいくつかの例があり、右の表を試してみてください:
値を変更します。
ここに画像を挿入説明
左の接続を:
ここに画像を挿入説明
概要

  • 左は左結合を使用して接続...、条件の2つのテーブルがクエリに参加表し...上
  • データテーブルに従って、左右のテーブルベースのクエリ条件を連結する左、データテーブルNULL値で満たさ権利は存在しません。

3.右は、クエリに参加します

左テーブルクエリ条件に応じて右テーブルベースのデータの問合せ条件左テーブルに従ってデータがNULL値で満たされている場合、存在しません

右のクエリレンダリングに参加する:
ここに画像を挿入説明
右のクエリ構文に参加します:

表1からフィールドを選択し、右表2 ON =表1フィールド2フィールド2参加
説明:

  • 右のクエリキーは右の接続で参加
  • クエリの結合条件に
  • 表1は、左テーブルであります
  • 表2は、表の右側です
    例1:学生クラス表を右を使用して、クエリのテーブルを結合します:
select * from students as s right join class as c on s.cid = c.id;

ここに画像を挿入説明
概要
右の接続は右に参加... ...、条件の2つのテーブルがクエリに参加表し上で
右データテーブルに従って右テーブルベースのクエリ条件に委ね、ヌル値で埋め左のデータテーブルは存在しません。接続します

4.自己結合クエリ

左と右のテーブルが同じテーブルあり、二つのテーブルに基づいてクエリデータは、クエリ条件に参加します。

領域テーブル・レンダリングは
ここに画像を挿入説明
、PIDは、第三の線として州のIDで説明深川市が1のpid、テーブル自体は、広東省のシンセンの一部である1の広東省時間、atitle =援助です。

例1:「広東省では、」すべての都市のためのクエリの州名
ここに画像を挿入説明
:解答
表領域を作成します。

create table areas(
    id varchar(30) not null primary key, 
    title varchar(30), 
    pid varchar(30)
)engine=InnoDB default charset=utf8;

ここに画像を挿入説明
データのインポート

insert into areas values('1','广东省',default),('2','河南省',default),('3','深圳 市','1'),('4','广州市','1'),('5','南山区','3'),('6','宝安区','3');

ここに画像を挿入説明
表示データ:
ここに画像を挿入説明
自己結合クエリ:

select * from areas as c inner join areas as p;

ここに画像を挿入説明

select * from areas as c inner join areas as p on c.pid=p.id;

ここに画像を挿入説明
ディスプレイ:

select c.id,c.title,c.pid,p.title from areas as c inner join areas as p on c.pid=p.id;

ここに画像を挿入説明
すべての都市の「広東省」などの名前のクエリ県:
ここに画像を挿入説明
概要

  • クエリを自己加入二つのテーブルにテーブルをシミュレートすることであっても、テーブル、クエリ、その後、左右、および。
  • 接続は、このテーブル特別な接続、接続やテーブルそのものであるので、
公開された874元の記事 ウォンの賞賛1233 ビュー16万+

おすすめ

転載: blog.csdn.net/qq_35456045/article/details/105170617