[SQLD] 2과목 요약 정리: 2-1 SQL 기본
Note/Certificate

[SQLD] 2과목 요약 정리: 2-1 SQL 기본

728x90
반응형

 

관계형 데이터베이스

  • 데이터베이스의 발전
    1. 1960s, 파일 구조를 통해 데이터를 저장하고 관리
    1. 1970s, 계층형 데이터베이스, 망향 데이터베이스 상용화
    1. 1980s, 관계형 데이터베이스 상용화, oracle 사용 시작
    1. 1990s, 객체 관계형 데이터베이스로 발전
  • 관계형 데이터베이스
    • 1970, 영국의 수학자 E.F.Codd 박사가 처음 소개
    • 정규화를 통한 이상현상 제거, 동시성 관리, 병행 제어를 통한 동시 공유
  • SQL
    1. DML(데이터 조작어): SELECT, INSERT, UPDATE, DELETE
    1. DDL(데이터 정의어): CREATE, ALTER, DROP, RENAME
    1. DCL(데이터 제어어): GRANT, REVOKE
    1. TCL(트랜잭션 제어어): COMMIT, ROLLBACK
  • TABLE
    • 행과 칼럼의 2차원 구조를 가진 데이터 저장 장소
    • 정규화: 테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스
  • ERD
    • 구성요소: 엔티티, 관계, 속성

DDL

  • 데이터 유형
    1. CHARACTER: 고정 길이 문자열 (CHAR)
    1. VARCHAR: 가변 길이 문자열
    1. NUMBRIC: 숫자 정보 (orale: NUMBER / SQL Server: 10가지 이상)
    1. DATETIME: 날짜와 시각 정보 (oracle: DATE, SQL Server: DATETIME)
  • CREATE TABLE
    • 테이블명, 칼럼명: 문자로 시작, 길이의 한계 존재, 예약어 사용 불가, 특수문자는 ‘_’, ‘$’, ‘#’ 만 허용
    • 대소문자를 구분하지 않음
    • DATETIME 유형은 별도로 크기를 지정하지 않음
    • 문자 데이터는 최대 길이 표시
  • CONSTRAINT(제약조건)
    1. PRIMARY KEY: 기본키 정의(고유키+NOT NULL)
    1. UNIQUE KEY: 고유키 정의(NULL 가능)
    1. NOT NULL
    1. CHECK: 범위 제한(논리식 지정)
    1. FOREIGN KEY: 참조 무결성 제약 옵션 선택 가능
  • 테이블 구조 확인
    • 오라클: DESCRIBE 테이블명; or DESC 테이블명;
    • SQL Server: sp_helo ‘dbo.테이블명’
  • CTAS(Create Table As Select)
    • SELECT 문장을 활용해 테이블 생성
    • 칼럼별로 데이터 유형을 재정의할 필요 없음, not null 제외한 제약조건 사라짐
  • ALTER TABLE
    1. ADD/DROP COLUMN: 칼럼 추가/삭제
      • 칼럼 위치 지정 불가
      • 삭제 후 최소 하나 이상의 칼럼이 존재해야 함, 복구 불가능
    1. MODIFY COLUMN: 칼럼 수정
      • 칼럼의 데이터 유형(널일때 가능), 디폴트 값, NOT NULL조건에대해 변경 가능
      • 칼럼 크기 늘릴 수는 있지만 줄이기 불가 (아무 행도 없거나 NULL값만 있으면 줄이기 가능)
    1. RENAME COLUMN: oracle등 일부에서만 동작
    1. ADD/DROP CONSTRAINT: 제약조건 추가/삭제
      • FK조건 설정
  • RENAME TABLE
    • SQL Server: sp_rename을 이용해 테이블명 변경
  • DROP TABLE
    • CASCADE CONSTRAINT: 참조되는 제약조건에 대해서도 삭제
    • SQL Server에서는 CASCADE 옵션이 존재하지 않으며, 삭제 전 참조하는 조건이나 테이블 우선 삭제
  • TRUNCATE TABLE
    • 테이블 자체가 아닌 모든 행 제거, 저장 공간을 재사용하도록 해제
    • auto commit (복구 불가능)

DML

  • INSERT, UPDATE, DELETE: 트랜잭션 처리를 별도로 해야 함
  • SELECT: 데이터 조회
    • DISTINCT: 중복제거
  • 연산자
    • 합성 연산자: ‘||’, CONCAT(A, B)

TCL

  • 트랜잭션: 데이터베이스의 논리적 연산 단위
  • COMMIT: 변경 작업 완료, 데이터베이스에 반영
    • 변경된 행은 잠금(LOCKING)이 설정되어 다른 사용자가 변경할 수 없음 → 데이터베이스에 반영 시 잠금이 풀려 조작 가능
    • SQL Server: 기본적으로 AUTO COMMIT 모드
  • ROLLBACK: COMMIT 이전의 변경 사항 취소
💡
COMMIT, ROLLBACK 효과?
1. 데이터 무결성 보장
2. 영구적 변경 전 데이터의 변경 사항 확인 가능
3. 논리적으로 연관된 작업을 그룹핑해 처리 가능
  • SAVEPOINT
    • 현 시점에서 저장점까지 트랜잭션 일부만 롤백

WHERE절

  • 조인 조건이나 결과 제한을 위한 조건 기술
  • FTS(Full Table Scan): 조건이 없는 문장, 튜닝의 1차적 검토 대상
  • 비교 연산자, SQL 연산자, 논리 연산자
    • 우선순위: () → not → 비교 → and → or
  • ROWNUM: 임시 일련번호, 고유한 키나 인덱스 값 생성 가능
  • TOP 절: 출력되는 행의 수 제한 가능
    • PERCENT: 처음 Expression%의 행만 반환
    • WITH TIES: ORDER BY 절이 지정된 경우 사용 가능

함수

  • 내장 함수
    1. 단일행 함수
      • 문자형, 숫자형, 날짜형, 변환형, NULL 관련
      • SELECT, WHERE, ORDER BY 절에 사용 가능
      • SUBSTR(str, m, n): m 위치에서 n개의 문자 길이
      • CEIL: 최소 정수, FLOOR: 최대 정수, ROUND: 반올림, TRUNC: 버림
      • 명시적 변환, 암시적 변환(자동)
      • NVL, ISNULL: 널이면 두번째 출력
      • NULLIF: 같으면 널, 다르면 첫번째 출력
      • COALESCE: 널이 아닌 최초의 표현식
    1. 다중행 함수
      1. 집계 함수: SUM, COUNT, AVG 등
        • 통계 정보: NULL 값 제외하고 수행
      1. 그룹 함수
        • GROUP BY: 별칭 사용 불가능
        • HAVING: 집계 함수 사용 가능
        • ORDER BY: oracle에서는 NULL을 가장 큰 값으로 간주, 별칭 사용 가능, 집계 함수 사용 가능
      1. 윈도우 함수
  • 사용자 정의 함수
💡
문장 실행 순서
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

조인

  • EQUI JOIN(등가조인)
    • 두 컬럼 값이 정확하게 일치하는 경우
    • WHERE절에 ‘=‘ 연산자 사용
  • NON EQUI JOIN(비등가조인)
    • 두 컬럼 값이 정확하게 일치하지 않는 경우
    • WHERE절에 BETWEEN, >, ≤ 등 연산자 사용
728x90
반응형