데이터 제어어(DCL)에 대해 서술하시오.
사용자 계정에 데이터베이스에 접근하고 객체를 사용할 수 있는 권한을 주고 회수 하는 명령어 입니다.
- GRANT : 사용자 계정에 권한을 부여합니다.
- REVOKE : 사용자 계정으로 부터 권한을 회수합니다.
GRANT SELECT, INSERT, DELETE, UPDATE ON 'Table Name' TO 'User Account'
REVOKE SELECT ON 'Table Name' FROM 'User Account'
데이터 정의어(DDL)
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어입니다. 데이터 구조를 생성/변경/삭제 하거나 이름을 변경합니다.
- CREATE : 테이블/인덱스 등 데이터 객체를 생성합니다.
- ALTER : 테이블/인덱스 등 데이터 객체의 구조를 변경합니다.
- DROP : 테이블/인덱스 등 데이터 객체를 삭제합니다.
- RENAME : 테이블/인덱스 등 데이터 객체의 이름을 변경합니다.
CREATE INDEX emp_idx01 ON emp(job, deptno);
ALTER TABLE emp ADD emp_id VARCHAR2(10);
ALTER TABLE emp MODIFY emp_id VARCHAR2(12) NOT NULL;
ALTER TABLE emp DROP COLUNM emo_id;
ALTER TABLE emp RENAME emo_id TO EMP_ID;
CREATE TABLE PRODUCT
(
PROD_ID VARCAHR2(10) NOT NULL,
PROD_NAME VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,
REGR_NO NUMBER(10),
CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID)
);
ALTER TABLE PRODUCT
ADD CONSTRAINT PRODUCT_PK PRIMARY KEY (PROD_ID,PROD_NAME)
ALTER INDEX emp_idx01 REBUILD;
ALTER TABLE PRODUCT
MODIFY (
PROD_ID VARCAHR2(20) NOT NULL,
PROD_NAME VARCHAR2(110) NOT NULL
)
RENAME emp TO emp_tmp;
DROP TABLE emp_tmp CASCADE CONSTRAINTS;
DROP index EMP_IDX01
CREATE TABLE EMP
(
EMP_NO VARCHAR2(10) PRIMARY KEY,
EMP_NM VARCHAR2(30) NOT NULL,
DEPT_CODE VARCHAR2(4) NOT NULL DEFAULT '0000',
JOIN_DATE DATE NOT NULL,
REGIST_DATE DATE NULL
);
CREATE INDEX INDEX_EMP_01 ON EMP(JOIN_DATE);
ARTER TABLE ADD CONSTRAINT EMP_PK PRIMARY KEY(EMP_NO)
RENAME STADIUM TO STADIUM_JSC
TCL에 대해 서술하시오.
논리적인 작업의 단위를 묶어 DML에 의해 조작된 결과를 작업단위 별로 제어하는 명령어입니다. COMMIT, ROLLBACK, SAVEPOINT가 TCL 명령어에 해당합니다.
절차적 데이터 조작어와 비절차적 데이터조작에 대해 서술하시오.
비절차적 데이터 조작어는 사용자가 어떤 데이터를 뭔하는지를 명세하는 하는 명령어입니다. DATA BASE의 DML이 여기에 속합니다. DML은 사용자가 응용프로그램이나 질의어를 통해 저장된 데이터 베이스에 접근하는데 사용되며 SELECT, INSERT, DELETE, UPDATE 등의 명령어가 있습니다.
절차적 데이터 조작어는 사용자가 어떻게 데이터에 접근하는지에 대해 명세합니다. C 나 Java 같은 데이터 언어가 여기에 속합니다.
SQL SERVER의 테이블 칼럼 변경방식에 대해 서술하시오.
ALTER TABLE 기관분류
ALTER COLUMN(분류명 VARCHAR(3) NOT NULL, 등록일자 DATE NOT NULL);
ORACLE의 NULL에 대해 서술하시오.
NULL은 공백이나 0과는 다른 의미이고, 조건에 맞는 데이터가 없을 때의 공집합과도 다릅니다. 아직 정의되지않은 미지의 값이거나 현제 대이터를 입력하지 못한 상태를 의미합니다.
외래키 생성방법에 대해 서술하시오
테이블의 속성을 외래키로 지정하는 방법은 두가지가 있습니다.
- 테이블 생성시 외래키 제약추가
CREATE TALBE TABLE_NAME (
...
CONSTRAINT 제약조건 명 FOREIGN KEY(컬럼명) REFERENCES 참조할 테이블 이름(참조할 컬럼) ON DELETE CASCADE | ON DELETE SET NULL
)
- 테이블 생성 후 외래키 제약추가
ALTER TABLE TABLE_NAME
ADD CONSTRAINT FOREIGN KEY (칼럼명) REFERENCES 참조할 테이블 이름(참조할 컬럼) ON DELETE CASCADE | ON DELETE SET NULL
활용예시 입니다.
CREATE TABLE PRODUCT
(
PROD_ID VARCAHR2(10) NOT NULL,
PROD_CD VARCAHR2(3) NOT NULL,
PROD_NAME VARCHAR2(100) NOT NULL,
REG_DT DATE NOT NULL,
REGR_NO NUMBER(10),
CONSTRAINT PRODUCT_PK PRIMARY KEY(PROD_ID)
CONSTRAINT PRODUCT_FK FOREIGN KEY(PROD_CD)
REFERENCES PRODUCT_CD(PROD_CD) ON DELETE CASCADE
);
ALTER TABLE TABLE_NAME
ADD CONSTRAINT FOREIGN KEY(PROD_ID) REFERENCES PRODUCT_CD(PROD_CD) ON DELETE CASCADE
외래키제약에 DELETE 시 추가할 수 있는 옵션은 다음과 같습니다.
- ON DELETE CASCADE : 외래키를 전달한 상위 테이블의 삭제되면 하위 테이블도 모두 삭제됩니다.
- ON DELETE SET NULL : 외래키를 전달한 상위 테이블이 삭제되면 하위 테이블의 외래키 속성의 값을 NULL로 변경합니다.
- ON DELETE SET DEFAULT : 외래키를 전달 상위 테이블이 삭제되면 하위 테이블의 외래키 속성의 값을 default 로 변경합니다.
- ON DELETE SET RESTRICT : 외래키를 전달받은 하위 테이블에 PK가 없는 경우만 외래키를 전달한 상위 테이블 삭제를 허용합니다.
- ON DELETE SET NO ACTION : 참조무결성을 위반할 가능성이 있는 삭제/수정 액션을 취하지 않습니다.
ORACLE의 테이블 제약조건에 대해 서술하시오.
- PRIMARY KEY : 속성내의 중복과 NULL을 허용하지 않습니다.
- UNIQUE KEY : 속성내에 중복값을 혀용하지않습니다. NULL은 입력할 수 있습니다. NOT NULL과 함께 사용하면 PRIMARY KEY처럼 동작합니다.
- NOT NULL : 속성내에 NULL 값을 허용하지 않습니다.
- CHECK : 속성의 값을 특정 도메인 내의 값으로만 정할 수 있도록 합니다.
- FOREIGN KEY : 속성값의 중복이 없는 즉, PRIMARTY KEY 혹인 UNIQUE KEY를 가진 다른 테이블의 속성을 참조해 자신의 속성처럼 이용합니다.
테이블 생성시 주의사항에 대해 서술하시오.
객체를 의미할 수 있는 적절한 단수형의 이름 사용을 권고합니다. 테이블명은 다른 테이블의 이름과 중복되지 않아야 합니다. 한 테이블 내에서는 칼럼명이 중복될 수 없습니다. 테이블의 이름을 정하고 칼럼은 괄호 '()' 로 묶어 지정합니다.
칼럼은 콤마로 구분하고 테이블 생성문은 항상 세미콜론으로 끝냅니다. 다른 테이블로의 영향도를 고려해 칼럼을 생성합니다. 칼럼의 데이터 유형은 반드시 지정해야 합니다.
테이블명과 칼럼명은 반드시 문자로 시작해야 합니다. DBMS에서 정한 에약어는 사용할 수 없습니다. A-Z,a-z,0-9,_$# 문자만 허용됩니다.
참조 무결성 제약에 대해 서술하시오.
테이블간 관계에서 자식 테이블의 외래키는 값은 NULL이거나 부모 테이블에서 참조하는 고유키 or 기본키의 값과 동일해야 합니다.
외래키의 INSERT 참조동작에 대해 서술하시오
외래키 생성시 설정할 수 있는 참조옵션은 다음과 같습니다.
- ON INSERT AUTOMATIC : 부모 테이블에 PK가 없는 경우, 부모 테이블에 PK를 생성 후 CHILD를 입력합니다.
- ON INSERT SET NULL : 부모 테이블에 PK가 없는 경우, 자식 테이블의 외래키 속성의 값을 NULL로 처리합니다.
- ON INSERT SET DEFAULT : 부모 테이블에 PK가 없는 경우, 자식 테이블의 외래키 속성의 값을 지정된 DEFAULT로 처리합니다.
- ON INSERT DEPENDENT : 부모 테이블에 PK가 없는 경우, 자식 테이블에 레코드 입력을 허용하지 않습니다.
- ON INSERT NO ACTION : 참조무결성을 위반할 여지가 있는 동작을 허용하지 않습니다.
오라클에서 데이터를 입력하는 두가지 유형에 대해 서술하시오.
- INSERT INTO TABLE_NAME (COLUML LIST) VALUES (COLUML VALUE LIST)
- INSERT INTO TABLE_NAME VALUES (전체 COLUML VALUE LIST)
오라클에서 입력된 데이터를 수정하는 방법에 대해 서술하시오.
UPDATE table_name SET update_column = update_value WHERE target_column = target_value;
target_value 와 target_column 의 데이터 형식이 달라도 묵시적 변환됩니다.
오라클의 DELETE와 DROP, TRUNCATE에 대해 서술하시오.
- DELETE : 조건절에 해당하는 결과집합을 레코드 하나씩 삭제합니다. 전체 데이터를 삭제할때 사용하면 성능이 저하됩니다. REDO 로그를 쌓기 때문에 ROLLBACK이 가능합니다. 데이터를 삭제하더라도 데이터를 담고 있던 STORAGE 는 RELEASE 되지 않습니다.
- TRUNCATE : 전체 데이터를 한 번에 삭제합니다. 최초 생성시 할당된 Storage 만 남기고 이후 할당된 것들은 모두 Release 합니다. Redo 로그를 남기지 않기때문에 Rollback이 불가합니다.
- DROP : 테이블 전체를 삭제하고 할당된 Storage 전체를 Release 합니다. Redo 로그를 남기지 않기 때문에 Rollback이 불가합니다.
SELECT 옵션에 대해 서술하시오
- ALL : Default 옵션이므로 별도로 표시하지 않습니다. 중복 데이터가 있어도 모두 출력합니다.
- DISTINCT : 중복된 데이터가 있는경우 1간으로 처리해서 출력합니다.