DQL은 데이터를 쿼리하는데 사용되는 SQL문을 뜻합니다. Query의 사전적 의미는 묻다, 질문하다 라는 뜻 이다. 데이터베이스의 상황에 빗대어 보면, 데이터베이스 서버에게 데이터를 달라고 요청하는 것 이라고 해석할 수 있다. 실제로 프론트/백엔드 간의 소통을 위한 API를 구현할 때, 데이터베이스에 저장된 데이터를 쿼리해서 가져온 데이터를 응답으로 보내주는 경우가 많다.
SELECT
: 데이터 조회WHERE
, LIKE
: 데이터를 조회할때 조건을 부여할 수 있다.JOIN
: 연결성이 있는 테이블 결합SELECT * FROM table_name; # table_name 테이블의 모든 데이터 조회
SELECT songs.title FROM songs;
# 현재 songs 테이블에 들어간 노래제목들만 뽑아내는 쿼리문
SELECT songs.title, songs.lyrics FROM songs;
# `,`로 구분해서 나열 해 주면 여러 칼럼의 값을 테이블에서 뽑아올 수 있다.
SELECT songs.lyrics FROM songs WHERE songs.title = '파도';
# 파도 라는 노래의 가사가 궁금하다면 다음과 같은 쿼리문을 작성할 수 있다.
WHERE + LIKE 조건문
LIKE
문을 사용하면 문자열에 대해 검색하기가 훨씬 수월 해 진다. 예를들어, 우리가 이 데이터베이스를 가지고 음원사이트 서비스를 구현한다고 생각 해 보자. 사용자는 노래 가사의 일부 만으로도 노래를 검색하고 싶어 한다. 이럴때 LIKE
문을 사용할 수 있다.
LIKE
문은 특수문자를 사용해서 문자열을 검색 할 수 있다.
SQL LIKE 연산자
예제 1
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%넘실넘실%';
# 위에서의 WHERE문은 = 연산자를 사용해서 정확한 값으로 비교를 했지만
# LIKE 문을 사용하면 이 처럼 넘실넘실이 포함된 데이터를 쿼리할 수 있다.
예제 2
SELECT songs.title, songs.lyrics FROM songs WHERE songs.title LIKE 'All%';
# songs.title의 값이 All 로 시작하면 쿼리문에 의해 데이터가 조회된다.
SELECT songs.title, songs.lyrics FROM songs WHERE songs.lyrics LIKE '%가져가도 돼요';
# songs.lyrics의 값이 가져가도 돼요로 끝나면 쿼리문에 의해 데이터가 조회된다.
JOIN
은 두개의 테이블을 결합할 때 사용 되는데 위의 밴다이어그램에 표현된 것 처럼 집합 개념으로 생각하면 이해하기 어렵지 않다. 교집합, 즉 연결성이 있는 부분(칼럼)으로 두 개의 테이블을 결합 할 수 있다.