마케터를 위한 SQL : 중간 정리 (SELECT, FROM, WHERE)

Sean Lee·2022년 10월 2일
0

마케터를 위한 SQL

목록 보기
6/7
post-thumbnail

SQL

SQL은 Structured Query Language(구조화된 질의어)의 줄임말로, 관계형 데이터베이스(Relational Database)에 저장된 여러 테이블과 데이터를 조건에 맞춰 원하는 형태로 추출(Retrieve) 및 가공(Process)하는데 사용되는 언어입니다. (입력, 수정, 삭제 등 그밖에 다양한 기능도 존재합니다.)

SQL을 함수처럼 생각하고 이해하는 방식도 재미있습니다. 함수의 입력값은 데이터베이스에 저장된 단일 혹은 복수의 테이블이며, 함수의 출력값은 M*N 사이즈를 갖는 단일 테이블입니다. 입력을 받아서 어떻게 출력을 할 것인지는 SQL 구문이 정의하게 됩니다.

SQL을 작성할 때 M*N으로 나올 결과 테이블을 머릿속으로 그려볼 수 있다면 SQL 구문을 어떻게 작성해야하는지 그 구조와 절차를 쉽게 떠올릴 수 있습니다. 한마디로 쿼리 작성 실력을 빠르게 향상시킬 수 있습니다.


M*N 테이블

M*N 테이블을 구성하기 위해서는 행과 열을 선택합니다.

  1. 우선 열 먼저 선택하기 위해 우리는 SELECT 구문 편에서 "SELECT {컬럼명} FROM {테이블명}" 구문을 배웠습니다. 이를 통해 테이블의 어떤 컬럼(N)을 표현할 것인지 정의할 수 있습니다.
  2. 이후 행을 선택하기 위해 우리는 WHERE 절을 통한 조건부 쿼리 (연산자) 편에서 WHERE 절과 여러 종류의 연산자에 대해 알아보았습니다. 이를 통해 조건에 맞는 열/값 (M)을 정의할 수 있습니다.

아래 이미지는 단일 테이블에서 어떻게 행과 열을 선택하여 M*N 결과 테이블을 가질 수 있는지 그 방법에 대해 빠르게 이해할 수 있는 미니 Cheat Sheet / 요약본 (컨닝페이퍼는 어감이 조금 이상하니 요약본 정도로 표현)을 만들어보았습니다.

가로로 보면 크게 3개의 구간으로 나뉘어져 있습니다. [열 선택, 회원 테이블, 행 필터] 그 구간에 맞는 쿼리 예제를 몇개 담아보았습니다.


SQL 구문 특성

앞서 다루지는 않았지만 SQL의 문법은 몇가지 특징을 가지고 있습니다. 그 중 대표적인 5가지를 소개해드리고자 합니다.

1. SQL 명령은 반드시 세미콜론(;)으로 끝나야 합니다.

원칙적으로는 세미콜론을 구문 끝에 붙여야하지만, SQL 에디터에 따라 세미콜론이 없어도 쿼리가 실행되기도 합니다.

SELECT * FROM users; -- 세미콜론으로 끝나는 명령
SELECT * FROM products; -- 세미콜론으로 끝나는 명령

2. SQL 키워드는 대소문자를 구분하지 않습니다.

대소문자를 구분하지 않는 대상은 SQL 요소에서 배운 SQL 키워드 구문에만 해당됩니다. 컬럼명이나 테이블명으로는 대소문자를 구분해서 작성해야 합니다. 저는 개인적인 편의상 SQL 키워드를 대문자로 작성하여 SQL 키워드가 무엇인지 바로 알아볼 수 있도록 작성하고 있습니다.

SELECT * FROM users; -- 대문자 표현, 결과 동일
select * from users; -- 소문자 표현, 결과 동일

3. SQL 요소와 요소 사이의 간격은 자유롭게 적용 가능합니다.

다른 개발 언어와 달리 SQL은 요소와 요소 사이에 들여쓰기나 탭, 줄바꿈 그리고 스페이스에 대한 제약이 없습니다. 요소 사이의 간격 제약이 없다는 의미는 개인의 취향에 따라 코드를 나열할 수 있다는 의미입니다. 실제로 SQL 코드가 길어지게 되면 가독성을 높이기 위해 각자의 스타일대로 SQL 구문을 배치시키기도 합니다.

-- -------------------------------
-- 취향 1
SELECT
	name, email
FROM 
	users
WHERE 
	social_login 	= 'google' 	AND 
    marketing_agree = True 		AND
    user_status		= 'active';
-- -------------------------------
-- 취향 2
SELECT name, email
FROM users
WHERE social_login='google' AND marketing_agree=True AND user_status='active';
-- -------------------------------

4. 값을 나타낼때는 작은 따옴표(')를 사용해서 표현합니다.

컬럼의 값을 나타낼때는 작은 따옴표('')로 그 대상을 감싸서 표현해야합니다. 또한 작은 따옴표 안의 값은 대소문자를 구분합니다.

SELECT * FROM users WHERE email = 'wansunlee@gmail.com'; -- 작은따옴표로 감싼 이메일 주소 값
SELECT * FROM users WHERE name = '이완선'; -- 작은따옴표로 감싼 이름 값

5. 주석의 표현 방식

주석이란 일반적으로 프로그램에 영향을 주지 않는 참고사항이나 메모입니다. 쿼리를 작성하다보면, 쿼리의 목적이나 단계별 주의사항을 메모해야 할 상황이 생기기 마련입니다.

한줄 주석 : --
한줄 주석의 경우 주석의 시작점부터 줄바뀜이 일어나기 전까지 모든 내용을 주석으로 처리합니다.

SELECT * FROM users; -- 여기가 바로 주석부분입니다. 주석이 시작된 이후의 줄에는 SQL실행시 아무런 영향이 없습니다. (글이 길어져서 여러줄로 표현되겠지만 줄바뀜(엔터)가 적용된 것은 아니라서 이렇게 길어도 모두 한줄로 취급합니다.) 
-- SELECT * FROM users; 이렇게 SQL 구문이 들어가도 이 부분은 SQL로 인식되지 않고 건너 뛰게 됩니다.

여러줄 주석 : /* */
여러줄 주석의 경우 위와같은 기호 사이에 주석 내용을 추가하면 됩니다.

SELECT * FROM user; /*여러줄 주석의 경우에는 기호 사이에만 글을 작성한다면, 
줄바뀜(엔터)을 포함해도 주석으로 인식됩니다.*/

이후 블로그 내용

이후의 블로그에서는 M*N 테이블을 어떻게 가공할 것인지 그 다양한 방법을 소개할 예정입니다. 또한 지금까지는 단일 테이블을 바탕으로 SQL 쿼리를 작성했는데, 이후에는 여러개의 테이블을 바탕으로 다양한 방식으로 결합시키는 방법에 대해 알아볼 예정입니다.

profile
배우기만 하고 생각하지 않으면 얻는 것이 없고, 생각만 하고 배우지 않으면 위태롭다.

0개의 댓글