교재: SQL 자격 검정 실전 문제
2과목 제1장 - SQL 기본
1번 ~ 10번
답: REVOKE
데이터 제어어(DCL)
CRG 로 암기
REVOKE, GRANT
답: GRANT
데이터 정의어(DDL)
DCARD 로 암기
CREATE, ALTER, RENAME, DROP
답: TCL
트랜잭션 제어
데이터 언어와 SQL 명령어에 대한 설명으로 가장 부적절한 것은?
답: 비절차적 데이터 조작어(DML)는 사용자가 무슨 데이터를 원하며, 어떻게 그것을 접근해야 되는지를 명세하는 언어이다.
이유: 비절차적 데이터 조작어(DML)는 사용자가 무슨(WHAT) 데이터를 원하는 지만 명세한다.
선지의 내용처럼 어떻게(HOW) 데이터를 접근해야 하는지 명세하는 건 절차적 데이터 조작어이다. 절차적 데이터 조작어로는 PL/SQL(오라클), T-SQL(SQL Server) 등이 있다.
답: DML-SELECT, TCL-COMMIT
DML: MSIUD - SELECT, INSERT, UPDATE, DELETE
TCL: TCR - COMMIT, ROLLBACK
CREATE TABLE PRODUCT
(PROD_ID VARCHAR2(10) NOT NULL
,PROD_NM VARCHAR2(100) NOT NULL
,REG_DT DATE NOT NULL
,REGR_NO NUMBER(10)
,CONSTRAINT PRODUCT_PK PRIMARY KEY(PROD_ID));
NOT NULL 칼럼에 대해서는 무조건 제약조건을 명시해준다.
NULL은 명시하지 않아도 괜찮다.NOT NULL 제약조건 명시 없는 선지(2번) 소거
PK를 지정해 줄때는 CONSTRAINT 제약조건명 PRIMARY KEY (컬럼명)
ADD가 문제가 되지는 않아 보인다.
ex. ADD CONSTRAINT PRIMARY KEY(PROD_ID) -> 제약조건명 없어서 오류3번 소거
1번: PK를 지정하는 ALTER TABLE 문장에 문법 오류가 존재
수정 전: ALTER TABLE PRODUCT ADD PRIMARY KET PRODUCT_PK ON (PROD_ID) 수정 후: ALTER TABLE PRODUCT ADD CONSTRAINT PRODUCT_PK PRIMARY KET (PROD_ID)PK를 지정해 줄거라면 CONSTRAINT를 쓰는걸로 이해

변경사항: 분류명, 등록일자
ALTER TABLE 기관분류 ALTER COLUMN 분류명 VARCHAR(30) NOT NULL;
ALTER TABLE 기관분류 ALTER COLUMN 등록일자 DATE NOT NULL;
NOT NULL은 필수적으로 표기해주어야 한다.
ALTER COLUMN(~) - X
괄호 없이 그냥 표기한다
NULL은 모르는 값/값의 부재를 의미하며 NULL과의 모든 비교(IS NULL 제외)는 알 수 없음(UNKNOWN)을 반환한다.
공백문자(EMPTY STRING) 또는 숫자 0을 의미하지 않는다.

DELETE CASCADE: 부모 테이블을 삭제할 때 자식 테이블도 삭제하도록 함
DELETE SET NULL: 부모 레코드 삭제 시 연결된 자식 레코드의 외래 키 값을 NULL로 설정하도록 함
DELETE FROM T; 이후 데이터 현황
T: 모두 삭제
S: 모두 삭제: CASCADE 옵션으로 인해 모두 삭제되었다.
R: B열이 NULL값으로 변경되었다.
답: (1, NULL)과 (2, NULL)
답: UNIQUE: 테이블 내에서 중복되는 값이 없으며 NULL 입력이 불가능하다.
PK: 주키로 테이블당 1개만 생성 가능 (UNIQUE&NOT NULL 특징을 가짐)
FK: 외래키로 테이블당 여러 개 생성 가능
NOT NULL: 명시적으로 NULL 입력 방지
UNIQUE: 테이블 내에서 중복되는 값이 없지만, NULL 입력이 가능하다. (불가능 -> 가능)