본문 바로가기
자격증/정보처리기사 실기 문제 풀이

흥달쌤 정보처리기사 실기 데이터베이스 문제(DDL(Date Definition Language))

by 리드민 2023. 4. 5.
반응형

[0] DDL, DML, DCL

DDL (데이터 정의어) : 데이터베이스를 정의하는 언어로서 , 삭제, 생성 수정 등의 데이터의 전체 골격을 결정하는 역할을 수행 합니다.

ex) CREATE, ALTER, DROP -> CAD
DML (데이터 조작어 ) : 정의된 데이터베이스에 입력된 레코드를 수정 하거나 삭제 조회 하는 역할을 수행 합니다.

ex) SELECT, INSERT, DELETE, UPDATE -> SIDU
DCL (데이터 제어어 ) 데이터 베이스에 접근하거나 객체에 권한을 주는 역할을 수행 합니다.

ex) GRANT, REVOKE, COMMIT, ROLLBACK -> GRCR

 

[1] CREATE

Q 01) 테이블 생성 예제

//ORDER INFO 테이블을 생성
CREATE TABLE ORDER_INFO (
ORDER_ID NUMBER NOT NULL,
USER_ID NUMBER NOT NULL,
USER_NM VARCHAR(20) NOT NULL,
ADDRESS VARCHAR(200) NOT NULL,
TOT_PRICE NUMBER DEFAULT '0', // 값이 들어오지 않을 경우 기본값 0
GENDER CHAR(1) NOT NULL,
ORDER_CI VARCHAR(100) NULL,

// ORDER_ID 속성에 대해 기본키 지정(개체 무결성 제약 조건)
CONSTRAINTS ORDER_PK PRIMARY KEY (ORDER_ID),
// ORDER_CI 속성에 대해 고유값 제약 지정
CONSTRAINTS UNIQUE_CI UNIQUE (ORDER_CI),
// GENDER 속성에 대해 M, F 값만 받도록 설정(도메인 무결성 제약조건)
CONSTRAINTS CHK_GENDER CHECK(GENDER IN ('M', 'F')
);

CREATE TABLE ORDER_ITEM (
ITEM_ID NUMBER NOT NULL,
ORDER_ID NUMBER NOT NULL,
PRODUCT_ID NUMBER NOT NULL,
PRICE NUMBER DEFAULT '0',

// ITEM_ID 속성에 대해 기본키 지정(개체 무결성 제약조건)
PRIMARY KEY(ITEM_ID),
// ORDER_ID 속성에 대해 외래키 지정(참조 무결성 제약조건)
// 대상은 ORDER_INFO 테이블에 ORDER_ID 속성을 지정
// ORDER_INFO 테이블 ORDER_ID 수성 시 제한속성, 삭제 시 연쇄삭제 지정
CONSTRAINTS FK_ORDER_ID FOREIGN KEY(ORDER_ID)
REFERENCES ORDER_INF(ORDER_ID)
ON UPDATE RESTRICT ON DELETE CASCADE
)

 

Q 02) INDEX 생성 예제

// ORDER_INFO 테이블에 인덱스 생성
// 인덱스 테이블에 들어갈 속성은 USER_NM 컬럼과 GENDER 컬럼
// USER_NM 은 오름차순, GENDER 는 내림차순으로 인덱스 테이블에 추가됨
CREATE INDEX idx_order ON ORDER_INFO (USER_NM ASC, GENDER DESC);

 

Q 03) VIEW 생성 예제

// 성별이 여성인 회원의 회원정보를 가져오는 VIEW 생성
CREATE OR REPLACE VIEW V_ORDER_INFO_F AS
SELECT
ORDER_ID, USER_ID, USER_NM
FROM ORDER_INFO
WHERE GENDER = 'F'

// 성별이 남성인 회원의 회원정보를 가져오는 VIEW 생성
CREATE OR REPLACE VIEW V_ORDER_INFO_M AS
SELECT
ORDER_ID, USER_ID, USER_NM
FROM ORDER_INFO
WHERE GENDER = 'M'

 

Q 04) 트리거 생성 예제

//INSERT가 된 이후 TB_GOODS의 nStock 개수와 새롭게 등록된 nStock 의 개수를 더해서 업데이트 해준다.
CREATE TRIGGER TRIGGER_GOODS_STOCK
AFTER INTERT ON TB_GOODS_STOCK FOR EACH ROW
BEGIN
UPDATE TB_GOODS
SET
nStock = nStock + NEW.nStock
WHERE idx = NEW.p_idx;
END

 

Q 05) 프로시저 생성 예제

CREATE OR REPLACE PROCEDURE 프로시저명
(변수1 IN 변수타입, 변수2 OUT 변수타입, 변수3 IN OUT 변수타입....)
IS
변수 처리부
BEGIN
처리내용
EXCEPTION
예외처리부
END;

 

Q 06) 파티션 생성 예제

-- 범위 분할 파티션
CREATE TABLE TB_USER (
id INT,
year INT
)
PARTITON BY RANGE (year) (
PARTITION U1 VALUES LESS THAN (2000),
PRATITION U2 VALUES LESS THAN (2010),
PARTITION U3 VALUES LESS THAN (2020)
);

-- 목록 분할 파티션
CREATE TABLE TB_STUDENT (
id INT,
grade INT
)
PARTITION BY LIST (grade) (
PARTITION high_grade VALUES IN (1, 2, 3),
PARTITION low_grade VALUES IN (4, 5, 6)
);

 

[2] DROP

Q 01) 테이블 삭제

//회원 테이블 삭제
DROP TABLE 회원

 

Q 02) 뷰 삭제

// USER_VIEW 삭제
DROP VIEW USER_VIEW;

 

Q 03) 인덱스 삭제

// USER_INDEX 삭제
DROP INDEX USER_INDEX;

 

[3] ALTER

Q 01) 속성 추가

// 회원 테이블에 ADDR 속성 추가
ALTER TABLE 회원 ADD ADDR VARCHAR(200) null;

 

Q 02) 속성 변경

// 회원 테이블에 AGE 속성 INT로 변경
ALTER TABLE 회원 MODIFY AGE INT(11);

 

Q 03) 속성 삭제

// 회원 테이블에 AGE 속성 삭제
ALTER TABLE 회원 DROP COLUMN AGE;

 

Q 04) INDEX 변경

// 회원명 INDEX를 성명로 변경
ALTER TABLE 회원명 RENAME TO 성명
// INDEX 속도가 저하되거나 깨졌을 경우 INDEX 재구성
ALTER INDEX 회원명 REBUILD
// INDEX 비활성화
ALTER INDEX 회원명 UNUSABLE

 

[4] TRUNCATE

Q 01) 테이블 내용 비우기

// 회원 테이블 내용 삭제
TRUNCATE [TABLE] 회원;
반응형