Develop/DevCourseTIL

05.09 데이터 엔지니어링 22일차 - SQL Analysis (2)

향식이 2023. 5. 9. 16:58

SQL의 기본

  • 먼저 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요
    • SQL1문; SQL2문; SQL3문;
  • SQL 주석
    • --: 인라인 한줄짜리 주석, 자바에서 //에 해당
    • /* -- */: 여러 줄에 걸쳐 사용 가능한 주석
  • SQL 키워드는 대문자를 사용한다던지 하는 나름대로의 포맷팅이 필요
    • 팀 프로젝트라면 팀에서 사용하는 공통 포맷이 필요
  • 테이블/필드 이름의 명명규칙을 정하는 것이 중요
    • 단수형 vs 복수형
    • _ vs CamelCasing

 

DDL: 테이블 구조 정의 언어

    1. CREATE TABLE

  • Primary key 속성을 지정할 수 있으나 무시됨
    • Primary key uniqueness
    • BigData 데이터 웨어하우스에서는 지켜지지 않음 (Redshift, Snowflake, BigQuery) 
  • 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)
);

 

    2. DROP TABLE

  • DROP TABLE table_name;
    • 없는 테이블을 지우려고 하는 경우 에러 발생
  • DROP TABLE IF EXISTS table_name;
  • vs. DELETE FROM
    • DELETE FROM은 조건에 맞는 레코드들을 지움 (테이블 자체는 존재)

    3. ALTER TABLE

  • 새로운 컬럼 추가
    • ALTER TABLE table_name ADD COLUMN field_name field_type;
  • 기존 컬럼 이름 변경
    • ALTER TABLE table_name RENAME field_name to new_field_name;
  • 기존 컬럼 제거 
    • ALTER TABLE table_name DROP COLUMN field_name;
  • 테이블 이름 변경
    • ALTER TABLE table_name RENAME to new_table_name;

 

DML: 테이블 데이터 조작 언어

  • SELECT: 레코드 질의 언어
    • SELECT FROM: 테이블에서 레코드와 필드를 읽어오는 데 사용
    • WHERE를 사용해서 레코드 선택 조건을 지정
    • GROUP BY를 통해 정보를 그룹 레벨에서 뽑는데 사용
      • DAU, WAU, MAU 계산은 GROUP BY를 필요로 함
    • ORDER BY를 사용해서 레코드 순서를 결정
    • 보통 다수의 테이블을 조인해서 사용
  • 레코드 수정 언어
    • INSERT INTO: 테이블의 레코드를 추가하는 데 사용
    • UPDATE FROM: 테이블 레코드의 필드 값 수정
    • DELETE FROM: 테이블에서 레코드를 삭제, 트랜잭션 사용 가능
      • vs. TRUNCATE: 트랜잭션 사용 불가능 
반응형