read
1. SQL 종류
| 종류 | 예시 | 설명 |
|---|---|---|
| 데이터 조작어(DML) | SELECT, INSERT, UPDATE, SELECT | 데이터 베이스에 들어있는 데이터를 조회하거나 명령하고, 테이블에 들어 있는 데이터에 변형을 가하는 명령어 |
| 데이터 정의어(DDL) | CREATE, ALTER, DROP, RENAME | 데이터 구조를 정의하는데 사용되며, 구조를 생성하거나 변경하거나 삭제하는 명령어 |
| 데이터 제어어(DCL) | GRANT, REVOKE | 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 |
| 트랜잭션 제어어(TCL) | COMMIT, ROLLBACK | DML에 의해 조작된 결과를 트랜잭션 별로 제어하는 명령어 |
- 참고: SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY
- 참괴: GROUP BY ROLLUP (position, subject)
2. 트랜잭션의 특성
| 특성 | 설명 |
|---|---|
| 원자성 | 트랜잭션에 포함된 명령들은 모두 수행되거나, 모두 수행되지 않아야함 |
| 일관성 | 트랜잭션이 실행되기 전의 데이터베이스의 내용이 잘못되어 있지 않다면 이후에도 않아야함 |
| 고립성 | 트랜잭션은 다르 트랜잭션과 독립적으로 실행되어야함 |
| 지속성 | 트랜잭션의 결과는 반드시 데이터베이스에 영구적으로 저장되어야함 |
3. 제약조건
- 데이터의 품질의 높이기 위하여 사용
- 테이블 생성시 무결성 제약조건을 정의하여 프로그래밍 과정을 줄여줌
-
일시적으로 활성화 또는 비활성화 가능
- 종류
- Primary key: 중복된 데이터와 Null값을 입력하지 못함
- Unique: 중복된 데이터를 입력하지 못함
- Not null: Null값을 입력하지 못함
- Check: 특정 column에만 설정하는 제약
- Foreign key: 참조하는 column에 거는 제약
- SQL문
- 제약 추가: ALTER TABLE 테이블명 ADD CONSTRAINT 제약이름
- 제약 수정: ALTER TABLE 테이블명 MODIFY 컬럼명 컬럼조건
- 제약 삭제: ALTER TABLE 테이블명 DROP CONSTRAINT 제약이름
- 제약 활성: ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건
- 제약 비활성: ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건
- 참조 비활성: ALTER TABLE 테이블명 DROP 제약조건 CASCADE;
4. NULL
- 공백 ≠ NULL
- SUM(): NULL 무시하고 연산
- NVL(“값”,”지정값”): 값이 NULL인 경우 지정값 출력
- NVL2(“값”,”지정값”,”지정값2”): 값이 NULL아 아닌 경우 지정값1, NULL인 경우 지정값2 출력
- NULLIF(“EXP1”,”EXP2”): EXP1 = EXP2 이면 NULL, 다르면 EXP1
- DECODE(“EXP1”,”EXP2”,”EXP3”): EXP1 = EXP2이면 EXP3, 아니면 NULL
- CASE: IF-THEN-ELSE 만족하지 않으면 NULL
-
COALESCE: NULL이 아닌 최초의 EXP 출력
- COUNT
- COUNT(*): 테이블의 모든 ROW의 수
- COUNT(column): 해당 column의 NOT NULL인 ROW의 수
- COUNT(DISTINCT column): 해당 column의 중복을 제거하고 NOT NULL인 ROW의 수