1. 관계형 DB

1-1. Database란?

  • 데이터를 일정한 형태로 저장해 놓은 것으로, DBMS를 이용해여 효율적인 데이터 관리 및 데이터 손상 복구가 가능하다.
  • 종류
    • 계층형 DB: 트리 형태의 자료구조에 데이터 저장 / 1:N 관계 표현
    • 네트워크형 DB: 오너와 멤버 형태로 데이터 저장 / M:N 관계 표현
    • 관계형 DB: 릴레이션에 데이터 저장, 집합 연산 및 관계 연산 가능

2. 관계형 DB

  • RDB(Relational Databse)
    • 정규화를 통해 이상현상 및 중복 데이터 제거
    • 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능
  • 집합 연산
    • 합집합(Union)
    • 차집합(Difference)
    • 교집합(Intersection)
    • 곱집합(Cartesian Product) (각 릴레이션에 존재하는 모든 데이터를 조합)
  • 관계 연산
    • 선택 연산(Selection): 조건에 맞는 행 조회
    • 투영 연산(Projection): 조건에 맞는 컬럼(속성) 조회
    • 결합 연산(Join): 공통 속성을 사용하여 새로운 릴레이션 생성
    • 나누기 연산(Division): 공통 요소를 추출하고 분모 릴레이션의 속성 삭제 후 중복된 행 제거
  • 테이블은 RDB의 기본 단위로 데이터를 저장하는 객체이다. 칼럼과 행의 2차원 구조이다.

3. SQL 기본

3-1. SQL이란?

  • Structured Query Language의 준말로, 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어이다.
  • 종류
    • DML(Data Manipulation Language, 데이터 조작어)
      • SELECT: 데이터 조회 명령어
      • INSERT, UPDATE, DELETE: 데이터 변형 명령어
    • DDL(Data definition Language, 데이터 정의어)
      • 데이터 구조를 정의하는 데 사용되는 명령어
      • CREATE, ALTER, DROP, RENAME
    • DCL(Data Control Language, 데이터 제어어)
      • DB 접근 권한 부여 및 회수
      • GRANT, REVOKE
    • TCL(Transaction Control Language, 트랜잭션 제어어)
      • 논리적인 작업 단위별로 제어하는 명령어
      • COMMIT, ROLLBACK

4. DDL

  • 데이터 타입
    • CHAR(L): 고정 길이 문자열, 할당된 변수 값의 길이가 L 이하일 때 차이는 공백으로 채워짐
    • VARCHAR2(L), VARCHAR: 가변길이 문자열, 할당되는 변수 값의 길이의 최대값이 L
    • NUMBER(L, D): 숫자형(L은 전체 자리 수, D는 소수점 자리 수)
    • DATE, DATETIME: 날짜형, 데이터 크기 지정이 필요하지 않음
  • CREATE TABLE
    • 테이블 및 컬럼 명명 규칙
      • 알파벳, 숫자, _(언더바), $(달러), # 사용
      • 대소문자 구분 X
      • 테이블명은 단수형 경고
    • 제약 조건: 데이터 무결성 유지 / 복제 테이블에는 기존 테이블 제약조건 중 NOT NULL만 적용
      • PRIMARY KEY: 테이블 당 하나의 기본키만 정의 가능 / 기본키 생성 시 DBMS가 자동으로 인덱스 생성 / NULL 불가
      • FOREIGN KEY: 다른 테이블의 기본키를 외래키로 지정, 참조 무결성 제약 조건
      • UNIQUE KEY: 행 데이터를 식별하기 위해 생성, NULL 가능
      • DEFAULT KEY: DEFAULT 값으로 기본값 설정
      • NOT NULL
      • CHECK: 입력값의 종류 및 범위 제한
  • ※ NULL이란?
    • 아직 정의되지 않은 값, 혹은 현재 데이터를 입력하지 못하는 값
    • NULL과의 수치연산은 NULL
    • 비교 연산은 FALSE
    >>> FOREIGN KEY 지정 시 SQL
    ALTER TABLE 테이블명 ADD CONSTRAINT 컬럼명 FOREIGN KEY (컬럼명) REFERENCES 테이블명(컬럼명);
  • ALTER TABLE
    • 컬럼 추가(컬럼 위치 지정 불가, 마지막으로 추가됨)
        ALTER TABLE 테이블명 ADD (컬럼명 데이터타입);
      
    • 컬럼 삭제(삭제 후 복구 불가)
        ALTER TABLE 테이블명 DROP COLUMN 컬럼명
      
    • 컬럼 설정 변경
        ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입 제약조건);
      
    • 컬럼 설명 변경
      • NULL만 있거나 행이 없는 경우에만 컬럼 크기 축소 가능
      • NULL만 있을 때는 데이터 유형 변경 가능
      • NULL이 없으면 NOT NULL 제약조건 추가 가능
      • 기본값 변경 작업 이후 발생하는 데이터에 대해서만 기본값이 변경됨
    • 컬럼명 변경
        ALTER TABLE 테이블명 RENAME COLUMN 컬럼명;
      
    • 제약조건 추가
        ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건;
      
    • 제약조건 제거
        ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
      
  • RENAME TABLE
    • 테이블 이름 변경
        RENAME 테이블명 TO 테이블명;
        or
        ALTER TABLE 테이블명 RENAME TO 테이블명 
      
  • DROP TABLE
    • 테이블 자체 제거
        DROP TABLE 테이블명;
      
  • TRUNCATE TABLE
    • 테이블 전체 데이터 삭제
        TRUNCATE TABLE 테이블명;