English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQL WHERE 문

MySQL 테이블에서 SQL SELECT 문을 사용하여 데이터를 읽는 방법을 알고 있습니다.

테이블에서 조건에 따라 데이터를 선택하려면 WHERE 문을 SELECT 문에 추가할 수 있습니다.

문법

아래는 SQL SELECT 문에서 WHERE 문을 사용하여 데이터 테이블에서 데이터를 읽는 일반 문법입니다:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE 조건1 [AND [OR]] 조건2.....
  • 쿼리 문에서 하나 이상의 테이블을 사용할 수 있으며, 테이블 간은 콤마(,)로 구분하고 WHERE 문을 사용하여 쿼리 조건을 설정할 수 있습니다.

  • WHERE 문에서 어떤 조건을 지정할 수 있습니까?

  • AND 또는 OR를 사용하여 하나 또는 여러 조건을 지정할 수 있습니다.

  • WHERE 문은 SQL의 DELETE 또는 UPDATE 명령어에도 적용될 수 있습니다.

  • WHERE 문은 프로그램 언어의 if 조건과 유사하며, MySQL 테이블의 필드 값에 따라 특정 데이터를 읽습니다.

아래는 연산자 목록으로, WHERE 절에서 사용할 수 있습니다.

아래 표에서는 A 가 10, B 가 20

연산자설명示例
=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false。
, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true。
>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false。
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true。
>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(A >= B) 返回false。
<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true。

如果我们想在 MySQL 数据表中读取指定的数据,WHERE 子句是非常有用的。

使用主键来作为 WHERE 子句的条件查询是非常快速的。

如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。

从命令提示符中读取数据

我们将在SQL SELECT语句使用WHERE子句来读取MySQL数据表 w3codebox_tbl 中的数据:

示例

以下示例将读取 w3codebox_tbl 表中 w3codebox_author 字段值为 Sanjay 的所有记录:

SELECT * from w3codebox_tbl WHERE w3codebox_author='基础教程网';

输出结果:

MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 關鍵字来设定 WHERE 子句的字符串比较是区分大小写的。

如下示例:

BINARY 關鍵字

mysql> SELECT * from w3codebox_tbl WHERE BINARY w3codebox_author='oldtoolbag.com';
Empty set (0.01 sec)
 
mysql> SELECT * from w3codebox_tbl WHERE BINARY w3codebox_author='oldtoolbag.com';
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        1 | PHP을 배우기   | oldtoolbag.com    | 2018-04-14      |
|        2 | MySQL을 배우기   | oldtoolbag.com    | 2018-04-14      |
|        3 | JAVA 교육   | oldtoolbag.com    | 2018-04-14      |
+----------+-------------+--------------+-----------------+
3 rows in set (0.00 sec)

예제에서 사용된 BINARY ключ워드는 대소문자 구분이 있으므로 w3codebox_author='oldtoolbag.com' 의 쿼리 조건은 데이터가 없습니다.

PHP 스크립트로 데이터를 읽기

mysqli_query() 함수와 같은 SQL SELECT 명령어를 사용하여 WHERE 문자句를 포함한 데이터를 가져올 수 있습니다.

이 함수는 SQL 명령을 실행한 후 PHP 함수 mysqli_fetch_array()을 통해 모든 쿼리 데이터를 출력하는 데 사용됩니다.

온라인 예제

다음 예제는 w3codebox_tbl 테이블에서 w를 사용하여 반환3codebox_author 필드 값이 oldtoolbag.com의 기록:

<?php
$dbhost = 'localhost';  // MySQL 서버 호스트 주소
$dbuser = 'root';            // MySQL 사용자 이름
$dbpass = '123456';          // MySQL 사용자 이름 비밀번호
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('연결 실패: ' . mysqli_error($conn));
}
// 编码 설정, 중국어 깜빡임 방지
mysqli_query($conn, "set names utf8);
 
// w를 읽기3codebox_author이 oldtoolbag.com의 데이터
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl
        WHERE w3codebox_author="oldtoolbag.com"';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
    die('데이터 읽기 불가: ' . mysqli_error($conn));
}
echo '<h2">기본 튜토리얼 웹 MySQL WHERE 문 테스트<h2">;</
echo '<table border="1><tr><td>교육 ID</td><td>제목</td><td>작가</td><td>제출 날짜</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['w3codebox_id']}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
// 메모리 해제
mysqli_free_result($retval);
mysqli_close($conn);
?>

출력 결과는 다음과 같습니다: