ThinkCatLog

[SQL] SELECT로 데이터 가져오기 본문

데이터 분석/SQL

[SQL] SELECT로 데이터 가져오기

생각냥 2024. 1. 9. 23:20

SQL 공부한 내용을 정리하기 위해 작성하는 글입니다. 아래의 데이터를 python을 이용하여 SQL에 저장하여 사용하였습니다.

작업환경
MySQL Server 8.2.0
MySQL Workbench 8.0.34
Python 3.11.2
사용한 데이터 : Netflix Movies and TV Shows(kaggle) 

데이터 출처 : https://www.kaggle.com/datasets/shivamb/netflix-shows

 

Netflix Movies and TV Shows

Listings of movies and tv shows on Netflix - Regularly Updated

www.kaggle.com

SQL로 데이터 가져오기  

SELECT

SQL로 데이터를 가져올 때 SELECT 명령문(statement)을 사용한다. LIMIT, DISTINCT, WHERE 문에 대해서 정리하였다.

WHERE문은 일반 조건문 뿐만 아니라 BETWEEN, IN, LIKE 등의 연산자를 이용하여 사용할 수 있다. 다음 포스팅에서 정리해보려고 한다.

기본 문법

SELECT column1, column2, ...
FROM table_name

SELECT 뒤에는 table에서 가져오고 싶은 컬럼명을 FROM 뒤에는 사용할 table의 이름을 적는다.

table의 모든 데이터를 가져오기

모든 컬럼을 가져오고 싶을 때에는 SELECT 뒤에 *(asterisk)를 사용한다.

SELECT * 
FROM table_name

아래 사진은 MySQL Workbench에서 실제 SQL 쿼리를 실행한 사진이다. 

table 내 모든 데이터 가져오기

일부 데이터만 가져오기

SELECT *
FROM table_name
LIMIT 10

LIMIT 뒤에 가져오고 싶은 만큼의 행의 수를 적어주면 된다. 위의 쿼리는 10개의 행을 가져온다는 의미이다.

table 내 10개의 행 데이터 가져오기

중복되는 행을 제거하여 가져오기

SELECT DISTINCT 구문을 사용하여 중복되는 행을 제거하여 가져온다. 지정한 컬럼의 unique 값만 보고 싶을 때 사용할 수 있다.

SELECT DISTINCT
	column1
FROM table_name

아래 사진과 같이 중복되는 열을 제거하여 하나의 값만 가져온다.

중복 행 제거

아래의 쿼리는 Netflix 테이블의 type 컬럼의 unique 값을 가져오는 쿼리이다. type column은 Movie와 TV Show 값으로 이루어진 것을 알 수 있다.

type행 중복 제거

COUNT 함수와 함께 사용하여 해당 컬럼의 unique 값의 갯수를 출력할 수 있다.

SELECT COUNT(DISTINCT column1)
FROM table_name

type 컬럼의 unique 값의 갯수를 출력

특정 조건의 행만 가져오기

WHERE을 이용하여 특정 조건의 행만 가져올 수 있다. 아래 쿼리는 column1이 value1인 행만 가져오게 하는 쿼리이다. value1가 string인 경우에는 따옴표로 감싸줘야 하며, 숫자는 그대로 사용하면 된다.

SELECT *
FROM tabel_name
WHERE column1 = "value1"

아래의 쿼리는 Netflix라는 테이블에서 type = "movie"인 행을 가져오는 쿼리이다. type에는 Movie와 TV Show가 있다.

type = "movie"인 행만 가져오기

아래의 쿼리는 Netflix라는 테이블에서 release_year >= 2020 에 해당하는 행을 가져오는 쿼리이다.

release_year >= 2020 인 행만 가져오기

AND, OR, NOT

WHERE문에는 AND, OR, NOT 연산자(operator)를 사용할 수 있다.

두 개 이상의 조건을 AND나 OR로 연결하여 사용할 수 있다. NOT은 부정 연산자로 조건에 해당하지 않는 행을 가져온다.

SELECT *
FROM table_name
WHERE column1 = 'value1' AND column2 >= value2

아래 쿼리는 Netflix 테이블에서 country가 'South Korea', release_year 가 2020 이상인 행을 가져오는 쿼리이다.

country가 'South Korea', release_year 가 2020 이상

아래 쿼리는 Netflix 테이블에서 country가 'South Korea' 또는 'Japan'인 행을 가져오는 쿼리이다.

country가 'South Korea' 또는 'Japan'

아래의 쿼리는 type = 'Movie'가 아닌 행을 가져오는 쿼리이다.

type = 'Movie'가 아닌 행


참고자료 : https://www.w3schools.com/sql