과목 1
1. 데이터 베이스 선정할 때 고려할 사항이 아닌 것
답 : 비용/안정성/범용성/용량/성능(속도)
- 계층형 데이터베이스 : 계층형 데이터 베이스는 데이터의 관계를 트리 구조로 정의하고, 부모, 자식 형태를 갖는 구조이다. 풀어서 말하면 상위에 레코드가 복수의 하위 레코드를 갖는 구조이다. 하지만 데이터의 중복이 문제가 생긴다.
- 네트워크형 데이터베이스 : 네트워크형 데이터베이스는 계층형 데이터의 데이터 중복 문제를 해했고, 레코드간의 다양한 관계를 그물처럼 갖는 구조이다. 하지만 복잡한 구조 때문에 추후에 구조를 변경한다면 많은 어려움이 따른다.
- 관계형 데이터 베이스 : 관계형 데이터베이스는 우리가 흔히 표현하는 행(Column), 열(Record)로 구성된Table간의 관계를 나타낼때 사용한다. 우리는 이렇게 표현된 데이터를 SQL(Structured Query Language)을 사용하여 데이터 관리 및 접근을 한다.
- NoSQL 데이터베이스 : NoSQL 데이터베이스는 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용한다. 키(key)와 값(value)형태로 저장되고, 키를 사용해 데이터 관리 및 접근을 한다.
2. 데이터 베이스 생성할 때 사용하는 명령어
답 : CREATE
- DDL(CREATE)
- CREATE DATABASE [DB명];
3. 데이터 베이스 정의(어)와 관련 없는 것
답 : (DDL, DML, DCL) (CREATE, ALTER, DROP, TRUNCATE)
DDL;Data Definition Language : 스키마를 정의하거나 조작하기 위해 사용
- CREATE : 정의
- ALTER : 수정
- DROP : 삭제
- TRUNCATE : DROP 후 CREATE
DML;Data Manipulation Language : 데이터를 조작하기 위해 사용
- SELECT : 조회
- INSERT : 추가
- DELETE : 삭제
- UPDATE : 변경
DCL;Data Control Language : 데이터를 제어하기 위해 사용
- COMMIT : 트랜잭션 작업 결과를 반영
- ROLLBACK : 트랜잭션의 작업 취소 및 원상복구
- GRANT : 사용자에게 권한 부여
- REVOKE : 사용자 권한 취소
4. 데이터 베이스 용량 산정할 때 고려할 사항이 아닌 것
답: 데이터 건수 및 용량 산정(조사), 헤더 사이즈 평균 길이, 30% 여유공간,
3. 테이블 설계
3.1 데이터 건수 및 용량 산정
1) 데이터 건수와 길이 산정
- 테이블 크기를 산정하기 위한 양식을 업무 담당자에게 배포하여 데이터 건수와 산정근거를 조사한다.
업무명 |
테이블명 |
초기건수 |
월발생건수 |
보관기간 |
|
|
|
|
|
- 데이터 없이 빈 테이블을 구성하여 SQL문을 통하여 정확한 테이블별 row의 길이를 구할 수 있다.
2) 테이블 총크기 산정
- 조사된 데이터 건수와 길이를 바탕으로, 계산 공식이 반영된 Excel 양식을 이용하여 자동으로 산정한다.
- Row 길이에 헤더 사이즈를 감안하여 평균 길이를 구한다.
- 30% 정도의 여유공간을 감안하여 테이블의 총크기를 구한다.
테이블명 |
최종길이 |
초기건수 |
월발생건수 |
보관기간 |
총데이터건수 |
총크기 |
|
|
|
|
|
|
|
- 한 개의 BLOCK에 Available 한 Bytes - 1958
- 각 initrans 는 23 Bytes
- PCT_FREE : Table 의 pctfree 값(default 10)
- ADJ_ROW_SIZE : 각 row 의 평균 SIZE 추정치
- ROW_COUNT : table 의 row 의 갯수
- BLOCK_SIZE : 1 block의 크기 (단위: K)
5. 테이블을 생성하거나 삭제하는 명령어는 무엇인가?
답 : (DDL, DML, DCL) (CREATE, ALTER, DROP, TRUNCATE)
CREATE TABLE 문장을 실행하여 테이블을 생성 합니다.
No.032 테이블 삭제
DROP TABLE 문장은 Oracle8 테이블의 정의를 삭제 합니다. 테이블을 삭제할 때 데이터베이스는 테이블에 있
는 모든 자료와 그와 연관된 모든 INDEX를 DROP 하고 사용하고 있던 공간을 돌려줍니다.
- 테이블의 모든 구조와 데이터가 삭제 됩니다.
- DDL 문장이기 떄문에 TRANSACTION 이 COMMIT 됩니다.
- 모든 인덱스가 삭제 됩니다.
- VIEW나 SYNONYM은 남지만 사용시 ERROR가 발생합니다.
- 테이블의 OWNER 나 DROP ANY TABLE 권한을 가진 사용자만이 테이블을 삭제할 수 있습니다.
- Syntax
DROP TABLE table_name [CASCADE CONSTRAINT] |
- 일단 실행된 DROP TABLE 문장은 복구(ROLLBACK)할 수 없습니다. ORACLE SERVER 은 DROP TABLE 문장을
실행할 때 삭제 여부를 질문하지 않습니다.
No.012 DELETE 문장
- DELETE 문장을 사용하여 테이블로부터 기존의 자료를 삭제할 수 있다.
- WHERE 절을 명시하여 특정 행이나 행들을 삭제할 수 있다.
- WHERE 절을 생략하면 테이블의 모든 행이 삭제 된다.
- Syntax
DELETE [FROM] table_name [WHERE condition]; |
No.030 TRUNCATE TABLE 문장
- 테이블의 OWNER 이거나 DELETE TABLE 권한을가진 사용자가 테이블의 모든 행을 삭제(구조는 삭제되지 않
는다)하고 사용하고 있던 기억 공간을 모두 해체할 경우에 사용합니다.
- 삭제된 행은 복구(ROLLBACK)할 수 없습니다.
- Syntax
TRUNCATE TABLE table_name; |
- DELETE 문장은 테이블의 모든 행을 삭제할 수 있지만, 저장 공간을 해제할 수 없습니다.
6. 사용권한을 줄 때 사용하는 명령어?
답: GRANT
GRANT
7. 테이블 수정할 때 사용하는 쿼리문
답: ALTER - ADD(열 추가), MODIFY(수정), RENAME(이름 수정), UPDATE(행 수정)
No.020 테이블을 수정
- 테이블을 생성한 이후에 열을 생략 되었거나, 열 정의를 변경할 필요가있을 수 있다.
- 테이블의 구조를 변경할 경우 ALTER TABLE 명을 사용하여 변경 한다.
No.021 새로운 열 추가
- 새로운 열을 추가 할 수는 있지만 테이블에 있는 기존의 열은 DROP 할 수 없다.
- 열이 위치를 기술할 수 없으며 항상 테이블에서 마지막에 위치 합니다.
- 열을 추가할 때 테이블이 행을 포함하고 있다면 새로운 열은 이미 존재하는 열을 NULL로 초기화 한다.
- Syntax
ALTER TABLE table_name ADD (column datatype [DEFAULT expr ] [,column datatype [DEFAULT expr ], , , , , , , , ] |
No.022 열 수정
- ALTER TABLE의 MODIFY 절을 사용하여 열의 정의를 수정할 수 있습니다.
- 열의 수정은 열의 자료형, 크기, DEFAULT VALUE입니다.
- Syntax
ALTER TABLE table_name MODIFY (column datatype [DEFAULT expr ] [,column datatype [DEFAULT expr ], , , , , , , , ] |
- 숫자열의 정밀도나 폭을 증가할 수 있다.
- 열이 모두 NULL이거나 테이블에 자료가 없으면 열의 폭을 감소시킬 수 있다.
- 열이 NULL 을 포함하면 열의 자료형을변경할 수 있다.
- 열이 NULL을 포함하거나 크기를 변경하지 않으면 CHAR을 VARCHAR2로 변경하거나 그 반대의 겨우도 가능하다.
- 열의 DEFAULT VALUE를 변경하는 것은 이후의 INSERT 문장에만 영향을 미칩니다.
8. 테이블 구조 확인
답: DESC table_name;
DESC table_name;
9. 다음중 NULL 값에 대한 설명으로 부적절한 것
답: NULL IS 값, 산술X, PK NOT NULL, NULL타입
No.010 Null 값의 처리
행이 특정 열에 대한 데이터 값이 없다면, 값은 null이 됩니다. null 값은 이용할 수 없거나 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값입니다. null 값은 0 이나 공백과는 다릅니다. 0은 숫자이며 공백은 문자입니다. 열이 NOT NILL 로 정의되지 않았거나, 열이 생성될 때 PRIMARY KEY로 정의되지 않았다면, 어떤 데이터형의 열은 null 값을 포함할 수 있습니다.
No.011 Null에 대하여
- NULL은 이용할 수 없고 할당되지 않고 알려져 있지않고 적용 불가한 값을 의미한다.
- NULL이란 0이나 공백(space)과 다르다.
- NULL 값을 포함한 산술 표현식 결과는 NULL이 된다.
- column에 데이터 값이 없으면 그 값 자체가 널 또는 널 값을 포함하고 있다.
- NULL 값은 1 바이트의 내부 저장
No.012 NVL 함수
- Null값을 어떤 특정한 값(실제 값)으로 변환하는데 사용한다.
- 사용될 수 있는 데이터 타입은 날짜, 문자, 숫자입니다.
- NVL 함수를 사용할 때 전환되는 값의 데이터 타입을 일치 시켜야 한다.
10. 외래키에 대한 설명 중 옳은 것
답: 아래읽어야함
No.012 FOREIGN KEY(FK)
- FOREIGN KEY는 DETAIL 쪽에서 정의한다.
- MASTER TABLE 의 PRIMARY KEY, UNIQUE KEY로 정의된 열을 지정할 수 있으며 열의 값과 일치하거나
NULL 값이어야 한다.
- FOREIGN KEY는 열 또는 열의 집합을 지정할 수 있으며 동일 테이블 또는 다른 테이블간의 관계를 지정할
수 있다.
- ON, DELETE, CASCADE 을 사용하여 DETAIL TABLE 에서 관련된 행을 삭제하고 MASTER TABLE에서 삭제를
허용할 수 있다.
- Syntax
column datatype [CONSTRAINT constraint_name] REFERENCES table_name (column1[,column2, , , ] [ON DELETE CASCADE]) |
column datatype, , , , , , , , , , , , [CONSTRAINT constraint_name] FOREIGN KEY (column1[,column2, , ,]) REFERENCES table_name (column1[,column, , , ] [ON DELETE CASCADE]) |
No.013 PRIMARY KEY(PK) 와 FOREIGN KEY(FK)
- FOREIGN KEY 값은 MASTER TABLE 에서 존재하는 값과 일치해야 하거나 NULL 이 되어야 한다.
- FOREIGN KEY 값은 데이터 값을 기초로 하여 순전히 논리적이지 분리적이거나 포인터가 아니다.
- MASTER TABLE(parent)은 참조 당하는 쪽(DEPT TABLE)을 테이블을 의미하고 DETAIL TABLE(child)은 참조하는
쪽(EMP TABLE)의 테이블을 의미한다.
- MASTER TABLE(참조 당하는 쪽)을 먼저 생성하여야 한다.
- MASTER TABLE 에 PRIMARY KEY 또는 UNIQUE KEY로 설정된 열을 DETAIL TABLE 에서 참조하여야 한다.
- MASTER TABLE 과 DETAIL TABLE의 참조하는 열과 참조 당하는 쪽의 자료형과 크기가 일치해야 한다.
과목2
1. 오라클 데이터 타입이 아닌것?
답: VARCHAR2, CHAR, NUMBER, DATE, LONG, CLOB, RAW, LONG RAW, BLOB, BFILE
VARCHAR2(n) : 가변 길이 문자 데이터(1~4000byte)
CHAR(n) : 고정 길이 문자 데이터(1~2000byte)
NUMBER(p,s) : 전체 p자리 중 소수점 이하 s자리(p:1~38, s:-84~127)
DATE : 7byte (BC 4712년 1월 1일부터 AD 9999년 12월 31일)
LONG : 가변 길이 문자 데이터(1~2Gbyte)
CLOB : 단일 바이트 가변 길이 문자 데이터(1~4Gbyte)
RAW(n) : n byte의 원시 이진 데이터(1~2000)
LONG RAW : 가변 길이 원시 이진 데이터(1~2Gbyte)
BLOB : 가변 길이 이진 데이터(1~4Gbyte)
BFILE : 가변 길이 외부 파일에 저장된 이진 데이터(1~4Gbyte)
2. 모든 컬럼열을 검색하는 쿼리문
답: ALL_TAB_COLUMNS;
모든 SYSTEM테이블 정보 : SELECT * FROM ALL_TABLES;
모든 SYSTEM컬럼열 정보 : SELECT * FROM ALL_TAB_COLUMNS;
모든 현재사용자컬럼열 SELECT * FROM COLS;
3. 이름이 n문자로 끝나는 것을 검색하는 쿼리문
답: WHERE column LIKE %n
No.008 LIKE 연산자
- 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용한다.
- 검색 조건은 LITERAL 문자나 숫자를 포함할 수 있다.
- '%'는 문자가 없거나 하나 이상의 문자를 '_'는 하나의 문자와 대치됩니다.
- 패턴 일치 문자를 조합할 수 있습니다.
- '%' 나 '_'에 대해서 검색하기 위해서는 Escape 식별자를 이용할 수 있습니다.
- WHERE column LIKE ‘%A\_A% ESCAPE’\’;’
(해석 : \문자를 _ 앞에 작성하여 ESCAPE를 활성화하고 _를 문자로 인식하게 만든다.)
- 기본 날짜 형식이 'YY-MM-DD'일 경우는 WHERE hiredate LIKE '82%';로 기술한다.
- SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YY-MM-DD'; 명령어로 연결되어 있는 SQL*Plus 창
(SESSION)에서 날짜 타입을 바꿀 수 있다.
4. 오라클 논리연산자가 아닌것
답: AND, OR, NOT
논리연산자는 AND, OR, NOT이 있다.
5. ORDER BY 절에서 낮은 순으로 정렬할 때 쓰는 키워드
답: ASC
오름차순 ASC 저→고 낮은 순서대로
내림차순 DESC 고→저 높은 순서대로
6. 데이터 양이 많을 경우 검색 속도를 향상시키기 위한 것
답: INDEX
INDEX
No.002 인덱스의 특징
- 인덱스는 테이블의 값을 빠르게 액세스 하도록 하는 데이터베이스 객체이다.
- 데이터를 빠르게 찾기 위한 B*TREE을 써서 디스크 입출력 횟수를 줄인다.
- Oracle8 Server가 인덱스를 자동적으로 사용하고 유지 보수 한다.
- 인덱스를 만들면 사용자가 직접 조작할 필요가 없게 된다.
- 인덱스는 논리적으로도 물리적으로도 테이블과는 독립적이다.
- 언제든지 생성하거나 삭제할 수 있으며 이는 테이블이나 다른 인덱스에 영향을 주지 않는다는 의미이다.
7. 오라클 함수중 대소문자를 조작하는 함수가 아닌 것
답: LOWER, UPPER, INITCAP
LOWER : 대소문자가 혼합되어 있거나 대문자인 문자열을 소문자로 변환합니다
UPPER : 대문자가 혼합되어 있거나 소문자인 문자열을 대문자로 변환 합니다.
INITCAP : 각 단어의 첫번째 문자를 대문자로 나머지 문자는 소문자로 변경합니다.
8. 게시판 날짜를 저장할 때 사용하는 오라클 키워드
답: TO_DATE
To_DATE
No.004 특정 날짜 값 삽입
- 형식 DD-MON-YY 는 항상 날짜 값을 입력할 때 사용한다. 이 형식은 현재 세기에 대한 DEFAULT 세기를 다시 호출한다. 또한 날짜가 시간 정보를 포함하므로 DEFAULT 시간은 자정(00:00:00)이다. 날짜를 다른 세기로 입력하거나 또는 특정 시간을 요구 한다면 TO_DATE 함수를 사용하여라.
9. 뷰
답: 아래읽어야함
No.001 VIEW의 개념
테이블이나 다른 VIEW을 기초로 한 논리적인 테이블이고 VIEW는 자체의 데이터는 없지만 테이블의 데이터를
보거나 변경할 수 있는 창과 같다. VIEW은 실제적으로는 질의 문장을 가진다.
No.002 VIEW의 장점
- VIEW은 데이터베이스의 선택적인 내용을 보여줄 수 있기 때문에 데이터베이스에 대한 액세스를 제한한다.
- 복잡한 질의어를 통해 얻을 수 있는 결과를 간단한 질의어를 써서 구할 수 있게 한다.
- 데이터 독립성을 허용한다.
- 동일한 데이터의 다른 VIEW를 나타낸다.
- 조인을 한 것처럼 여러 테이블에 대한 데이터를 VIEW을 통해볼 수 있다.
- 한 개의 VIEW로 여러 테이블에 대한 데이터를 검색할 수 있다.
- 특정 평가기준에 따른 사용자 별로 다른 데이터를 액세스 할 수 있다.
No.003 Simple VIEW와 Complex VIEW
Simple VIEW |
Complex VIEW |
- 오직 하나의 테이블에서만 데이터가 유래된다 - 데이터 그룹 또는 함수를 포함하지 않는다. - VIEW를 통해 DML 수행 가능 |
- 다중 테이블에서 데이터가 유래된다. - 데이터 그룹 또는 함수를 포함한다. - VIEW을 통한 DML을 항상 허용하지 않는다. |
No.004 VIEW의 생성
- CREATE VIEW 문장 내에서 SUBQUERY을 내장하여 VIEW를 생성한다.
- SUBQUERY은 복합 SELECT 구문을 포함할 수 있고 ORDER BY 절을 포함할 수 없다.
- Syntax
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view_name [(alias[,alias, , , , ])] AS Subquery [WITH CHECK OPTION [CONSTRAINT constraint ]] [WITH READ ONLY] |
OR REPLACE 이미 존재한다면 다시 생성한다.
FORCE Base Table 유무에 관계없이 VIEW을 만든다.
NOFORCE 기본 테이블이 존재할 경우에만 VIEW를 생성한다.
view_name VIEW의 이름
Alias Subquery를 통해 선택된 값에 대한 Column명이 된다.
Subquery SELECT문장을 기술한다.
WITH CHECK OPTION VIEW에 의해 액세스 될 수 있는 행만이 입력, 갱신될 수 있다.
Constraint CHECK OPTION 제약 조건에 대해 지정된 이름이다.
WITH READ ONLY 이 VIEW에서 DML이 수행될 수 없게 한다.
- VIEW을 정의하는 질의어는 조인, 그룹, Subquery를 포함하는 복잡한 SELECT 문장으로 구성될 수 있다.
- VIEW을 정의하는 질의어에는 ORDER BY절을 쓸 수 없다.
- 제약 조건의 이름을 명시하지 않으면 시스템이 SYS_Cn 형태의 이름을 지정한다.
- VIEW을 삭제하거나 재생성하지 않고 VIEW의 정의를 변경하려면 OR REPLACE 옵션을 쓸 수 있다.
No.005 VIEW의 구조 및 이름 확인
- 일단 VIEW가 생성되면, VIEW의 이름과 VIEW 정의를 보기 위해 USER_VIEWS 라는 데이터 사전 테이블을 질
의할 수 있습니다.
- VIEW을 만드는 SELECT 문장의 텍스트는 LONG 열에 저장됩니다.
No.006 데이터 액세스 VIEW
- VIEW을 사용하여 데이터를 액세스할 때 ORACLE SERVER은 다음 작업을 수행합니다.
- USER_VIEWS 데이터 사전 테이블에서 VIEW 정의를 검색합니다.
- VIEW 기반 테이블에 대한 액세스 권한을 확인합니다.
- VIEW 질의를 기본 테이블 또는 테이블들에서의 동등한 작업으로 전환합니다.
No.007 VIEW의 수정
- OR REPLACE 옵션은 비록 이 이름이 이미 존재할지라도 VIEW가 생성될 수 있도록 해주므로 그 소유자에 대
한 오래된 VIEW 버전업할 수 있다.
- CREATE VIEW 절에서 열 별칭을 지정할 때 별칭은 SUBQUERY 의 열과 동일한 명령으로 나열됨을 명심하십
시오.
No.008 복합 VIEW 생성
- 두 테이블로부터 값을 출력하는 그룹 함수를 포함하는 복잡한 VIEW를 생성합니다.
- VIEW의 어떤 열이 함수나 표현식에서 유래되었다면 별칭은 필수적입니다.
No.009 VIEW에서 DML 연산 수행
- 단순 VIEW에서 DML 연산을 수행할 수 있습니다.
- VIEW가 다음을 포함 한다면 행을 제거할 수 없습니다.
① 그룹 함수 ② GROUP By절 ③ DISTINCT 키워드
- 다음을 포함한다면 VIEW에서 데이터를 수정할 수 없습니다.
① 그룹 함수 ② GROUP BY 절 ③ DISTINCT 키워드 ④ 표현식으로 정의된 열 ⑤ ROWNUM 의사열
- 다음을 포함한다면 VIEW에서 데이터를 추가할 수 없습니다.
① 그룹 함수 ② GROUP BY절 ③ DISTINCT 키워드 ④ 표현식으로 정의된 열 ⑤ ROWNUM의사열
⑥ VIEW에 의해 선택되지 않은 NOT NULL열이 기본 테이블에 있을 경우
No.010 WITH CHECK OPTION 절 사용
- VIEW을 통해 참조 무결성 체크를 수행하는 것이 가능합니다. 또한 데이터베이스 LEVEL 에서 제약 조건을 적
용할 수 있습니다.
- VIEW은 데이터 무결성을 보호하기 위해 사용될 수 있지만, 사용은 매우 제한됩니다.
- VIEW을 통해 수행되는 INSERT와 UPDATE는 WITH CHECK OPTION 절이 있으면 VIEW을 가지고 검색할 수
없는 행 생성을 허용하지 않음을 명시합니다. 그러므로 삽입되거나 갱신되는 데이터에 대해서 무결성 제약 조
건과 데이터 검증 체크를 허용합니다.
- VIEW가 선택하지 않은 행에 대해 DML 작업을 수행하려고 하면, 지정된 제약 조건 명과 함께 에러가 출력됩
니다.
No.011 DML 연산 부정
- WITH READ ONLY 옵션으로 VIEW을 생성하면 VIEW에서 DML 연산을 수행할 수 없습니다.
- VIEW에서 임의의 행에서 DML 연산을 수행하려고 하면 ORACLE SERVER 에러 ORA-01752가 발생합니다.
No.012 VIEW의 제거
- VIEW는 데이터베이스에서 기본 테이블을 기반으로 하기 때문에 테이터 손실 업이 VIEW를 제거할 수 있다.
- Syntax
DROP VIEW view_name; |
10. 프로시져
답: 프로시져
Procedure
CREATE PROCEDURE name
IS
BEGIN
statements;
statements;
[EXCEPTION]
END:
'Legend 개발자 > Oracle' 카테고리의 다른 글
Team Project SQL (0) | 2017.11.07 |
---|---|
No.019 PL/SQL 커서 [2017-06-14] (0) | 2017.06.19 |
No.018 PL/SQL 조건문 [2017-06-14] (0) | 2017.06.19 |
No.017 PL/SQL 쿼리 [2017-06-14] (0) | 2017.06.19 |
No.016 PL/SQL 변수 [2017-06-14] (0) | 2017.06.16 |