国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

MySQL複數(shù)テーブル結(jié)合クエリ

実際のビジネスでは、単にテーブルをクエリするだけではないことがよくあります。

  1. 電子商取引システムで、どのユーザーが商品を購(gòu)入していないかをクエリします。

  2. 銀行は違反記録を照會(huì)し、同時(shí)にユーザーの

  3. 當(dāng)選情報(bào)と當(dāng)選者の基本情報(bào)を照會(huì)する場(chǎng)合があります。

上記は、2 つのテーブルを一緒にクエリする必要がある場(chǎng)合のみです。

上記のビジネスでは、結(jié)果を得るためにクエリを?qū)g行するために複數(shù)のテーブルを結(jié)合する必要があります。複數(shù)テーブルの結(jié)合クエリの本質(zhì)は、テーブルの接続です。

テーブル結(jié)合

複數(shù)のテーブルのフィールドをクエリする必要がある場(chǎng)合は、テーブル結(jié)合を使用できます。テーブル結(jié)合は內(nèi)部結(jié)合と外部結(jié)合に分けられます。

  1. 內(nèi)部結(jié)合: 2 つのテーブルのフィールドに結(jié)合関係があるレコードを結(jié)合し、その結(jié)合関係を照合してレコード セットを形成します。

  2. 外部結(jié)合: 他の一致しないレコードが選択され、外部左結(jié)合と外部右結(jié)合に分割されます。

學(xué)習(xí)実験の前に、全員に2つの模擬データテーブルを用意しました:

  1. ユーザー情報(bào)を格納するU(xiǎn)serテーブル
  2. どのユーザーがどの商品を購(gòu)入したかを格納するOrderテーブル

userテーブル作成ステートメント

存在しない場(chǎng)合はテーブルを作成user (
   uid int(11) NOT NULL,
   username varchar(30) NOT NULL,
   password char(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

存在しない場(chǎng)合はテーブルを作成 order_goods (order_goods (
   oid int(11) NOT NULL,
   uid int(11) NOT NULL,
   name varchar(50) NOT NULL,
   buytime oid int(11) NOT NULL,
uid int(11) NOT NULL、

name varchar(50) NOT NULL、
buytime int(11) NOT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ユーザー テーブル データは次のとおりです: uidusernamepassword1Jingtian 1 234562 王暁爾2456673王寶強(qiáng)12355314ジン?ボラン1234555 ファン?ビンビン5abcwa6黃暁明abcdeef7anglebabycaption8TFBOYSabcdwww9アンochao12tfdd wd10Gao Xiaofeng3124qwqw11李小強(qiáng)323fxfvdvd12李小超311aqqee13 ハン?シャオピン121rcfwr fq14ソン?シャオカン123123tcsd15トン?シャオガン3cxvdfs
??????

order_goods データは次のとおりです:

123121241312スプライト132323334153 4242123 53iPhoneキーボード12123413
oiduidnamebuytime
110Apple Mouse1212 313
23iphone 12秒

注: 上記の order_goods テーブルでは、uid は user テーブルの uid フィールドを指します。上の表では、oid を持つデータ行は 1 で、uid を持つユーザーは 10 です。ユーザー テーブルの uid 10 を持つユーザーの場(chǎng)合: Gao Xiaofeng。ユーザーは Apple マウスを購(gòu)入しました。購(gòu)入時(shí)間 buytime は Unix タイムスタンプです。

內(nèi)部結(jié)合

基本構(gòu)文 1:

カテゴリ詳細(xì)説明基本構(gòu)文select テーブル 1. フィールド [エイリアス]、テーブル n. テーブル 1 のフィールド [エイリアス] 】 ]、テーブル n where 條件 例 user.uid 、user.username を username、order_goods.oid、order_goods.uid、order_goods.name を shopname として選択します (user.uid = order_goods.uid)。 ;説明例製品テーブル內(nèi)のどのユーザーが製品を購(gòu)入したかをクエリし、ユーザー情報(bào)を表示します

注: 次の例では、from テーブルはテーブル エイリアスを使用します。

テーブル名が長(zhǎng)すぎるため、記述するたびに間違いを犯しやすくなります。表の後に英語(yǔ)の短縮文字列を直接続けることができます。以前にフィールドを結(jié)合する場(chǎng)合は、省略形 string.field を使用してください。

mysql> ユーザー名として u.uid、u.username、ショップ名として o.oid、o.uid、o.name をユーザー u,order_goods o から選択します (u.uid = o.uid;
) +-----+----------+-----+-----+--------------+
|uid | ショップ名 | +-----+----------+-----+-----+--------------+
| 10 | アップルマウス | | 王寶強(qiáng) 2 | | 12 | リー?シャオチャオ 15 | トン?シャオガン | 李文凱 5 |
+-----+----------+-----+-----+--------------+
セットの5行(0.00秒)表 1 條件に基づく INNER JOIN テーブル n;




user.uid 上のユーザー內(nèi)部結(jié)合 order_goods から user.uid 、user.username をユーザー名、order_goods.oid、order_goods.uid、order_goods.name をショップ名として選択します。 order_goods.uid;

説明例productテーブル內(nèi)のどのユーザーが商品を購(gòu)入したかをクエリし、ユーザー情報(bào)を表示します

結(jié)果は基本文法 1 と一致しています。

mysql> user.uid = order_goods.uid のユーザー內(nèi)部結(jié)合 order_goods から user.uid 、user.username を username、order_goods.oid、order_goods.uid、order_goods.name として選択します。 +-----+----------+-----+-----+--------------+
|uid | ショップ名 | +-----+----------+-----+-----+--------------+
| 10 | アップルマウス | | 王寶強(qiáng) 2 | | 12 | リー?シャオチャオ | 15 | トン?シャオガン | 王寶強(qiáng) 5 |
+-----+----------+-----+-----+--------------+
セット內(nèi)の 5 行 (0.00 秒) 外部結(jié)合 JOIN table n on 條件;





select * from user left join order_goods on user.uid = order_goods.uid;

例の説明
左、商品を購(gòu)入していないユーザーをクエリし、ユーザー情報(bào)を表示します

        1. <span id="4wp8t"></span>

          外部結(jié)合は左結(jié)合と右リンクに分かれます。具體的な定義は次のとおりです。

          左結(jié)合: 右側(cè)のテーブルに一致しないレコードも含めて、左側(cè)のテーブルのすべてのレコードが含まれます

          mysql> select * from user left join order_goods on user.uid = order_goods.uid;
          +-- - --+----------+-----+------+------+---- --- --------+----------+
          | ユーザー名 |
          +-----+-- --- ------+-----------+------+------+------------- --+ -----------+
          | 3124qwqw | 1235531 | 3121241 | 311aqqee | 342421 3 | 5 | 1235531 | null | null | |
          | 5abcwa | NULL |
          | | NULL | 12tfddwd | NULL | 123123tcsd完全| NULL | NULL ----------+-----+-----+-----+----- ---- --+
          16 行セット (0.00 秒)

          右結(jié)合: 右のテーブルに一致しないレコードも含めて、右のテーブルのすべてのレコードが含まれます

          カテゴリ詳細(xì)な説明
          基本構(gòu)文テーブル1を選択します。フィールド [エイリアスとして]、テーブル n。テーブル 1 のフィールドを條件に右結(jié)合テーブル n に結(jié)合します。
          select * from user right join order_goods on user.uid = order_goods.uid;
          例の説明 製品テーブル內(nèi)のどのユーザーが製品を購(gòu)入したかをクエリし、ユーザー情報(bào)を表示します

          mysql> select * from user right join order_goods on user.uid = order_goods.uid;
          +------+- - --------+----------+-----+-----+--------------+ - ----------+
          | ユーザー名 | パスワード |
          +------+- -- -------+-----+-----+------+----------+
          | 10 | 3124qwqw | 1235531 | 李暁朝11aqqee | 13232333 |
          | 3cxvdfs | 1235531 |
          +----- --- ---+----------+-----+-----+--------+---- -- ----+
          セット內(nèi)の 5 行 (0.00 秒)

          サブクエリ

          クエリを?qū)g行するときに、必要な條件が別の選択ステートメントの結(jié)果である場(chǎng)合、サブクエリを使用する必要がある場(chǎng)合があります。サブクエリに使用されるキーワードには、in、not in、=、!=、exists、notexists などが含まれます。

          カテゴリ詳しい説明基本構(gòu)文select field from table where field in (條件)例1select * from user where uid in (1 、3、 4);例1の説明idで指定されたユーザーをクエリ例2select * from user where uid in (select uid from order_goods);例2の説明 情報(bào)グッズを購(gòu)入したユーザーの割合が表示されます

          例 1:

          mysql> select * from user where uid in (1,3,4);
          +-----+----------+----------+
          |ユーザー名 |
          +-----+----------+----------+
          | 123456 |
          | 3 | 1235531 |
          | ジン?ボラン | 123455 | +-----+----------+----------+
          セット內(nèi)の 3 行 (0.00 秒)

          例 2:

          mysql> select * from user where uid in (order_goods から uid を選択);

          +-----+----------+----------+
          |ユーザー名 |
          +-----+----------+----------+
          | 10 | 高暁峰 | 3124qwqw | | 3 | 1235531 |
          | 12 | 311aqqee | | 15 | 3cxvdfs | +-----+----------+----------+
          セット內(nèi)の 4 行 (0.00 秒)


          mysql> select * from emp where deptno in (select deptno from dept);

          レコード結(jié)合

          以下に従って 2 つのテーブルのデータを結(jié)合するには、union および Union all キーワードを使用します。ある クエリ條件をクエリした後、結(jié)果が結(jié)合されて表示されます。 2 つの主な違いは、結(jié)果が直接マージされるのに対し、union は、union all の後に結(jié)果に対して個(gè)別の操作を?qū)g行し、重複レコードを削除した結(jié)果であることです。

          カテゴリ
          詳しい説明基本構(gòu)文select文1 Union[all] select文2select * from user where uid in (1 、3、4 );productテーブルのユーザー情報(bào)の結(jié)果とuserテーブルのユーザー情報(bào)を結(jié)合しますmysql> select uid from user Union select uid from order_goods; +-----+
          例の説明
          | UID |
          +-----+

          | 1 |
          | 2 |
          | 3 |
          | 4 |
          | 5 |
          | 6 |
          | 7 |
          | 8 |
          | 9 |
          | 10 |
          | 11 |
          | 12 |
          | 13 |
          | 14 |
          | 15 |
          +-----+
          15 行セット (0.00 秒)


          學(xué)び続ける

          ||
          <?php echo "Hello Mysql"; ?>
          提出するリセットコード