亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

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

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

  2. 銀行は違反記録を照會し、同時にユーザーの

  3. 當選情報と當選者の基本情報を照會する場合があります。

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

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

テーブル結合

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

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

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

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

  1. ユーザー情報を格納するUserテーブル
  2. どのユーザーがどの商品を購入したかを格納するOrderテーブル

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

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

存在しない場合はテーブルを作成 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王寶強12355314ジン?ボラン1234555 ファン?ビンビン5abcwa6黃暁明abcdeef7anglebabycaption8TFBOYSabcdwww9アンochao12tfdd wd10Gao Xiaofeng3124qwqw11李小強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 を持つユーザーの場合: Gao Xiaofeng。ユーザーは Apple マウスを購入しました。購入時間 buytime は Unix タイムスタンプです。

內(nèi)部結合

基本構文 1:

カテゴリ詳細説明基本構文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)のどのユーザーが製品を購入したかをクエリし、ユーザー情報を表示します

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

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

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




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

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

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

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





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

例の説明
左、商品を購入していないユーザーをクエリし、ユーザー情報を表示します

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

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

    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 秒)

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

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

    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行するときに、必要な條件が別の選択ステートメントの結果である場合、サブクエリを使用する必要がある場合があります。サブクエリに使用されるキーワードには、in、not in、=、!=、exists、notexists などが含まれます。

    カテゴリ詳しい説明基本構文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の説明 情報グッズを購入したユーザーの割合が表示されます

    例 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);

    レコード結合

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

    カテゴリ
    詳しい説明基本構文select文1 Union[all] select文2select * from user where uid in (1 、3、4 );productテーブルのユーザー情報の結果とuserテーブルのユーザー情報を結合します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 秒)


    學び続ける

    ||
    <?php echo "Hello Mysql"; ?>