SELECT 기본

Table 이란?

테이블은 DB에서 데이터를 저장해두는 공간입니다. 엑셀의 sheet와 비슷하며, 차이점은 미리 컬럼의 이름과 데이터 형식을 정해둔다는 것 입니다. 대표적인 데이터 형식은 int(숫자), text(텍스트), timestamp(날짜)가 있습니다.

id (int)
name (text)
birth (timestamp)

1

Heehong Moon

1986-08-20

2

Sunny Kim

1989-10-04

3

Morning Moon

2022-09-05

일반적으로 각 테이블에는 숫자로 된 id를 가지도록 테이블을 디자인 합니다. id는 고유값으로 특정한 row를 지칭할때 사용됩니다.

SELECT의 기본 모양

-- users 이라는 테이블에 있는 id, name, birth 컬럼의 데이터를 가져옵니다.
SELECT id, name, birth 
FROM users;

테이블에 정의된 모든 컬럼을 가져오기 위해서 아래와 같이 간단하게 * 을 사용할 수 있습니다.

-- users 테이블의 전체를 리턴합니다.
SELECT * 
FROM users;

조건식

전체 테이블에서 어떠한 조건을 만족하는 데이터만 가져오기 위해서는 WHERE 절을 이용합니다.

숫자나 텍스트 형식에 사용할수 있는 다양한 조건 오퍼레이터가 있습니다. 대표적으로 사용되는 오퍼레이터 예제입니다.

오퍼레이터
의미
예제

=, !=

같다 또는 다르다.

col_name != 3

>, >=, <, <=

크다, 크거나 같다, 작다, 작거나 같다

col_name >= 10

IN (...)

하나라도 같은게 있다

col_name IN (3, 6, 9)

NOT IN (...)

... 중 같은게 하나도 없다.

col_name NOT IN (3, 6, 9)

여러가지 조건을 동시에 만족하는 행만 리턴하기 위해서는 AND 또는 OR 를 사용합니다. AND는 두 조건 모두 만족하는 경우, OR는 두 조건 중 하나만 만족해도 결과에 포함됩니다.

텍스트를 조건으로 사용할때는 항상 Single Quote(')를 사용하여 묶어야 합니다. Double Quote(")를 사용하면 정상동작 하지 않습니다.

NULL

데이터가 없는 없을 의미할때 NULL을 사용합니다. 주의 해야 할점은 데이터가 없는 조건을 걸때는 등호(=, !=)로 쿼리하면 안되고 IS, IS NOT 오퍼레이터를 사용해야 합니다.

오퍼레이터
의미
예제

IS NULL

데이터가 없음

col_name IS NULL

IS NOT NULL

데이터가 있음

col_name IS NOT NULL

정렬

조건식에 맞는 행을 어떤 순서로 정렬할지 정할수 있습니다. 특정 컬럼의 오름차순 또는 내림 차순으로 정렬할 수 있습니다.

기본값은 오름차순이며, 오름차순일때는 ASC, 내림 차순은 DESC 로 지정합니다.

정렬 순서를 여러개 지정하려면 콤마로 할수 있습니다.

LIMIT

쿼리에서 가져오는 데이터 개수를 제한합니다. 쿼리의 조건식에 부합하는 행이 100개 라도 LIMIT 10을 하면 10개만 가져옵니다.

연습

데이터

10KB
Open
  • id : 고유 id

  • kakao_id : 카카오로 가입한 유저의 id

  • fb_id : 페이스북으로 가입한 유저의 id

  • google_id : 구글로 가입한 유저의 id

  • name : 유저 이름

  • created_time : 가입일

  • last_login : 마지막 로그인 시간

문제

  • id가 207751 보다 큰 유저

  • 이름이 Lois Wagner 인 유저

  • 구글로 가입한 유저 10명

  • 카카오로 가입한 유저 3명을 가입일 내림차순으로 정렬

  • 페이스북으로 가입한 유저 중 2020-12월 이후 로그인 한 유저

Last updated

Was this helpful?