온풀투데이

[오라클] 관계형 데이터베이스, 오라클의 주요 자료형 본문

DATABASE

[오라클] 관계형 데이터베이스, 오라클의 주요 자료형

온풀 2022. 3. 10. 23:52
20220217_04_scott.sql / 오라클 3일 차

관계형 데이터베이스

  • 각각의 데이터를 테이블의 형태로 연결시켜 저장해 놓은 구조
  • 그리고 이들 각각의 테이블들 간의 관계를 설정하여 연결시켜 놓은 구조

SELECT 문의 처리(PARSING) 순서 (아주 중요!!!)

SELECT 컬럼명 -- ⑤
FROM 테이블명 -- ①
WHERE 조건절 -- ②
GROUP BY 절 -- ③
HAVING 조건절 -- ④
ORDER BY 절 -- ⑥

프롬 웨얼 그룹바이 해빙 셀렉트 오더바이

오라클의 주요 자료형(DATA TYPE)

/*
 cf) MSSQL 서버의 정수 표현 타입
     tinyint    0 ~ 255             1byte
     smallint   -32,768 ~ 32,767    2byte 
     int        -21억 ~ 21억        4byte
     bigint     엄청 큼             8byte

     MSSQL 서버의 실수 표현 타입
     float, real -- real이 double이라고 생각하면 됨

     MSSQL 서버의 숫자 표현 타입
     decimal, numeric

     MSSQL 서버의 문자 표현 타입
     char, varchar, Nvarchar
*/

/*
※ ORACLE 은 숫자 표현 타입이 한 가지로 통일되어 있다.

   1. 숫자형 NUMBER        → -10의 38승-1 ~ 10의 38승
             NUMBER(3)     → -999 ~ 999
             NUMBER(4)     → -9999 ~ 9999
             NUMBER(4, 1)  → -999.9 ~ 999.9


※ ORACLE 의 문자 표현 타입   

    2. 문자형 CHAR          → 고정형 크기
              CHAR(10)      → 무조건 10Byte 소모
              CHAR(10)      ← '강의실'        6Byte 이지만 10Byte 를 소모
              CHAR(10)      ← '졸린한충희'   10Byte
              CHAR(10)      ← '곧잔다김민성' 10Byte 를 초과하므로 입력 불가

              VARCHAR2      → 가변형 크기
              VARCHAR2(10)  → 담긴 데이터에 따라 크기가 변화
              VARCHAR2(10)  ← '김정용'        6Byte 
              VARCHAR2(10)  ← '멀다김정용'   10Byte
              VARCHAR2(10)  ← '가까이김정용' 10Byte 를 초과하므로 입력 불가

              NCHAR         → 유니코드기반 고정형 크기
                               ------------
                                  글자수       
              NCHAR(10)     → 10 글자 

              NVARCHAR2     → 유니코드기반 가변형 크기
                               ------------
                                  글자수
              NVARCHAR2(10) → 10 글자

    3. 날짜형 DATE
*/

테이블에서 데이터 조회하기, 별칭(Alias)

--○ EMP 테이블에서 사원번호, 사원명, 급여, 커미션 데이터만 조회한다.
SELECT *
FROM EMP;    -- 어떤 구조인지 알아야 하니까 먼저 구조를 조회 (컬럼명 확인)

SELECT EMPNO, ENAME, SAL, COMM -- 사원번호, 사원명, 급여, 커미션
FROM EMP;
--==>> 
/*
7369    SMITH    800    
7499    ALLEN    1600    300
7521    WARD    1250    500
7566    JONES    2975    
7654    MARTIN    1250    1400
7698    BLAKE    2850    
7782    CLARK    2450    
7788    SCOTT    3000    
7839    KING    5000    
7844    TURNER    1500    0
7876    ADAMS    1100    
7900    JAMES    950    
7902    FORD    3000    
7934    MILLER    1300    
*/

--○ EMP 테이블에서 부서번호가 20번인 직원들의 데이터들 중
--   사원번호, 사원명, 직종명, 급여, 부서번호 조회한다.
SELECT *
FROM EMP;

SELECT EMPNO, ENAME, JOB, SAL, DEPTNO  
FROM EMP
WHERE DEPTNO = 20;     -- WHERE 조건절
--==>>
/*
7369    SMITH    CLERK     800    20
7566    JONES    MANAGER    2975    20
7788    SCOTT    ANALYST    3000    20
7876    ADAMS    CLERK    1100    20
7902    FORD    ANALYST    3000    20
*/

SELECT EMPNO AS "사원번호", ENAME "사원명", JOB 직종명, SAL "급  여", DEPTNO "부서번호"
FROM EMP;
-- AS는 생략할 수 있지만 "" 큰따옴표는 웬만하면 생략하지 말자!

--※ 테이블을 조회하는 과정에서
--   각 컬럼의 이름에는 별칭(ALIAS)를 부여할 수 있다.
--   기본 구문은 『AS "별칭이름"』의 형태로 작성되며
--   이 때, 『AS』는 생략이 가능하다.
--   또한, 『""』도 생략이 가능하다.
--   하지만, 『""』를 생략할 경우 별칭에 공백은 사용할 수 없게 된다.
--   공백은 해당 커럼의 종결을 의미하므로
--   별칭(ALIAS)의 이름 내부에 공백을 사용해야 할 경우
--   『""』를 사용하여 별칭을 부여할 수 있도록 한다.


--○ EMP 테이블에서 부서번호가 20번과 30번 직원들의 데이터들 중
--   사원번호, 사원명, 직종명, 급여, 부서번호 항목을 조회한다.
--   단, 별칭(ALIAS)을 사용한다.
/*
EMP 테이블에서                              → FROM ENP
부서번호가 20번과 30번                      → 조건
사원번호, 사원명, 직종명, 급여, 부서번호    → SELECT 컬럼명
*/
SELECT EMPNO "사원번호", ENAME "사원명", JOB "직종명", SAL "급여", DEPTNO "부서번호"  
FROM EMP
WHERE DEPTNO = 20 || DEPTNO = 30; 
--    -----------    -----------  
--==>> 에러 발생
--     (ORA-00933: SQL command not properly ended)

SELECT EMPNO "사원번호", ENAME "사원명", JOB "직종명", SAL "급여", DEPTNO "부서번호"  
FROM EMP
WHERE DEPTNO = 20 OR DEPTNO = 30;    -- 오라클에서 OR는 OR!! ㅋㅋㅋㅋ
--==>>
/*
7369    SMITH    CLERK         800    20
7499    ALLEN    SALESMAN    1600    30
7521    WARD    SALESMAN    1250    30
7566    JONES    MANAGER     2975    20
7654    MARTIN    SALESMAN    1250    30
7698    BLAKE    MANAGER        2850    30
7788    SCOTT    ANALYST        3000    20
7844    TURNER    SALESMAN    1500    30
7876    ADAMS    CLERK        1100    20
7900    JAMES    CLERK         950     30
7902    FORD    ANALYST        3000    20
*/