# SELECT

SQL에서 가장 기초가 되는 SELECT

# 행과 열

  • 행 : row, →, 새로운 row는 가로로 한 줄이 추가됩니다. 하나의 row가 하나의 데이터를 의미합니다
    • 예 : 거래 History에서 하나의 row가 거래를 의미
  • 열 : column, ↓, column은 원형 기둥이란 뜻이 있어서 세로를 의미하며, 각 데이터의 특정 속성 값이라고 생각하면 됩니다
    • 예 : 거래의 구매 시간, 거래의 구매자


# SELECT문

선택하고 싶은 데이터를 선택할 때, SELECT라는 명령어를 사용합니다. 기본적으로 다음과 같은 형태를 가집니다

  • 문법 : SELECT 선택할 컬럼
SELECT
  col1, col2
FROM Dataset.Table

SELECT 후에 컬럼 명을 작성하고, 여러 컬럼을 보고 싶은 경우 쉼표를 사용해서 구분하면 됩니다.

참고로 FROM은 어떤 테이블에서 데이터를 참조할 것인지를 명시하는 명령어입니다.

  • 문법 : FROM Dataset.Table


# 모든 컬럼 선택(*)

테이블의 모든 컬럼을 선택하고 싶은 경우 *를 사용합니다.

SELECT
  *
FROM Dataset.Table

TIP

단, 빅쿼리는 탐색하는 데이터 용량에 비례해서 비용이 부과되므로 *을 자제하는 것이 비용적으로 유리합니다. 제일 기본이 되는 테이블에선 컬럼을 명시적으로 나열하고, 그 이후에 *을 사용하는 것을 추천합니다

TIP

테이블에 들어간 데이터를 확인하고 싶은 경우, 테이블을 클릭한 후 "미리보기"를 클릭하면 데이터를 볼 수 있습니다



# * EXCEPT

만약 100개의 컬럼 중 하나만 제외하고 모두 SELECT하고 싶은 경우엔 * EXCEPT를 사용합니다

  • 문법 : * EXCEPT (제외할 컬럼)
SELECT
  * EXCEPT(col3, col4)
FROM Dataset.Table  


# ORDER BY

SELECT한 결과를 특정 컬럼 기준으로 정렬하고 싶은 경우(시간 순으로 정렬하거나, COUNT가 많은 순으로) ORDER BY 사용합니다.

ORDER BY는 쿼리문의 최하단에 위치하곤 합니다(ORDER BY 아래엔 보통 LIMIT만 나옵니다)

  • 문법 : ORDER BY 정렬할_컬럼 정렬_방식
    • 정렬 방식은 ASC(오름차순), DESC(내림차순)가 있으며 정렬 방식을 명시하지 않으면 기본값으로 ASC가 사용됩니다
SELECT
  col1, col2
FROM Dataset.Table
ORDER BY col3, col4


# LIMIT

SELECT한 결과 갯수(Row 수)를 제한하고 싶은 경우 LIMIT을 사용하면 됩니다.

LIMIT은 쿼리문의 최하단에 위치하며, ORDER BY와 함께 사용되곤 합니다(정렬한 후, 상위 10개 값만 출력하는 경우)

  • 문법 : LIMIT 제한할_숫자

단, LIMIT을 사용해도 빅쿼리 쿼리로 탐색하는 비용은 줄어들지 않습니다. 쿼리를 탐색하는 비용을 줄이기 위해선 파티션을 사용하면 좋습니다

SELECT
  col1, col2
FROM Dataset.Table
LIMIT 10


# AS

SELECT한 컬럼의 이름을 변경하고 싶은 경우, AS를 사용합니다. 결과의 이름을 지어주는 행위를 별칭(Alias)을 지어준다고 표현합니다

  • 문법 : SELECT col1 AS new_col_name
SELECT
  col1 AS col2
FROM Dataset.Table


# DISTINCT

중복 값을 제거하고 고유한 값을 남기고 싶은 경우 DISTINCT를 사용합니다.

DISTINCT 단독으로 사용하면 중복 값을 제거할 수 있으며, COUNT와 함께 사용해서 COUNT(DISTINCT col)의 형태로 고유한 값만 COUNT합니다.

  • 문법 : SELECT DISTINCT col1, col2
SELECT
  DISTINCT
    col1,
    col2
FROM Dataset.Table

# SQL 구문 형태

SQL은 일종의 문법(약속)이므로 문법을 지켜주셔야 정상적으로 실행할 수 있습니다

SELECT 문을 먼저 작성하고, FROM 절을 작성해주세요. 현재까지 배운 부분은 모두 고유의 순서를 가지고 있습니다.

SELECT
  column,
  column2
FROM Dataset.Table
ORDER BY column2 DESC
LIMIT 1000