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

SQLite WHERE 문

SQLite WHERE절은 하나나 여러 개의 테이블에서 데이터를 가져오는 조건을 지정합니다.

주어진 조건을 만족하면 true이므로, 테이블에서 특정 값을 반환합니다. WHERE 절을 사용하여 레코드를 필터링하고 필요한 레코드만 추출해야 합니다.

WHERE 절은 SELECT 문에서만 사용되지 않으며, UPDATE, DELETE 문 등에서도 사용됩니다. 이는 후속 장에서 설명됩니다.

문법

WHERE 절을 포함한 SQLite SELECT 문의 기본 문법은 다음과 같습니다.

SELECT column1, column2, columnN FROM table_name WHERE [condition]

온라인 예제

사용할 수 있습니다비교 연산자나 논리 연산자(예를 들어 >, <, =, LIKE, NOT 등의 조건을 지정합니다. 다음 기록을 가진 COMPANY 테이블을 보세요-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          칼리포니아  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

아래는 SQLite 논리 연산자 사용법을 보여주는 간단한 예제입니다. 다음 SELECT 문은 AGE(연령)이나 같거나 큰 값을 나열합니다.25 SALARY(급여)가나 같거나 큰 값을 나열합니다.65000.00의 모든 기록.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

다음 SELECT 문은 AGE(연령)이나 같거나 큰 값을 나열합니다.25 또는 SALARY (수입)이 크거나 같습니다.65000.00의 모든 기록.

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          칼리포니아  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

SELECT 문 후에 AGE(연령) 값이 NULL이 아닌 모든 기록을 나열합니다. 이는 AGE의 값이 NULL인 기록이 없기 때문에 모든 기록이 표시된다는 의미입니다.

sqlite> * FROM COMPANY WHERE AGE IS NOT NULL;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          칼리포니아  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

다음 SELECT 문은 NAME이 'Ki'로 시작하는 모든 기록을 나열합니다. 'Ki' 이후의 어떤 기록과도 관련이 없습니다.

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

다음 SELECT 문은 NAME이 'Ki'로 시작하는 모든 기록을 나열합니다. 'Ki' 이후의 기록과는 관련이 없습니다.

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

SELECT 문 후에, AGE(연령) 값이25또는27의 모든 기록.

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

다음 SELECT 문은 AGE(연령) 값이 또는25도 아닙니다27의 모든 기록.

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          칼리포니아  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

SELECT 문 후에, AGE(연령) 값이25과27사이의 모든 기록.

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

다음 SELECT 문은 SQL 서브 쿼리를 사용하여 AGE(연령) 필드의 SALARY를 찾습니다. 65000의 모든 기록을 나열한 후 WHERE 절과 EXISTS 연산자를 함께 사용하여 외부 쿼리가 서브 쿼리가 반환한 결과에서 AGE가 존재하는 모든 기록을 나열합니다.-

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

다음 SELECT 문은 SQL 서브 쿼리를 사용하여 AGE 필드의 SALARY를 찾습니다. 65000의 모든 기록과 WHERE 연산자와 함께 사용된 WHERE 절이 외부 쿼리의 AGE가 서브 쿼리가 반환한 결과의 AGE보다 큰 모든 기록을 나열합니다.

sqlite> SELECT * FROM COMPANY 
   WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          칼리포니아  20000.0