24.01.03. SQLD

예진·2024년 1월 3일
0

TIL

목록 보기
11/68

SQL 기본

기본 구조 : 데이터 베이스 - 테이블 -필드 - 레코드

DDL : 테이블 생성, 수정, 삭생

  • CREATE(생성), ALTER(구조), DROP(데이터베이스 내에서 삭제)

DML : 데이터 삽입, 조회, 업데이트, 삭제

  • INSERT(삽입), SELECT(조회), UPDATE(수정), DELETE(테이블 내에서 삭제)

DCL_TCL :

  • DCL : GRANT(특정 권한 부여), REVOKE(권한 제거)
  • TCL : COMMIT(트랜잭션의 변경 사항 확정), ROLLBACK(변경 사항 취소)

기본 쿼리 (SELECT, FROM, WHERE)

  • SELECT : 데이터 조회
  • FROM : 조회할 테이블 지정
  • WHERE : 특정 조건에 맞는 데이터 조회

필터링 쿼리 (ORDER BY, GROUP BY, HAVING)

  • ORDER BY : 특정 순서로 정렬
  • GROUP BY : 특정 열의 값에 따라 데이터를 그룹화
  • HAVING : 그룹화된 결과에 조건을 적용

SQL 기초 함수 및 연산자
문자열 함수 : 텍스트 데이터를 처리하는데 사용

  • CONCAT : 문자열 결합
  • SUBSTRING : 문자열의 일부를 추출
  • TRIM : 문자열의 앞뒤 공백을 제거
  • LOWER : 문자열을 소문자로 변환
  • UPPER : 문자열을 대문자로 변환

수치 함수 : 숫자 데이터 처리하는데 사용

  • ROUND : 숫자를 반올림
  • ABS : 절댓값 변환
  • SUM : 합계
  • AVG : 평균값
  • COUNT : 행의 수

연산자

  • 논리연산자 : AND, OR, NOT 조건을 결합하거나 부정
  • 비교연산자 : =, <, > 값들을 비교
  • BETWEEN : 사이
  • LIKE : %에 따라 앞, 뒤, 가운데를 포함한 값 조회
  • IN : 해당 내용에 속한 값 조회

중급 SQL

SQL JOIN : 두 개 이상의 테이블을 연결하여 데이터 검색

  • INNER JOIN : 두 테이블에서 일치하는 행만 반환
    ON 절을 사용하여 두 테이블 간의 연결 조건 지정
  • LEFT OUTER JOIN :왼쪽 테이블의 모든 행과 오른 쪽 테이블에 일치하는 행 을 반환
    왼쪽 테이블 기준 / 일치하지 않는 경우 NULL 처리
  • RIGHT OUTER JOIN : 오른쪽 테이블 기준
    LEFT와 같음
  • FULL OUTER JOIN : 두 테이블의 모든 행을 반환
    전체 데이터 결합 / 일치하지 않는 행 NULL 처리
  • CROSS JOIN : 두 테이블 간 가능한 모든 조합을 생성
    모든 조합 생성 / 크로스 프로덕트 : 두 테이블의 행 수를 곱한 만큼 조합을 포함

SQL 복잡한 쿼리
SUBQUERY : SQL 쿼리 내에 포함된 다른 쿼리

데이터 필터링, 복잡한 집계, 데이터 변환 등을 수행

  • 메인 쿼리 안에 포함되어 있는 또 다른 쿼리
  • 단일 행 반환 서브쿼리/ 다중 행 반환 서브쿼리
  • SELECT, FROM, WHERE 절 등에서 사용
  • 데이터 필터링, 복잡한 집계, 데이터 조인 등에 활용

Conditional Logic : 특정 조건에 따라 다른 결과를 출력, 데이터 처리

  • CASE 구문은 조건부 로직을 구현하는 데 사용
  • 데이터 분류, 새로운 계산된 컬럼 생성, 데이터 변환

Set Operations : 집합연산, 여러 쿼리 결과를 결합

  • UNION : 두 개 이상의 쿼리를 결합, 중복 제거한 단일 결과 집합 생성
  • INTERSECT : 두 쿼리 결과 중 공통 요소만 선택해 새로운 결과 집합 생성
  • EXCEPT : 첫 번째 쿼리 결과에서 두 번째 쿼리 결과를 제외한 요소들로 구성된 결과 집합 생성

SQL 윈도우 함수 : 데이터를 특정 범위(윈도우) 내에서 그룹화하고 각 그룹에 대한 계산을 수행하는 SQL의 고급 기능

  1. OVER
    윈도우 함수가 작동하는 행의 집합 또는 윈도우를 정의
    ex. AVG(eee) OVER(ORDER BY aaa, ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
  • ORDER BY aaa : aaa 기준으로 정렬
  • 로우에서 앞으로 1 뒤로 1 사이의 ROWS
  1. PARTITION BY
    데이터를 특정 칼럼의 값에 따라 여러 파티션으로 나눔
    ex. SUM(eee) OVER(PARTITON BY ddd)
    ddd별로 합산된 eee
  2. ROW_NUMBER, RANK, DENSE_RANK
  • ROW_NUMBER() : 각 파티션 내에 고유한 순서를 할당
  • RANK () : 동일한 값을 가진 항목에 동일 순위를 부여, 다음 순위 건너뜀
  • DENSE_RANK () : 동일한 값을 가진 항목에 동일 순위 부여, 순위 건너뛰지 X
  1. LEAD, LAC
  • LEAD () : 현재 행으로부터 지정된 수만큼 이후의 행을 참조
  • LAG () : 현재 행으로부터 지정된 수만큼 이전 행을 참조

SQL 데이터 관리

트랜잭션 관리 : 데이터베이스에서 데이터의 일관성과 정확성을 유지하는 중요한 역할

  • BEGIN TRANSACTION : 트랜잭션 시작 알림
  • COMMIT : 트랜잭션 내의 모든 변경 사항을 데이터베이스에 영구적으로 적용
  • ROLLBACK : 모든 변경사항 취소, 트랜잭션 시작 전의 상태로 되돌림
  • TRANSACTION ISOLATION LEVEL : 다른 트랜잭션과의 격리 수준 설정

VIEWS
데이터베이스에서 하나 이상의 테이블로부터 파생된 가상 테이블

데이터 효율적 관리, 복잡한 쿼리 단순화 / 코드 테스트

  • 가상테이블 : 실제 데이터를 저장하지 않는 가상 테이블
  • 재사용 가능 : 뷰를 통해 정의한 쿼리는 여러번 재사용할 수 있음
  • 보안 : 특정 데이터만을 사용자에게 노출시킬 수 있음
  • 단순화 : 복잡한 쿼리를 뷰로 정의하여 간단하게 만들 수 있음

INDEXING

데이터베이스에서 데이터의 검색 속도 향상시키는 중요한 기능

  • 데이터 접근 속도 향상 : 특정 조건에 맞는 데이터 빠르게 검색
  • 검색 및 정렬 최적화 : 특정 컬럼에 대한 정렬 연산이 효율적으로 수행
  • 성능상의 비용 : 인덱스는 저장공간을 차지, 데이터 삽입이나 수정 시 추가 연산 필요

SQL 최적화

성능 분석 및 튜닝 : SQL 쿼리 효율성 증가, 실행 시간 단축, 리소스 사용 최적화

  • 쿼리 최적화 : 쿼리의 성능을 개선하여 더 빠른 응답 시간과 효율적인 리소스 사용을 달성
  • 인덱스 사용 : 적절한 인덱스 사용하여 데이터 검색 속도를 향상
  • 성능 분석 도구 : Explain 등의 도구 사용하여 쿼리 실행 계획 분석, 평가

SQL 공부

쿼리 작성 요령

  • 명확하고 간결한 쿼리 : 불필요한 데이터 검색, 목적에 맞는 데이터만 선택
  • 적절한 명ㅁ여 규칙 사용 : 테이블과 컬럼에 명확한 이름 사용하여 쿼리의 이해 도움
  • 주석 사용 : 쿼리의 목적과 구조를 설명하여 다른 사용자의 이해와 수정 용이하게 함
  • 복잡한 쿼리의 단계적 구성 : 큰 쿼리를 여러 단계로 나누어 작성하여 복잡성 줄이고 가독성 높임
profile
Data Analysis / 맨 땅에 헤딩

0개의 댓글