티스토리 뷰
드디어 이제 이 부분을 훑는다.ㅠㅠ 앞의 개념도 완벽하지는 않지만 ㅎ
이 부분도 생각보다 모르는 게 많아서 이것도 기출 위주로 모르는 것 정리해보려 한다.
🏅 개인적인 문제 핵심:
- GRANT/ADMIN OPTION
- admin은 이 경우 빼면 전부 회수 가능: sys가 중간애꺼 가져간다고 제3자는 회수 안 됨 => 연좌제 불가
- 반대로 grant는 sys가 제3자 권한 회수 안 되는 상황 빼곤 다 회수됨 => grant는 남이 준 권한 못 뺏음
- NULL 포함 컬럼 변경 시 (MODIFY 관련)
DML
Manipulation =
SELECT, INSERT, UPDATE, DELETE
- 반드시 COMMIT이나 ROLLBACK 수행해서 트랜잭션(transaction)을 종료해야 한다
| SELECT | ||
| INSERT | - AS가 안 붙음 |
|
| UPDATE | - 동시에 여러 컬럼 수정 가능함 | |
| DELETE | - 롤백 가능 |
DDL
🏅 자동 커밋됨, ROLLBACK 불가
: 테이블 정의
CREATE, ALTER, DROP, TRUNCATE => 모두 자동커밋
| 생성 시 |
|
||
| CREATE | 🏅 자동 커밋됨, ROLLBACK 불가 |
복제 시: 테이블복제 as는 여기서 사용됨 |
|
| ALTER | 컬럼 변경 시 - 컬럼크기 늘릴 수도/줄일 수도 있다 => 단 줄일 때는 이미 저장된 크기 중 가장 작은 크기까지만 줄일 수 있음 - 디폴트 값을 바꾸면 이전 행들에는 적용 안되고, 이후 행부터 적용이 된다. NULL값 보유 시 ✅ 컬럼이 null값만 가지고 있으면 데이터 유형 변경할 수 있다 ✅ 컬럼에 null값이 없을 경우에만 not null 제약조건 추가할 수 있다 |
ADD: 컬럼 추가
|
|
MODIFY: 컬럼 변경
|
|||
DROP:
|
|||
| DROP | |||
| TRUNCATE | |||
| 번외 | |||
| 외래키 생성 (FK) |
|
||
| 뷰 (VIEW) |
|
||
| 제약조건 |
|
||
* ALTER로 컬럼에 NOT NULL 제약조건을 추가할 땐 ADD가 아니라 MODIFY를 사용해야 한다.
* NULL 조건이 삽입된 경우라도 중복값만 없으면 UNIQUE 제약조건 추가 가능하다 = UNIQUE NULL 허용됨
TCL
: 트랜잭션
COMMIT,ROLLBACK,SAVEPOINT
| 주의사항 | ||
| COMMIT | 커밋을 하면 어떻게든 이전 값으로 돌아갈 수 없다 | 커밋한 데이터는 - 다른 사용자에게 공유된다 - 데이터베이스에 영구 저장된다 - 이전으로 영원히 되돌릴 수 없다 |
| ROLLBACK | 🏅 롤백 한 명령을 다시 롤백으로 취소할 수 없다 |
rollback 가능지점 - 최종 커밋 지점 - 변경 전 - savepoint 지점 - 최종 커밋 시점 이전 |
| SAVEPOINT | ROLLBACK TO SAVEPOINT_NAME 으로 원하는 지점 원복 가능하지만, COMMIT 이전으로는 어떻게든 돌아갈 수 없다 |
DCL
: 컨트롤, 권한
GRANT, RECOKE
권한
- 테이블 소유자 아니어도 테이블조회, UPDATE 권한 부여 가능하다
- 롤을 회수하면, 그 롤을 받은 사용자들도 해당 권한을 즉시 잃게 된다 = with grant option
권한 정리
| 상황 | WITH GRANT OPTION | WITH ADMIN OPTION |
| sys가 제3자 권한 회수 | ❌ 중간애가 준 건 못 뺏음 |
⭕ |
| sys가 중간애 권한 회수 | ⭕ * 제3자 권한도 같이 회수 |
⭕ *제3자는 회수 안 됨 |
| 중간애가 제3자 회수 | ⭕ | ⭕ |
| select insert, update, delete DML, 테이블 |
create, drop DDL |
|
| 🏅 | 남이 준 권한 못 뺏음 | 연좌제 불가 |
GRANT: 중간애가 준 건만 못 뺏음
ADMIN: 연좌제 안 돼서 중간애꺼 뺏는다고 제3자꺼 안 뺏김
'SQL' 카테고리의 다른 글
| SQLD 자격증 합격 : 공부 계획과 방법 (0) | 2025.07.10 |
|---|---|
| SQL 모르는 것 정리 : 집합 연산자 ~ 정규 표현식 (2회차) (0) | 2025.05.19 |
| SQL 모르는 것 정리 : 데이터 모델링의 이해 ~ 서브쿼리까지 (1회차) (0) | 2025.05.18 |
| SQL 공부 : Ⅰ 데이터 모델링의 이해 (0) | 2025.05.12 |