hyerimir 2023. 3. 18. 15:59

 

SQL 문장들의 종류

- DDL : data definition language; CREATE, ALTER, DROP, RENAME

- DML : data manipulation language; INSERT, UPDATE, DELETE, SELECT

- DCL : data control language; GRANT, REVOKE

- TCL : transaction control language; COMMIT, ROLLBACK, SAVEPOINT

 

비절차적 데이터 조작어는 사용자가 무슨 데이터를 원하는지만 며엣하고, 절차적 데이터 조작어는 어떻게 데이터를 접근해야 하는지 명세한다

 

PK = UNIQUE & NOT NULL

UNIQUE는 테이블 내에서 중복되는 값이 없지만, NULL 입력이 가능하다

 

테이블 생성시 주의사항

- 가능한 단수형 권고

- 테이블명과 컬럼명은 반드시 문자로 시작해야함

- 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없음

- 테이블 이름을 지정하고 각 컬럼들은 괄호로 묶어 지정

- 각 컬럼들은 콤마로 구분되고, 테이블 생성문의 끝은 항상 세미콜론으로 끝남

- 칼럼 뒤에 데이터 유형은 반드시 꼭 지정되어야 함

 

테이블의 불필요한 칼럼 삭제

; ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

 

테이블명 변경

; RENAME A TO B

 

중복된 데이터가 있는 경우 1건으로 처리해서 출력 : DISTINCT

 

DROP과 TRUNCATE는 auto commit되어 rollback이 불가능하고, DELETE는 rollback 가능

 

트랜잭션의 특성

- 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다

- 일관성 : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다

- 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다

- 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다

 

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

- Dirty Read : 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것

- non - repeatable read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상

- phantom read : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리에서 없던 유령 레코드가 두 번째 쿼리에서 나타나는 현상

 

트랜잭션 : 데이터베이스의 논리적 연산단위로서 밀접히 관련되어 분리될 수 없는 한 개이 상의 데이터베이스 조작

트랜잭션의 종료를 위한 대표적 명령어로서는 데이터에 대한 변경사항을 데이터베이스에 영구적으로 반영하는 commit과 데이터에 대한 변경사항을 모두 폐기하고 변경 전의 상태로 되돌리는 rollback이 있다

 

내장함수

- 함수의 입력 행수에 따라 단일행 함수와 다중행 함수로 구분할 수 있음

- 단일행 함수는 SELECT, WHERE, ORDER BY, UPDATE의 SET절에 사용 가능

 

단일행 NULL 관련 함수의 종류

- NVL(표현식1, 표현식2) : 표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다

- NULLIF(표현식1, 표현식2) : 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴

- COALESCE(표현식1, 표현식2, ...) : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다

 

GROUP BY 절에서는 SELECT 절과 달리 ALIAS 명을 사용할 수 없음

 

SELECT 문장의 실행 순서

; FROM - WHERE - GROUPBY - HAVING - SELECT - ORDER BY

 

SQL Server의 TOP N 질의문에서 N에 해당하는 값이 동일한 경우 함께 출력되도록 하는 WITH TIES 옵션을 ORDER BY 절과 함께 사용해야함

 

Join에 대한 설명

- 일반적으로 Join은 PK와 FK 값의 연관성에 의해 성립된다

- DBMS 옵티마이져는 FROM 절에 나열된 테이블들을 항상 2개씩 묶어서 Join을 처리한다

- EQUI Join은 Join에 관여하는 테이블 간의 컬럼 값들이 정확하게 일치하는 경우에 사용되는 방법이다

- EQUI Join은 '=' 연산자에 의해서만 수행되며, 그 이외의 비교 연산자를 사용하는 경우에는 모두 Non EQUI Join이다

- 대부분 Non EQUI Join을 수행할 수 있지만, 때로는 설계상의 이유로 수행이 불가능한 경우도 있다