SELECT & FROM & WHERE구 간단 정리

genie_h·2021년 12월 9일
0

TIL

목록 보기
1/5
post-thumbnail

들어가기 전...
처음 SQL을 공부할 때 나는 비전공자였기에 무식한 방법으로 이론을 파려고 했었다. (그 때는 아예 프로그래밍 언어에 대한 지식이 거의 없었음. R만 조금 할 줄 아는 상태.)
하지만 데이터 분석 현직자분을 만나뵌 뒤 그게 아니라는 것을 깨달았다.
'데이터 분석에 필요한 구문'만 빨리 익히고 같은 문제라도 쿼리를 이리저리 다양하게 많이 짜보라는 조언을 해 주셨는데 지금은 그게 무슨 말인지 너무 잘 알겠다.

그래서 오늘과 앞으로의 포스팅에서는 SQL의 기본적인 구문을 "간단히" 정리하고자 한다.



데이터 가공 및 분석에 필요한 SQL Type

  • 데이터를 제어하거나 트랜젝션을 제어하지는 않을 것이기 때문에 쿼리를 작성하는데 주요한 명령어를 위주로 사용
  • DML (Data Manipulation Language)
    → 데이터 조작어
    → 데이터를 검색하고 새로운 행을 삽입, 수정, 삭제하는 언어
    select, insert, update, delete 등이 이에 해당
  • DDL (Data Definition Language)
    → 데이터 정의어
    → 테이블 또는 데이터를 정의하고 구조를 생성, 수정, 제거하는 언어
    create, alter, drop, rename, truncate

쿼리 구문의 순서

  • 각 구문의 순서가 정확해야 실행이 가능 (아닐 경우 오류 발생)
  • select - from - where - group by - having - order by 순으로 실행


  • SELECT와 FROM 구는 쿼리에 필요한 "필수 구문"으로 반드시 작성해야 한다.
  • WHERE 구는 "선택 구문"으로 조건이 있을 때 작성할 수 있으며 반드시 작성해야 쿼리가 실행되는 것은 아니다.

1. SELECT

  • 데이터를 검색하기 위한 명령어
  • select 뒤에는 보통 조회할 컬럼명들이 온다
  • 컬럼명들은 as를 사용하여 '별칭'으로 바꿀 수 있다(컬럼명 간소화)
  • 검색 결과는 원본 테이블에 반영되지 않는다 (검색만 해주는 명령어)
select col1, col2, ... col as a -- 이런식으로 별칭 가능
from ~ ;

2. FROM

  • 데이터를 선택해오는 대상 테이블을 지정하는 구문
  • 여러 데이터베이스를 사용하기 때문에 보통 '데이터베이스명.테이블명'으로 작성한다
  • 테이블명이 긴 경우에도 마찬가지로 별칭 사용이 가능하다
select col1, col2, ...
from db.table1 as tab1;

3. WHERE

  • 테이블에 '조건'을 걸어 검색하고 싶은 경우 적용하는 명령어
  • 조건에 맞는 결과만 select로 검색이 된다
  • 주의할 점은 반드시 from절 다음에 where 절을 작성해야 오류가 나지 않는다 (컴퓨터가 from - where - select 순으로 명령을 처리하기 때문)
  • 연산자 (비교/SQL/논리연산자) 등으로 조건문 작성이 가능하다
select col1, col2, ...
from db1.table1
where col1 >= 3 ; -- 3 이상만에 해당하는 값만 가져와라

📌 자주 쓰이는 연산자 정리

종류기호의미예시
비교연산자=같다col = 'dessert'
! =, <>같지 않다col <> 'dessert'
>, >=~보다 크다, ~보다 크거나 같다total >= 30000
<, <=~보다 작다, ~보다 작거나 같다total <= 30000
SQL 연산자BETWEEN 'A' AND 'B''A 이상 B 이하' (A, B 포함임)members BETWEEN 3000 and 4000
IN (리스트)'리스트' 중 어느 값이라도 일치하는 경우job in ('analyst', 'marketer')
LIKE '비교문자'비교문자와 비슷한 경우last_name like 'KIM%' → KIM으로 시작하는 글자
IS (NOT) NULLNULL값인 (아닌) 경우col is null
논리연산자AND다수 조건 모두 충족category = 'cafe' and d_type = 'coffee'
OR다수 조건 중 하나라도 충족category = 'cafe' or d_type = 'coffee'
NOT조건과 반대인 경우month(order_date) not 3


⭐주의할점

컬럼명 IS NULL

  • 데이터가 없는 경우가 NULL
  • 0과 NULL은 다르다. 0은 0이라는 값이 있는 것이지만 NULL은 아예 빈 것을 의미.
  • NULL은 비교연산자와 사용 못하고(데이터 없기 때문) IS NULL 또는 IS NOT NULL로 입력해야 함

오늘은 여기까지!

다음 포스팅으로 group by, having, order by, join, 윈도우 함수 등 차례로 TIL로 정리할 예정이다.
정리하면서 다시 한 번 느끼는 것은 어떤 기술을 배울 때는 학문이 아닌 이상 이론을 깊게 파기보다는 빨리 적용하는 연습을 하는게 훨씬 낫다는 것!

profile
데이터 분석에 관심 많은 취준생

0개의 댓글