[SQLD] SQL 기본 문제 풀이-1

·2023년 5월 20일
0

SQLD

목록 보기
10/18
post-thumbnail

SQL 문장 종류

DML(데이터 조작어)

  • 종류 : SELECT, INSERT, UPDATE, DELETE
  • 오라클 : 수동 커밋, SQL Server : 자동 커밋
  • 비절차적 데이터 조작어로 사용자가 무슨 데이터를 원하는지만 명세한다.

💡절차적 데이터 조작어는 어떻게 데이터에 접근해야 되는지까지 명세

DDL(데이터 정의어)

  • 종류 : CREATE, ALTER, DROP, RENAME
  • 오라클 : 자동 커밋, SQL Server : 수동 커밋

DCL(데이터 제어어)

  • 종류 : GRANT, REVOKE

TCL(트랜젝션 제어어)

  • 종류 : COMMIT, ROLLBACK

컬럼에 제약조건 추가하기

ALTER TABLE 테이블명 ADD CONSTRAINT 컬럼명 제약조건;

💡 SQL Server는 여러 개의 컬럼을 동시에 수정하는 구문을 지원하지 않고, 괄호를 사용하지 않는다.

테이블/컬럼 이름 변경

테이블

RENAME 변경전 테이블명 TO 변경할 테이블명;

컬럼

ALTER TABLE 테이블명 RENAME COLUMN 변경전 컬럼명 TO 변경할 컬럼명;

참조동작(Referential Action)

Delete(/Modify) Action : Cascade, Set Null, Set Default, Restrict (부서-사원)

  1. Cascade : Master 삭제 시 Child 같이 삭제
  2. Set Null : Master 삭제 시 Child 해당 필드 Null
  3. Set Default : Master 삭제 시 Child 해당 필드 Default 값으로 설정
  4. Restriat : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
  5. No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

Insert Action : Automatic, Set Null, Set Defaulit, Dependent (부서-사원)

  1. Automatic : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
  2. Set Null : Master 테이블에 PK가 없는 경우 Child 외부키를 Null 값으로 처리
  3. Set Default : Master 테이블에 PK가 없는 경우 Child 외부키를 지정된 기본값으로 입력
  4. Dependent : Master 테이블에 PK가 존재할 때만 Child 입력 허용
  5. No Action : 참조무결성을 위반하는 입력 액션을 취하지 않음

DROP, TRUNCATE, DELETE

DROPTRUNCATEDELETE
DDLDDL
(일부 DML 성격을 가짐)
DML
ROLLBACK 불가ROLLBACK 불가COMMIT 이전 ROLLBACK 가능
AUTO COMMITAUTO COMMIT수동 COMMIT
테이블이 사용했던 Storage 모두 Release테이블이 사용했던 Storage 중 최초 테이블 생성 시 할당된 Storage만 남기고 Release데이터를 모두 Delete해도 사용했던 Storage는 Release되지 않음
테이블의 정의 자체를 완전 삭제테이블을 최초 생성된 초기상태로 만듬데이터만 삭제
로그 X로그 X로그 O

트랜잭션의 격리성

실행 중인 트랜잭션의 중간 결과를 다른 트랜잭션이 접근할 수 없도록 격리레벨에 따라 관리한다.

격리성으로 나타낼 수 있는 문제점

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

💡Non-Repeatable Read는 1개의 ROW를 수행, Phantom Read는 다건 요청이 들어왔을 때 발생

profile
🧑‍💻백엔드 개발자, 조금씩 꾸준하게

0개의 댓글