SQL 기본
- 다수의 SQL 문을 실행한다면 세미콜론으로 분리 필요
- SQL_1; SQL_2; SQL_3;
- 주석
- -- (주석내용) : 인라인 한 줄짜리 주석
- /* (주석내용) */ : 여러 줄에 걸쳐 사용 가능한 주석
- 팀 프로젝트의 경우 팀에서 사용하는 포맷 설정 후 진행
- 테이블/필드 이름의 규칙을 정하는 것이 중요
SQL DDL - 테이블 구조 정의 언어
- CREATE TABLE
- Primary key 속성을 지정할 수 있지만, 무시
(Primary key uniqueness - 데이터 웨어하우스에서는 지켜지지 않음) - CTAS - CREATE TABLE 테이블 이름 AS SELECT
- 새로운 테이블을 생성할 때 기존의 테이블의 내용과 똑같이 한 번에 복사하고자 할 때 사용
- Primary key 속성을 지정할 수 있지만, 무시
- DROP TABLE
- DROP TABLE 테이블 이름; - 존재하지 않는 테이블을 지우려 하는 경우 에러 발생
- DROP TABLE IF EXISTS 테이블 이름; - 테이블 이름이 있으면 삭제, 없으면 에러
- ALTER TABLE
- ALTER TABLE 테이블 이름 ADD COLUMN 필드 이름 필드 타입;
- 새로운 컬럼 추가 - ALTER TABLE 테이블 이름 RENAME 현재 필드 이름 to 새 필드 이름;
- 기존 컬럼 이름 변경 - ALTER TABLE 테이블 이름 DROP COLUMN 필드이름;
- 기존 컬럼 제거 - ALTER TABLE 현재 테이블 이름 RENAME to 새 테이블 이름;
- 테이블 이름 변경
- ALTER TABLE 테이블 이름 ADD COLUMN 필드 이름 필드 타입;
테이블 데이터 기본 조작 언어 (형태)
SELECT : 원하는 필드 입력
FROM : 레코드를 읽어 올 테이블 설정
WHERE : 레코드 선택 조건 지정
GROUP BY : 그룹을 지정하여 원하는 레코드 추출
ORDER BY : 추출한 레코드의 순서를 지정
레코드 수정 언어
INSERT INTO : 테이블에 레코드 추가
UDATE FROM : 테이블 레코드의 필드 값 수정
DELETE FROM : 테이블 레코드 삭제
데이터 엔지니어는 기억하자
- 현업에서 깨끗한 데이터는 존재하지 않는다!
- 항상 믿을 수 있는 데이터인지 의심!
- 노가다를 해보자! - 실제로 레코드를 100개, 1000개 든 보는게 가장 정확하다
- 데이터 일을 한다면 항상 데이터의 품질을 의심하고 체크하자!
- 중복 레코드 확인
- 최근 데이터 존재 여부 확인 (freshness)
- Primary key uniqueness가 지켜지는지 확인
- 값이 비어있는 컬럼이 있는지 확인
- unit test를 만들어 매번 쉽게 체크 할 수 있다!
- 일정 시점이 지나면 너무 많은 테이블들이 존재한다
- 회사의 성장과 밀접
- 중요한 테이블이 무엇이고 그것들의 메타 정보를 잘 관리하는 것이 중요
- 위의 시점부터는 Data Discovery 문제들이 발생
- 무슨 테이블에 내가 원하고 신뢰할 수 있는 정보가 있는가?
- 테이블에 대해 질문을 하고 싶은데 누구한테 하면 좋을까?
728x90
'ssung_데이터 엔지니어링 > 5주차_데이터 웨어하우스, SQL, 데이터분석' 카테고리의 다른 글
데이터 웨어하우스, SQL, 데이터분석 (4) (1) | 2023.12.07 |
---|---|
데이터 웨어하우스, SQL, 데이터분석 (3) (0) | 2023.11.15 |
데이터 웨어하우스, SQL, 데이터분석 (1) (0) | 2023.11.13 |