티스토리 뷰

드디어 이제 이 부분을 훑는다.ㅠㅠ 앞의 개념도 완벽하지는 않지만 ㅎ

이 부분도 생각보다 모르는 게 많아서 이것도 기출 위주로 모르는 것 정리해보려 한다.

 

 

🏅 개인적인 문제 핵심:

  • 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 => 모두 자동커밋

    생성 시
  • 대소 구분 안 한다
  • 문자 데이터 유형은 반드시 크기 지정해야 한다
  • 날짜 유형은 별도로 크기 지정 안 한다
  • 컬럼에 대한 제약조건을 추가하는 경우 constraint를 사용한다
    • 주로 제약조건에 이름을 붙일 때 사용함
CREATE 🏅 자동 커밋됨,
ROLLBACK 불가



복제 시:
테이블복제 as
는 여기서 사용됨
  • CREATE TABLE 테이블명 AS SELECT 문장으로 테이블 복제 가능하다
    => 이걸로 복제하면 NOT NULL속성도 복제됨

  • 컬럼 순서 & 데이터타입 복제된다
  • 테이블 내 제약조건 & index는 안 복제된다
  • primary key나 unique 설정없이 부여된 not null속성은 함께 복제된다

ALTER 컬럼 변경 시
- 컬럼크기 늘릴 수도/줄일 수도 있다
=> 단 줄일 때는 이미 저장된 크기 중 가장 작은 크기까지만 줄일 수 있음
- 디폴트 값을 바꾸면 이전 행들에는 적용 안되고, 이후 행부터 적용이 된다.

NULL값 보유 시
✅ 컬럼이 null값만 가지고 있으면 데이터 유형 변경할 수 있다
✅ 컬럼에 null값이 없을 경우에만 not null 제약조건 추가할 수 있다


ADD: 컬럼 추가
  • 만들 때 제약조건 NOT NULL 못 씀

MODIFY: 컬럼 변경

  • 컬럼 이름변경은 안 됨
  • NOT NULL 사용 가능
  • 컬럼에 저장된 값이 모두 NULL이거나,
    새로운 타입으로 안전하게 변환될 수 있을 때만 데이터 타입 변경이 가능하다 = 반드시 빈컬럼일 필요 없다

DROP: 
  •  컬럼 동시 삭제 불가
DROP    
TRUNCATE     
번외
외래키 생성 (FK)    
  • 외래키 생성 후 자식T에 데이터 있으면 부모T 삭제 불가하다
  • ON DELETE CASCADE 옵션으로 외래키 생성하면 부모 삭제시 자식도 삭제된다
  • 자식T는 INSERT, UPDATE시 제약을 받는다
뷰 (VIEW)    
  • 저장 공간 안 차지
  • 물리적으로 구현 안 함
  • 원본 테이블 노출 안 함 = 데이터 안전하게 보호 가능
  • 뷰를 참조하는 또 다른 뷰 생성/참조 가능
  • 기존 테이블 삭제 시 뷰도 삭제됨
제약조건    
  • 기본키 = 고유키 & NOT NULL 조건 => 중복 ❌ &  NULL ❌
  • 제약조건 추가 시 이름(별칭) 붙여줄 필욘 없다
  • 이미 존재하는 컬럼에서 NOT NULL 조건 부여하고 싶을 때는 반드시 MODIFY 사용
  • NULL 조건이 삽입된 경우라도 중복값만 없으면 UNIQUE 제약조건 추가 가능하다

 

* 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자꺼 안 뺏김

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함