English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 SQL을 사용하여 테이블에서 특정 레코드를 선택하는 방법을 배울 것입니다.
지난 장에서는 테이블이나 테이블 열에서 모든 레코드를 가져오는 방법을 배웠습니다. 그러나 현실 세계에서는 일반적으로 특정 조건을 만족하는 레코드를 선택하거나 업데이트하거나 삭제하는 것이 일반적입니다. 예를 들어, 특정 연령대나 특정 국가에 속한 레코드/지역의 사용자와 같은 것을 필터링합니다.
WHERE 절을 사용하여SELECT,UPDATE과DELETE하지만, 다음 장에서는 이 절을 다른 문장과 함께 사용하는 방법을 볼 수 있습니다.
WHERE 절은 SELECT 문과 함께 사용되어 특정 조건을 만족하는 기록만을 추출합니다. 기본 문법은 다음과 같습니다:
SELECT column_list FROM table_name WHERE condition;
여기서column_list은 값을 가져오려는 데이터베이스 테이블의 열입니다/필드이름,예를 들어name,age,country와 같은 형식으로 사용할 수 있습니다. 그러나, 테이블의 모든 열의 값을 가져오려면 다음과 같은 문법을 사용할 수 있습니다:
SELECT * FROM table_name WHERE condition;
이제, 실제 작동 방식을 보여주기 위해 몇 가지 예제를 보겠습니다.
데이터베이스에 "table_name"라는 이름의 테이블이 있습니다.employees의 테이블에 포함된 다음 기록을 가져옵니다:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 |Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
다음 SQL 문장은employees테이블에서 급여가7000의 모든 employee를 반환합니다. WHERE 절은 필요하지 않은 데이터를 필터링합니다.
SELECT * FROM employees WHERE salary > 7000;
이후 출력은 다음과 같습니다:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | +--------+--------------+------------+--------+---------+
결과적으로, 출력은 급여가7000의 고용원을 가져옵니다. 비슷하게, 특정 열에서 기록을 가져올 수 있습니다. 예를 들어:
SELECT emp_id, emp_name, hire_date, salary FROM employees WHERE salary > 7000;
위의 문장을 실행하면 다음과 같은 출력을 얻습니다:
+--------+--------------+------------+--------+ | emp_id | emp_name | hire_date | salary | +--------+--------------+------------+--------+ | 3 | Sarah Connor | 2005-10-18 | 8000 | | 4 | Rick Deckard | 2007-01-03 | 7200 | +--------+--------------+------------+--------+
다음 문장은 그의 고용원 ID가2의 고용원의 기록을 가져옵니다.
SELECT * FROM employees WHERE emp_id = 2;
이 문장은 다음과 같은 출력을 생성합니다:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 2 |Tony Montana | 2002-07-15 | 6500 | 1 | +--------+--------------+------------+--------+---------+
이번에는, 출력에서 단一行만 얻는 이유는emp_id각 직원에게 독특합니다.
SQL은 WHERE 절에서 사용할 수 있는 여러 연산자를 지원합니다. 다음 테이블은 가장 중요한 연산자를 요약합니다.
운영자 | 설명 | 온라인 예제 |
---|---|---|
= | 똑같은 | WHERE id = 2 |
> | 보다 더 나은 | WHERE age > 30 |
< | 적어도 | WHERE age < 18 |
>= | 적어도 | WHERE rating >= 4 |
<= | 적어도 | WHERE price <= 100 |
LIKE | 간단한 모드 매칭 | WHERE name LIKE 'Dav' |
IN | 지정된 값이 목록이나 서브 쿼리의 어떤 값과도 일치하는지 확인 | WHERE country IN ('USA', 'UK') |
BETWEEN | 지정된 값이 범위에 있는지 확인 | WHERE rating BETWEEN 3 AND 5 |