MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLサブクエリとその一般的なカテゴリは何ですか?


サブクエリは、クエリ内のクエリとして定義するのが最適です。サブクエリを使用すると、クエリの実行時に実際に開発される基準のデータ行を選択するクエリを作成できます。より正式には、別のSELECTステートメントの句の1つでSELECTステートメントを使用することです。実際、サブクエリは、別のサブクエリ内にある別のサブクエリ内に含めることができます。サブクエリは、INSERT、UPDATE、およびDELETEステートメント内にネストすることもできます。サブクエリは括弧で囲む必要があります。

サブクエリは、単一の値を返すことを条件として、式が許可されている任意の場所で使用できます。これは、単一の値を返すサブクエリをFROM句のリストにオブジェクトとしてリストすることもできることを意味します。サブクエリがFROM句の一部として使用される場合、仮想テーブルまたはビューのように扱われるため、これはインラインビューと呼ばれます。サブクエリは、メインクエリのFROM句、WHERE句、またはHAVING句のいずれかに配置できます。これは、INNERQUERYまたはINNERSELECTとも呼ばれ、サブクエリを含むクエリは、OUTERQUERYまたはOUTERSELECTまたはCONTAINERQUERYと呼ばれます。以下はその一般的なカテゴリです-

スカラーサブクエリ

スカラーサブクエリは、単一の値、つまり1行に1列のデータを返します。スカラーサブクエリは単純なオペランドであり、単一の列またはリテラルが有効であるほとんどすべての場所で使用できます。これを説明するために、次のデータを持つ「Cars」、「Customers」、および「Reservations」のテーブルを使用しています-

mysql> Select * from Cars;
+------+--------------+---------+
| ID   | Name         | Price   |
+------+--------------+---------+
| 1    | Nexa         | 750000  |
| 2    | Maruti Swift | 450000  |
| 3    | BMW          | 4450000 |
| 4    | VOLVO        | 2250000 |
| 5    | Alto         | 250000  |
| 6    | Skoda        | 1250000 |
| 7    | Toyota       | 2400000 |
| 8    | Ford         | 1100000 |
+------+--------------+---------+
8 rows in set (0.02 sec)

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from Reservations;
+------+-------------+------------+
| ID   | Customer_id | Day        |
+------+-------------+------------+
| 1    | 1           | 2017-12-30 |
| 2    | 2           | 2017-12-28 |
| 3    | 2           | 2017-12-29 |
| 4    | 1           | 2017-12-25 |
| 5    | 3           | 2017-12-26 |
+------+-------------+------------+
5 rows in set (0.00 sec)

スカラーサブクエリは単一の値を返すことがわかっているので、以下はスカラーサブクエリです-

mysql> Select Name from Customers WHERE Customer_id = (Select Customer_id FROM Reservations WHERE ID = 5);
+--------+
| Name   |
+--------+
| Gaurav |
+--------+
1 row in set (0.06 sec)
テーブルサブクエリ

テーブルサブクエリは、1つ以上のデータ列を含む1つ以上の行を含む結果を返します。テーブル「cars」、「Customers」、「Reservations」のデータを使用した次のクエリは、テーブルサブクエリの例です-

mysql> Select Name from customers where Customer_id IN (SELECT DISTINCT Customer_id from reservations);
+---------+
| Name    |
+---------+
| Rahul   |
| Yashpal |
| Gaurav  |
+---------+
3 rows in set (0.05 sec)
相関サブクエリ

相関サブクエリは、WHERE句で外部クエリの値を使用するサブクエリです。テーブル「cars」のデータを使用した次のクエリは、相関サブクエリの例です-

mysql> Select Name from cars WHERE Price < (SELECT AVG(Price) from Cars);
+--------------+
| Name         |
+--------------+
| Nexa         |
| Maruti Swift |
| Alto         |
| Skoda        |
| Ford         |
+--------------+
5 rows in set (0.00 sec)

mysql> Select Name from cars WHERE Price > (SELECT AVG(Price) from Cars);
+--------+
| Name   |
+--------+
| BMW    |
| VOLVO  |
| Toyota |
+--------+
3 rows in set (0.00 sec)

  1. MySQLのBLOBデータ型とTEXTデータ型の違いは何ですか?

    BLOBはBinaryLargeObjectsの略で、その名前が示すように、バイナリデータの格納に使用でき、TEXTは多数の文字列の格納に使用されます。 BLOBを使用してバイナリデータを保存できます。つまり、写真、ビデオ、サウンド、プログラムも保存できます。 たとえば、画像にはバイナリデータがあるため、次の画像をBLOBに保存できます。 BLOB値はバイト文字列のように動作し、BLOBには文字セットがありません。したがって、比較と並べ替えはバイトの数値に完全に依存します。 TEXT値は、非バイナリ文字列または文字列のように動作します。 TEXTには文字セットがあり、比較/並べ替え

  2. Windowsドメインとは何ですか?その利点は何ですか?

    職場や学校でコンピューターを使用している場合、それはほぼ確実にWindowsドメインの一部です。しかし、それは実際にはどういう意味ですか?ドメインは何をしますか、そしてドメインに参加するコンピュータの利点は何ですか? Windowsドメインとは何か、それらがどのように機能するか、そして企業がそれらを使用する理由を見てみましょう。 Windowsドメインとは何ですか? Windowsドメインは、基本的に、ビジネス環境で使用される制御されたコンピューターのネットワークです。 ドメインコントローラーと呼ばれる少なくとも1台のサーバー 、他のデバイスを担当しています。これにより、ネットワーク管理