티스토리 뷰

Oracle database
Oracle에 data를 저장하기 위해서는 저장할 공간에
대한 데이터 형태를 결정해야한다.

NUMBER : 숫자 데이터를 저장

   .precision : 소수점을 포함한 전체 자릿수 지정

   .scale : 소숫점 이하 자릿수 지정

 

DATE : 세기, 년, 월, 일, 시, 분, 초 의 날짜 및 시간 데이터들 저장하기 위한 데이터형

            기본 데이터형은 'YY/MM/DD'로 저장되어 있음

 

CHAR : 문자 데이터를 저장 하기 위한 자료형 CHAR은 고정 길이 문자 데이터를 저장 한다.

             입력 된 자료의 길이에 상관 없이 정해진 길이 만큼 저장 영역을 차지 하며 최소 크기는 1이다.

             CHAR은 주어진 크기만큼 저장 공간이 할당 되므로 편차가 심할 데이터를 입력할 경우 저장 공간의 낭비가 심하다.

 

VARCHAR2 : 데이터형은 가변적인 문자열을 저장하기 위한 데이터이다.

                       VARCHAR2는 저장 되는 데이터에 의해 저장 공간이 할당되므로 메모리 낭비를 줄일 수 있다.

 

NULL이 존재하는 컬럼은 연산되지 못한다.

==> NULL을 포함해서 연산하고 싶으면 어떻게 해야할까?

==> NVL함수를 이용하면 된다!

==> SELECT ename, sal, sal * 12 , sal * 12 + NVL(comm, 0) from emp;

==> comm에 null이 있다면 0으로 생각하고 연산하라는 뜻.

 

SQL 명령문의 종류

DQL : Data Query Language(질의어)

DML : Data Manipulation Language(조작어)

DDL : Data Defintion Language(정의어)

TCL : Transaction Control Language(트랙잭션 처리어)

DCL : Data Control Language(제어어)

 

 


명령어

list

: 방금 실행한 명령문을 보여준다.

 

/

: 실행시켜준다.

 

run

: list + / 명령문을 바로 실행시켜준다.

 

edit

: 편집할 수 있는 편집기가 뜬다.

 

@

: Start 명령어와 같은 명령어. sql을 실행시킨다.

 

Sava [파일이름] replace

: 같은 이름으로 저장하고 싶을 때 덮어쓰기

 

Sava [파일이름] Append

: 같은 이름으로 덧 붙혀서 쓰기.

 

Spool [파일이름]

~ SELECT * from emp;

~ Spool off

: Spool 저장

 

Column ename FORMAT a25;

: 25개로 늘리기

 

Column ename clear;

: 초기화

 

.Select ename, sal, to_char(sal, 'L9,999,999,00') from emp;

: 형태 변환

 

Set pagesize 20;

: 열 크기 변경

 

Set linesize 20;

: 행 크기 변경

 


실습

 

Scott tiger 내에 존재하는 emp 테이블의 모습.

scott tiger emp 테이블

 

문제1) 월급을 2000이상 3000이하의 급여를 받는 사원들을 출력하시오.

 

출력값1) SAL(급여) 2000~3000 사원들이 출력된 모습.

 

문제2) 81년도에 입사한 사원들을 출력하시오.

 

출력값2) 81년도에 입사한 사원들이 출력된 모습

 

문제3) 커미션이 300이거나 500이거나 1400인 사원들을 출력하시오.

 

출력값3) COMM이 300, 500, 1400인 사람들만 출력된 모습.

 

실습을 더 하고 싶어서 구글링을 통해서 몇개의 예제 문제가 있는 블로그를 찾았다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nannayabyc&logNo=220142618110 

 

오라클 scott / tiger 연습문제

후배 교육겸 긁어모은 오라클 연습문제 2014 09 11 1. 사원의 번호, 이름, 급여, 부서 번호를 출력하여라. ...

blog.naver.com


오늘 진도에 맞는 문제들만 걸러서 풀어본다.

 

문제 1

풀이 1

첫 번째 문제는 간단하게 번호(empno), 이름(ename), 급여(sal), 부서 번호(deptno)를 select하면 되는문제 !

너무 간단하니,, 정답도 패스 !


 

 문제 2

 풀이 2

두 번째 문제는 order by desc,asc 개념은 배우지 않았지만, 오늘 배웠던 as 개념과 NVL함수 개념이 있어서 포함시켰다.

문제 속에서 주어진 것처럼 이름, 급여, 커미션 총액(급여+커미션)을 select로 그대로 뽑고

여기서 포인트는 nvl 함수를 통해서 급여와 커미션의 합의 값이 NULL의 영향을 받지않고 계산되는 것이다.

마지막으로는 총액이 많은 순서로 출력되어야 하므로. 내림차순으로 정렬해주면 되니

order by 총액 desc; 로 마무리해주면 된다.

 

정답 2

총액이 큰 순서대로 나열된 모습을 볼 수 있다.


 문제 3

 

 풀이 3

이것도 1번 문제와 같이 너무나 간단한 문제. 문제속에서 주어지는 컬럼들을 순서대로 SELECT 하고 조건에 맞는 제어문을 걸어주면

원하는 값이 출력된다.

 


 문제 4

 

풀이 4

이것도 마찬가지로 너무나 간단한 문제! 문제 속에서 주어진 순서대로 출력하고, 맞는 제어문을 걸어주면 알맞은 값이 출력된다.

round, trunc 같은 database 함수들은 Excel에서 사용하는 함수들과 거의 유사하니 정리되어 있는 것을 보면 쉽게 이해할 수 있다!

 

 


 문제 5

 풀이 5

이 문제는 hiredate는 database에 YY/MM/DD 형식으로 format 되어 있지만

사실 년도의 연산에서 그대로 더해줘도 자동으로 YY/MM/DD 형식을 출력되기 때문에

원하는 값을 출력할 수 있다!

 

 정답 5

 


 문제 6

 풀이 6

lower() : 괄호안의 변수를 소문자로 출력

substr(obj, x, y) : 괄호안의 obj를 x번째부터 y번째까지 파싱하여 출력

length(obj) : obj의 길이를 출력

 

위 3개의 함수를 보고 공부한다면 쉽게 풀릴 문제 !

 

substr(ename, 1, 3) = ename(이름) 앞 3자리만 출력된다.

lower(substr(ename, 1, 3)) = 출력된 3자리의 이름을 소문자로 출력한다.

length(ename) = ename의 길이를 출력한다.

 

 정답 6

 


 문제 7

 풀이 7

concat(object1, object2) : object1 과 object2를 결합(더해준다)

concat함수를 통해서 ename과 deptno과 합성됐고 as 를 통해서 "연결예제"라는 heading으로 출력해준다.

 

정답 7


 문제 8

 풀이 8

데이터베이스 기출문제 중에서 가장 많이 보이는, LIKE 연산

칼럼에 들어가 있는 값들 중 특정 문자가 포함되어 있는 값을 조회할 때 사용한다.

job(칼럼명) LIKE 검색할값 ~

 

 풀이 8


 문제 9

 풀이 9

오늘 수업때 배웠던 to_char() 함수는 날짜, 숫자 등의 값을 문자열로 변환하는 함수이다. 

to_char은 통해서 sal 컬럼을 소수점 셋 째자리 까지 표현되는 $형태로 변환! 

시키고 출력시켰다.

 

 

● 마무리

데이터베이스 쿼리문은 역시 기출문제를 통해 문제 속에서 주어지는 함수에 대해 공부하고 정리하는 것이 머리속에 가장 잘 들어오는 것 같다. 

'back > Oracle Database' 카테고리의 다른 글

Oracle Database(서브 쿼리, DDL)  (0) 2022.08.30
Oracle Database(Function 4)  (0) 2022.08.27
Oracle Database(Function 3)  (0) 2022.08.25
Oracle Database(Function 2)  (0) 2022.08.24
Oracle Database(Function)  (0) 2022.08.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크