MySQL-WHERE句
SQLを見てきました SELECTMySQLテーブルからデータをフェッチするコマンド。と呼ばれる条件節を使用できますWHERE Clause結果を除外します。このWHERE句を使用して、テーブルから必要なレコードを選択するための選択基準を指定できます。
構文
次のコードブロックには、MySQLテーブルからデータをフェッチするためのWHERE句を含むSELECTコマンドの汎用SQL構文があります。
SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
カンマで区切られた1つ以上のテーブルを使用して、WHERE句を使用してさまざまな条件を含めることができますが、WHERE句はSELECTコマンドのオプション部分です。
WHERE句を使用して任意の条件を指定できます。
を使用して複数の条件を指定できます AND または OR 演算子。
WHERE句をDELETEまたはUPDATESQLコマンドと一緒に使用して、条件を指定することもできます。
ザ・ WHERE 句は次のように機能します if condition任意のプログラミング言語で。この句は、指定された値をMySQLテーブルで使用可能なフィールド値と比較するために使用されます。外部からの指定された値がMySQLテーブルで使用可能なフィールド値と等しい場合、その行を返します。
これは、で使用できる演算子のリストです。 WHERE 句。
フィールドAが10を保持し、フィールドBが20を保持すると仮定すると、-
オペレーター | 説明 | 例 |
---|---|---|
= | 2つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。 | (A = B)は真ではありません。 |
!= | 2つのオペランドの値が等しいかどうかをチェックし、値が等しくない場合は条件が真になります。 | (A!= B)は真です。 |
>> | 左側のオペランドの値が右側のオペランドの値より大きいかどうかを確認します。大きい場合は、条件が真になります。 | (A> B)は正しくありません。 |
< | 左側のオペランドの値が右側のオペランドの値よりも小さいかどうかを確認します。小さい場合は、条件が真になります。 | (A <B)は真です。 |
> = | 左のオペランドの値が右のオペランドの値以上であるかどうかをチェックし、そうである場合は、条件が真になります。 | (A> = B)は正しくありません。 |
<= | 左のオペランドの値が右のオペランドの値以下であるかどうかをチェックし、そうである場合は、条件が真になります。 | (A <= B)は真です。 |
WHERE句は、選択した行をテーブルからフェッチする場合、特にWHERE句を使用する場合に非常に便利です。 MySQL Join。結合については、別の章で説明します。
を使用してレコードを検索するのが一般的な方法です。 Primary Key 検索を高速化します。
指定された条件がテーブル内のどのレコードとも一致しない場合、クエリは行を返しません。
コマンドプロンプトからデータを取得する
これは、WHERE句を指定したSQL SELECTコマンドを使用して、選択したデータをMySQLテーブルからフェッチします– tutorials_tbl。
例
次の例では、からすべてのレコードを返します。 tutorials_tbl 著者名が Sanjay。
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)
mysql>
実行しない限り LIKE文字列での比較では、大文字と小文字は区別されません。を使用して、検索で大文字と小文字を区別することができますBINARY 次のようなキーワード-
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl \
WHERE BINARY tutorial_author = 'sanjay';
Empty set (0.02 sec)
mysql>
PHPスクリプトを使用したデータの取得
同じSQLSELECTコマンドをWHERECLAUSEとともにPHP関数に使用できます。 mysql_query()。この関数は、SQLコマンドと後で別のPHP関数を実行するために使用されますmysql_fetch_array()選択したすべてのデータをフェッチするために使用できます。この関数は、行を連想配列、数値配列、またはその両方として返します。行がなくなると、この関数はFALSEを返します。
例
次の例では、からすべてのレコードを返します。 tutorials_tbl 著者名が Sanjay −
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title,
tutorial_author, submission_date
FROM tutorials_tbl
WHERE tutorial_author = "Sanjay"';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>