ホームページ > バックエンド開発 > PHPの問題 > PHP データベースのクエリ ステートメントに焦点を当てる

PHP データベースのクエリ ステートメントに焦点を当てる

PHPz
リリース: 2023-04-06 09:30:02
オリジナル
746 人が閲覧しました

PHP は、さまざまなデータ型とデータベースを統合できる人気のあるサーバー側スクリプト言語です。特に Web アプリケーションの開発では、データの取得や操作のためにデータベースにアクセスすることが必要になることがよくあります。この記事では、PHP データベースのクエリ ステートメントに焦点を当てます。

1. データベース クエリ ステートメントとは

データベースを運用する過程で、データベースからデータを取得する必要があることがよくあります。このとき、クエリステートメントを使用する必要があります。データベース クエリ (SQL クエリ) は、データベースからデータを取得するための一連の命令です。 SQL は Structured Query Language の略で、データベースにアクセスして操作するためにリレーショナル データ管理システム (RDBMS) で広く使用されている言語です。

PHP では、さまざまな機能を使用してさまざまなタイプのデータベースにアクセスできます。 PHP は MySQL、PostgreSQL、Oracle などのデータベースをサポートしており、各データベースのクエリ文は若干異なりますが、基本的には SQL 言語を使用して実装されます。

2. クエリ ステートメントの構造

単純なクエリ ステートメントには通常、SELECT、FROM、WHERE の 3 つの部分が含まれます。 SELECTには取得する列を指定し、FROMにはテーブル名を指定し、WHERE句には検索条件を指定します。

以下は基本的なクエリ ステートメントの構造です:

SELECT カラム 1、カラム 2、...
FROM テーブル
WHERE 条件;

カラムは必要なものを示します。取得する列名。複数の列名はカンマで区切ります。通常、すべての列を選択することを示すには、列名の代わりに * (アスタリスク) が使用されます。

table は操作するテーブルの名前を示します。

condition は、レコードを取得するための条件と制限を指定し、論理演算子 (AND、OR など) を使用して接続するオプションのオプションです。

たとえば、次の例では、ユーザー名と電子メール フィールドが「admin」、パスワード フィールドが「123」である「users」テーブルのレコードを取得します。

SELECT username, email,パスワード
FROM ユーザー
WHERE ユーザー名 = 'admin' AND パスワード = '123';

ただし、より複雑なクエリ要件の場合は、SELECT、FROM、および WHERE だけを使用すると、次のことができない場合があります。この場合、JOIN ステートメントやサブクエリなどの高度なクエリ ステートメントを使用する必要があります。これについては後の章で説明します。

3. クエリ結果の処理

クエリ ステートメントによって返される結果は通常、複数の行を含むテーブルであり、各行は対応するレコードを表します。 PHP アプリケーション開発者にとって、テーブル エントリは配列であり、各セルの内容は配列内の要素です。クエリ結果の処理には 3 つの部分が含まれます。

  1. データベース クエリを実行し、結果セットを取得します。

PHP で mysqli_query と PDO::query を使用してクエリ ステートメントを実行し、結果セットを返します。例:

$query = "SELECT ユーザー名、電子メール、パスワード FROM ユーザー WHERE ユーザー名 = 'admin' AND パスワード = '123'";
$result = mysqli_query($connection, $query);

  1. 結果セットを処理します。

mysqli_fetch_assoc、PDO::fetch、およびその他の関数を使用して、結果セットからデータを抽出します。例:

while ($row = mysqli_fetch_assoc($result)) {

echo "username: " . $row["username"] . " email: " . $row["email"] . " password: " . $row["password"];
ログイン後にコピー

}

  1. 結果セットを解放します。

PHP では、結果セットの使用を終了したら、リソースの無駄を避けるために、mysqli_free_result または PDOStatement::closeCursor 関数を使用して結果セットを解放する必要があります。例:

mysqli_free_result($result);

4. 高度なクエリ テクノロジ

  1. JOIN

JOIN ステートメントは、以下を組み合わせることができます。 2 つまたは複数のテーブルを結合して、新しい大きなテーブルを作成します。一般的な JOIN ステートメントには、内部結合、外部結合 (左結合と右結合)、自己結合などが含まれます。

Inner JOIN: 2 つのテーブルの条件を満たすレコードのみが返されます。つまり、2 つのテーブルを結合する場合、両方のテーブルの同じ値のみが取得されます。

例:

SELECTorders.OrderID、customers.CustomerName、orders.OrderDate
FROMorders
INNER JOINcustomers
ONorders.CustomerID=customers.CustomerID;

このクエリは、customers テーブル (customers) に関連付けられている、orders テーブル (orders) 内のすべての注文を返します。内部結合の記号は JOIN または INNER JOIN で、ON キーワードは主キーを指定します。リンクに使用される /foreign キー。キーの条件。

  1. サブクエリ

サブクエリとは、別の SQL ステートメントに SQL クエリを埋め込むことを指します。通常、サブクエリはメイン クエリの結果セットを制限するために使用されます。サブクエリは複数のクエリ内でネストできます。これはネストされたクエリと呼ばれます。

例:

SELECT AVG(DISTINCT Price) FROM Products
WHERE ProductName IN (SELECT ProductName FROM Orders WHERE CustomerID=1);

このクエリは次の値を返します。 ID 顧客 1 が注文したすべての製品の平均価格は、実際には、サブクエリ リストを使用して顧客 1 が購入したすべての製品をクエリし、AVG 関数を外部に配置して平均を計算します。

  1. UNION

UNION ステートメントは、2 つ以上の SELECT ステートメントの結果セットを結合します (結果は同じフィールドを持つ必要があるため、結果の宣言にエイリアスが使用される場合があります)。 、結果セットから重複した行を削除します。 UNION ステートメントの形式は次のとおりです。

SELECT 列名 FROM table1
UNION
SELECT 列名 FROM テーブル 2;

例:

SELECT ProductName FROM Products
UNION
SELECT ProductName FROM Suppliers
ORDER BY ProductName;

このクエリは、サプライヤー (Suppliers) および製品 (Products ) を含むすべての製品名を返します。クエリ結果を照会し、重複を削除し、名前で並べ替えます。

概要

この記事は、クエリ ステートメントの構造とクエリ結果の処理方法、および JOIN、サブクエリなどの一般的に使用される高度なクエリ テクノロジに焦点を当てて、PHP データベース クエリ ステートメントを紹介することを目的としています。そしてUNIONステートメント。これらの高度なクエリ テクノロジを適切に使用すると、データベースから必要なデータをより効率的に取得できます。

以上がPHP データベースのクエリ ステートメントに焦点を当てるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート