본문 바로가기
Oracle

Oracle 자문자답

by 10월의끝 2022. 7. 8.

문제1>DDL, DML, DCL은 각각 무엇이며 어떤 명령들이 있습니까?

-DDL(select, insert, update, delete): 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어와

                                                          데이터베이스 테이블에 들어있는 데이터에 변형을 가하는 명령어

-DML(create, alter, drop, rename, truncate): 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어

-DCL(grant, revoke): 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어

 

문제2>관계형 DBMS란 무엇입니까?

: 행과 열로 이루어진 각각의 테이블의 primary key을 참조하여 서로 연결하는것을 표현하는 데이터베이스 구조이다.

 

문제3>알고 있는 DBMS들을 나열해 보세요.

: mySQL, oracle

 

문제4>데이터 무결성 제약조건 5가지를 말해 보세요.

: 개체 무결성, 참조 무결성, 도메인 무결성, 고유 무결성, null무결성, 키 무결성

 

문제5>primary key는 무엇인가요?

: 테이블의 고유값, 레코드끼리 구분할 수 있는 고유의 값

 

문제6>foreign key는 무엇인가요?

: 외래키, 두 테이블을 서로 연결하는데 사용되는 키

외래키 값을 제공하는 테이블이 부모테이블이고 외래키가 포함된 테이블이 자식테이블이다.

 

문제7>데이터베이스 테이블을 생성하는 SQL문을 작성하세요.(primary key와 foreign key를 필수적으로 사용)

 

create table emp(

          emp_id number(3) primary key,

           emp_name varchar2(20),

);

 

create table department (

          emp_id number(3 primary key,

           emp_name varchar2(20),

           dept_id number(3),

           foreign key (dept_id) references epm(emp_id)

);

 

문제8>테이블 구조를 알아보는 명령은 무엇인가요?

 

desc emp;

 

문제9>emp 테이블에서 eno와 ename 컬럼을 출력하는 SQL문을 작성하세요.

 

select eno, ename

from emp

 

문제10>select 문장에서 중복되는 것을 한 번씩만 출력하는 명령은 무엇입니까?

 

select distinct eno, ename

from emp

 

문제11>emp 테이블에서 eno와 ename 컬럼을 eno로 오름차순으로 정렬해서 출력하는 SQL문을 작성하세요.

 

select eno, ename

from emp order by eno

 

문제12>오라클에서 숫자를 반올림하는 함수는 무엇인가요?

 

select ROUND(98.7654)

from dual

 

문제13>날짜 형식을 문자형식으로 바꾸는 함수는 무엇인가요?

 

SELECT TO_CHAR(sysdate, 'YYYY-MM-DD') FROM DUAL;

 

문제14>문자 형식을 날짜형식으로 바꾸는 함수는 무엇인가요?

 

SELECT TO_DATE('20220707' , 'YYYYMMDD') FROM DUAL

 

문제15>문자 형식을 숫자형식으로 바꾸는 함수는 무엇인가요?

 

SELECT TO_NUMBER('12345') FROM dual

 

문제16>NVL 함수의 기능과 방법을 설명하세요.

: nvl 함수란 데이터 값이 null값일때 지정 값을 출력하고 그렇지 않으면 원래 값을 그대로 출력한다.

SELECT eno, ename, NVL(salary,0) AS salary from table

 

문제17>emp 테이블에서 eno가 10인 레코드에서 ename을 "홍길동"으로 수정하는 SQL문을 써보세요.

 

update emp

set ename = '홍길동'

where eno = 10

 

문제18>emp 테이블에서 eno가 20인 레코드를 삭제하는 SQL문을 써보세요.

 

delete from emp

where eno = 20;

 

문제19>emp_tmp 테이블을 만들려고 합니다. emp 테이블의 컬럼은 사용하고 데이터는 가져오지 않게

           테이블을 생성하는 SQL문을 작성하세요.

 

create table emp_tmp

as select eno, ename

from emp

where 0=1;

 

문제20>테이블에 insert 문장을 사용해서 새로운 레코드를 생성했는데, 적용이 되지 않은 경우 실행시킬 명령은 무엇입니까?

: commit을 해본다.

 

문제21>오라클에서 시퀀스는 무엇이며 어떤 것에 사용하는지 설명하세요.

: 시퀀스는 연속적인 숫자를 생성해내는 객체이다. 보통 primary key 값을 생성하기 위해 사용한다.

데이터 입력시 동시성때문에 레지스터가 겹치는 것을 방지하기 위해 여러 데이터가 중복되지 않는 번호를 얻을 수 있다.

 

문제22>emp 테이블의 dept_id 컬럼은 dept 테이블의 dept_id을 참조하고 있습니다. emp 테이블에 새로운 레코드를 입력하려고 하는데, foreign key 제약조건에 걸려 오류가 났습니다. 원인이 무엇일까요? 해결책은 무엇입니까?

: emp 테이블에 값을 넣을 때 dept테이블에 존재하는 값으로 삽입해야 하는데 값이 없기때문에 오류가 난 것이다.

새로운 레코드를 입력하려고 insert할때는 dept에 존재하는 값을 넣어야 한다.