[SQL] SQL 기본 문법

Peter·2021년 7월 12일
0

SQL

목록 보기
7/19

SQL 기본

기본사용법

  • 다수의 SQL문을 실행하다면 세미콜론으로 분리 필요
    - SQL문1; SQL문2; SQL문3;
  • "--": 인라인 한줄짜리 주석
  • "/--/: 여러 줄에 걸쳐 사용 가능한 주석

규칙

  • 키워드의 대문자 사용, 테이블, 필드 이름 정하기 등 팀 프로젝트라면 팀에서 사용하는 규칙을 만들고 따르는 것이 중요
  • 단수형 User vs Users 복수형
  • _ vs CamelCasing -> user_session_channel vs UserSessionChannel

SQL DDL(테이블 구조 정의 언어)

CREATE TABLE

  • Primary key 속성을 지정할 수 있으나 무시됨
  • Big Data 데이터웨어하우스에서는 지켜지지 않음
  • CTAS: CREATE TABLE table_name AS SELECT
  • vs CREATE TABLE and then INSERT
CREATE TABLE raw_data.user_session_channel(
	userid int,
    sessionid varchar(32) primary key,
    channel varchar(32)
);
  • CTAS를 통해 선택한 자료를 새로만들 테이블을 만들면서 데이터까지 가져올 수 있음

DROP TABLE

  • DROP TABLE table_name;
    - 없는 테이블을 지우려고 하는 경우 에러를 냄
  • DROP TABLE IF EXISTS table_name;
    - 테이블이 있을 때만 DROP 명령 수행함
  • vs. DELETE FROM
    - DELETE FROM은 조건에 맞는 레코드들을 지움(테이블 자체는 존재)

ALTER TABLE

  • 새로운 컬럼 추가: ALTER TABLE 테이블이름 ADD COLUMN 필드이름 필드타입;
  • 기존 컬럼 이름 변경: ALTER TABLE 테이블이름 RENAME 현재필드이름 to 새필드이름;
  • 기존 컬럼 제거: ALTER TABLE 테이블이름 DROP COLUMN 필드이름;
  • 테이블 이름 변경:ALTER TABLE 현재테이블이름 RENAME to 새테이블이름;

SQL DML(테이블 데이터 조작 언어)

레코드 수정 언어

  • INSER INTO: 테이블에 레코드를 추가하는데 사용(인서트는 오래결려서 copy 기능을 많이 사용)
  • UPDATE FROM: 테이블 레코드의 필드 값 수정
  • DELETE FROM: 테이블에서 레코드를 삭제
    - vs. TRUNCATE

레코드 질의 언어: SELECT

  • SELECT FROM: 테이블에서 레코드와 필드를 읽어오는데 사용
  • WHERE: 레코드 선택 조건을 지정
  • GROUP BY: 정보를 그룹 레벨에서 뽑는데 사용하기도 함
    - DAU, WAU, MAU 계산은 GROUP BY를 필요로 함
  • ORDER BY: 레코드 순서를 결정
  • 보통 다수의 테이블을 조인해서 사용함

데이터 처리 주의사항

  • 항상 데이터를 믿을 수 있는지 의심할 것!
  • 실제 레코드를 몇 개 살펴보는 것 만한 것이 없음 -> 노가다
  • 중복된 레코드들 체크하기
  • 최근 데이터의 존재 여부 체크하기
  • 값이 비어있는 컬럼들이 있는지 체크하기
  • 위의 체크는 코딩의 UNIT TEST 형태로 만들어 매번 쉽게 체크해볼 수 있음
profile
컴퓨터가 좋아

0개의 댓글