상상쓰

[SQLD] 2-1. SQL 기본 및 활용 본문

Programming

[SQLD] 2-1. SQL 기본 및 활용

상상쓰 2022. 3. 8. 01:15

1. SQL 문장들의 종류

  • DML(비절차적 언어, 무슨 데이터를 원하는지만 명세) : SELECT, INSERT, UPDATE, DELETE
  • DDL : CREATE, ALTER, DROP, RENAME
  • DCL : GRANT, REVOKE
  • TCL : COMMIT, ROLLBACK

2. DBMS 문법

  • Oracle
    • ADD CONSTRAINT PRIMARY KEY (?), ALTER TABLE ? ADD CONSTRAINT ?_PK PRIMARY KEY(?);
    • ALTER TABLE ? MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 칼럼명2 ...);
    • DDL 문장 수행 후 자동으로 COMMIT을 수행한다.
    • SAVEPOINT ?, ROLLBACK TO ?
    • 공백으로 INSERT하면 NULL로 입력된다.
    • NVL, SUBSTR, CHR
  • SQLServer
    • ALTER TABLE ? ALTER COLUMN 칼럼명1 데이터 유형 ...; (여러개의 칼럼 동시 수정하는 구문 지원하지 않고 괄호를 사용하지 않는다.) 
    • RENAME ? TO ?; (오라클과 동일)
    • DDL 문장 수행 후 자동으로 COMMIT을 수행하지 않는다.
    • SAVEPOINT TRANSACTION ?, ROLLBACK TRANSACTION ?
    • ISNULL, SUBSTRING, CHAR
    • SELECT TOP(N) WITH TIES ?, ? FROM ? ORDER BY ? DESC : N위까지 출력, 순위가 동일한 팀이 있다면 함께 출력  

3. Delete(/Modify) Action

  • Cascade : Master 삭제 시 Child 같이 삭제 (ON DELETE CASCADE)
  • Set Null : Master 삭제 시 Child 해당 필드 Null
  • Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
  • Restrict : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
  • No Action

4. Insert Action

  • Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
  • Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
  • Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
  • Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용
  • No Action

5. DROP, TRUNCATE, DELETE

  • DROP : 테이블의 정의 자체를 완전히 삭제함
  • TRUNCATE : 테이블을 최초 생성된 초기상태로 만듬
  • DELETE : 데이터만 삭제

6. 데이터베이스 트랜잭션

  • 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않는 상태로 남아 있어야 한다.
  • 일관성 : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
  • 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
  • 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

7. 데이터베이스 트랜잭션에 대한 격리성이 낮은 경우 발생할 수 있는 문제점

  • Dirty Read : 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다.
  • Non-Repeatable Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상을 말한다.
  • Phantom Read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데 첫번째 쿼리에서 없던 유령 레코드가 두번째 쿼리에서 나타나는 현상을 말한다.

8. 내장 함수

  • 단일행 함수
  • 다중행 함수 : 집계 함수, 그룹 함수, 윈도우 함수

9. 단일행 NULL 관련 함수의 종류

  • NVL, ISNULL
  • NULLIF(표현식1, 표현식2) : 표현식1이 표현식2와 같으면 NULL, 같이 않으면 표현식1을 리턴한다.
  • COALESCE(표현식1, 표현식2, ...) : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴한다.

10. ORDER BY

  • 기본적인 정렬 순서는 오름차순(ASC)이다.
  • Oracle에서는 NULL 값을 가장 큰 값으로 간주한다. (SQL Server에서는 NULL 값을 가장 작은 값으로 간주한다.)

11. SELECT 문장의 실행 순서

  • FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY

12. 순수 관계 연산자

  • SELECT
  • JOIN
  • PROJECT
  • DIVIDE
Comments