반응형
💡 비절차적 데이터 조작어(DML) VS 절차적 데이터 조작어(ORACLE / SQL server) [4]
  • 비절차적 데이터 조작어는 사용자가 무슨(what) 데이터를 원하는 지만을 명세
  • 절차적 데이터 조작어는 어떻게(how) 데이터를 접근해야 하는지 명세

💡 DDL / DML / DCL / TCL 
  • DDL : CREATE, DROP, ALTER, RENAME
  • DML : SELECT, INSERT, UPDATE, DELETE
  • DCL : GRANT, REVOKE
  • TCL : COMMIT, ROLLBACK

 

💡 SQL server [7]
  • SQL server에서는 여러개의 컬럼을 동시에 수정하는 구문은 지원하지 않는다.
  • SQL server에서는 괄호를 사용하지 않는다.

 

💡 PK / UNIQUE
  • PK : UNIQUE & NOT NULL
  • UNIQUE : 테이블 내 중복 값 x, NULL 입력 가능

 

💡 테이블명-칼럼명 설정 규칙
  • 반드시 문자로 시작
  • A-Z, a-z, 0-9, $, _, #

 

💡 외래키
  • 외래키 값은 널 값을 가질 수 있음
  • 한 테이블에 여러개 존재 가능

 

💡 컬럼 삭제 sql [16]
  • ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

 

💡 참조무결성 규정 [19]
  • DELETE/MODIFY
    CASCADE : master 삭제시 child 같이 삭제
    Set Null : master 삭제 시 child 해당 필드 Null
    Set Default : master 삭제 시 child 해당 필드 Default 값으로 설정
    Restrict : child 테이블에 PK 값이 없는 경우만 master 삭제 허용
    No Action : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음
  • INSERT
    Automatic : master 테이블에 PK가 없는 경우 master PK를 생성 후 child 입력
    Dependent : master 테이블에 PK가 존재할 때만 child 입력 허용

 

💡 테이블 이름 변경 sql [18]
  • RENAME 구이름 TO 새이름;

 

💡 제약조건에 따른 실행 [22]
  • FK에 대한 제약조건으로, DELETE 시 SET NULL = 부모 키가 DELETE되면 해당 FK는 NULL을 갖도록 설정
  • 그런데, 문제에서는 해당 FK 컬럼이 NOT NULL로 지정되어 있기 때문에, 위와 같이 설정되어 있더라도 NULL 값을 가질 수 없으므로, 이와 같이 수행되는 SQL문은 오류가 발생함 

 

💡 DELETE [23]

 

Q. 개발 프로젝트의 표준은 모든 삭제 데이터에 대한 로그를 남기는 것을 원칙으로 하고, 테이블 삭제의 경우는 허가된 인력만이 정기적으로 수행 가능하도록 정하고 있다. 개발팀에서 사용 용도가 없다고 판단한 STADIUM 테이블의 데이터를 삭제하는 가장 좋은 방법은 무엇인가?

 

A. DELETE FROM STADIUM;

 

  • DELETE는 로그는 남기고, 데이터만 삭제한다.
  • TRUNCATE TABLE과 DROP은 로그를 남기지 않으므로 해당하지 않는다.

 

💡 TRUNCATE TABLE
  • 특정 테이블의 모든 데이터를 삭제
  • 디스크 사용량을 초기화

 

💡 DROP vs TRUNCATE vs DELETE [26]
DROP TRUNCATE DELETE
DDL DDL(일부 DML 성격) DML
ROLLBACK 불가능 ROLLBACK 불가능 ROLLBACK 가능
AUTO COMMIT AUTO COMMIT 사용자 COMMIT
테이블이 사용했던 Storage를
모두 Release
테이블이 사용했던 storage 중 최초 테이블 생성시 할당된 storage만
남기고 release
데이터를 모두 delete해도 사용했던
storage는 release되지 않음
테이블의 정의 자체를 완전히 삭제 테이블을 최초 생성된 초기상태로 만듬 데이터만 삭제
반응형

+ Recent posts