Study/DB

[MySQL] SELECT 기본 조회, WHERE 조건문 사용법 및 예제

 

SELECT 문은 데이터베이스에서 데이터를 조회할 때 사용합니다.

전체 데이터를 조회하는 방법과 SELECT 문과 WHERE 절을 사용하여 한 가지 혹은 여러 조건으로 조회하는 방법에 대해 설명드리겠습니다.

 

기본 구조

SELECT 문에서 많이 사용하는 기본 구조는 다음과 같습니다.

SELECT [컬럼명]
FROM [테이블명]
WHERE [조건]
GROUP BY [컬럼명]
ORDER BY [컬럼명] [ASC | DESC]

 

MySQL 공식문서에 나와있는 구문은 더 많지만 많이 사용되는 기본적인 구조는 이와 같습니다.

쉽게 설명하면, 테이블의 조건과 일치하는 데이터를 조회한다는 의미입니다.

 

예제 데이터를 통해 좀 더 자세히 설명드리겠습니다.

예제 데이터는 MySQL 샘플 데이터베이스인 world DB의 데이터를 사용하겠습니다.

(MySQL 샘플 데이터베이스 다운로드 방법 참고)

 

MySQL 8버전을 사용했고, MySQL Workbench에서 실행하였습니다.

 

전체 조회

테이블의 모든 데이터를 조회하고 싶을 때 다음과 같이 사용합니다.

SELECT * FROM <테이블명>

MySQL SELECT 테이블 전체 데이터 조회
MySQL SELECT 테이블 전체 데이터 조회

world 데이터베이스에 있는 city 테이블의 모든 데이터를 조회하는 쿼리입니다.

 

혹시 테이블이 없다거나 못찾는다는 오류가 발생하면 use <데이터베이스명> 명령어를 사용하거나 데이터베이스 우클릭 -> Set as Default Schema를 선택하면 됩니다.

 

전체 컬럼 말고 일부 컬럼만 보고싶을 때는 다음과 같이 사용합니다.

SELECT <컬럼명1>, <컬럼명2> .. <컬럼명5>
FROM <테이블명>

MySQL SELECT 일부 컬럼 조회

city 테이블에서 도시이름(Name)과 인구수(Population) 컬럼만 조회하는 쿼리입니다.

 

 

 

 

조건부 조회

원하는 조건의 데이터만 조회하고 싶을 때는 다음과 같이 사용합니다.

SELECT * FROM <테이블명>
WHERE <조건>

MySQL SELECT 테이블 조건부 데이터 조회
MySQL SELECT 테이블 조건부 데이터 조회

인구수 100만명이 넘는 데이터를 조회하였습니다.

 

WHERE 절에 들어갈 수 있는 조건은 다양합니다.

그리고 AND와 OR을 사용해서 여러개의 조건을 걸어서 조회할 수 있습니다.

 

비교

1. 일치

특정 데이터와 일치하는지 여부를 조회할 때는 등호(=)를 사용합니다.

일치하지 않는 데이터를 조회할 때는 <>, != 연산자를 사용합니다.

여러 데이터 중에서 일치하는지 여부를 조회할 때는 IN 절을 사용합니다.

# 국가 코드가 KOR인 도시 조회
SELECT * FROM city WHERE CountryCode = 'KOR'

# 국가 코드가 KOR이거나 USA인 도시 조회
SELECT * FROM city WHERE CountryCode in ('KOR', 'USA')

# 국가 언어 데이터에서 국가 코드가 KOR이 아닌 데이터 조회
SELECT * FROM countryLanguage WHERE CountryCode <> 'KOR'
SELECT * FROM countryLanguage WHERE CountryCode != 'KOR'

 

2. 대소

이상, 이하, 초과, 미만 등 대소를 비교하고자 할 때는 <=, =>, <, > 연산자를 사용합니다.

# 인구 수가 100만명이 넘는 도시 조회 
SELECT * FROM city WHERE Population > 1000000

# 인구 수가 100만명 이하인 도시 조회
SELECT * FROM city WHERE Population <= 100000

 

3. 범위

특정 범위에 있는 데이터를 조회할 때는 BETWEEN 절을 사용합니다.

BETWEEN의 범위에는 범위에 사용된 데이터도 포함됩니다.

(ex. 범위가 1~10이면 1과 10도 포함)

# 인구 수가 2만 ~ 3만명인 데이터 조회
SELECT * FROM city WHERE Population between 20000 and 30000

 

4. NULL

데이터가 NULL인지 아닌지 여부를 판단할 때는 IS NULL, IS NOT NULL을 사용합니다.

# 수도 데이터가 없는 국가 조회
SELECT * FROM country WHERE Capital is null

# 수도 데이터가 있는 국가 조회
SELECT * FROM country WHERE Capital is not null

 

포함

특정 문자열을 포함하는 데이터를 조회할 때는 LIKE 절을 사용합니다.

LIKE 절은 대소문자를 구분하지 않습니다.

# 이름이 A로 시작하는 도시 조회 
SELECT * FROM city WHERE Name like 'A%'

# 이름이 E로 끝나는 도시 데이터 조회
SELECT * FROM city WHERE Name like '%E'

# 이름에 O가 포함되는 도시 데이터 조회
SELECT * FROM city WHERE Name like '%O%'

 

부정

조건을 부정하고자 할 때 NOT을 사용합니다.

# 국가의 면적이 1000 이하가 아닌 데이터(= 국가의 면적이 1000을 넘는 데이터)
SELECT * FROM country WHERE NOT SurfaceArea <= 1000

# 국가의 면적이 1000 ~ 10000이 아닌 데이터
SELECT * FROM country WHERE NOT SurfaceArea BETWEEN 1000 and 10000
SELECT * FROM country WHERE SurfaceArea NOT BETWEEN 1000 and 10000

# 국가의 이름에 A가 포함되지 않은 데이터
SELECT * FROM country WHERE Name NOT LIKE '%A%'

 

여러 조건

WHERE 절에는 여러 조건을 사용할 수 있습니다.

주어진 조건에 모두 일치하는 데이터를 찾고자 할 때는 AND, 여러 조건 중 한 조건만 일치하는 데이터를 찾고자 할 때는 OR을 사용하면 됩니다.

# 국가 언어 데이터 중 영어를 사용하고, 퍼센트가 10 미만인 데이터 조회
SELECT * FROM countrylanguage
WHERE Language = 'English' AND Percentage < 10

# 국가 언어 데이터 중 영어를 사용하거나, 퍼센트가 10 미만인 데이터 조회
SELECT * FROM countrylanguage
WHERE Language = 'English' OR Percentage < 10

 

 

읽으면 좋은 글

[MySQL] SELECT GROUP BY 기본 사용법 및 예제

 

[MySQL] SELECT GROUP BY 기본 사용법 및 예제

데이터 조회할 때 GROUP BY 절을 사용하면 특정한 열이나 데이터를 기준으로 결과값을 그룹화할 수 있습니다. 그렇게 그룹화된 데이터를 기준으로 각종 통계값을 구할 수 있습니다. 기본 그룹 조

priming.tistory.com

[MySQL] SELECT ORDER BY 정렬 사용법 및 예제

 

[MySQL] SELECT ORDER BY 정렬 사용법 및 예제

ORDER BY 문은 데이터를 정렬할 때 사용합니다. 단일 컬럼 혹은 2개 이상의 컬럼이나 함수를 기준으로 데이터를 오름차순, 내림차순으로 정렬이 가능합니다. 기본 정렬 기본적으로 많이 사용하는

priming.tistory.com