온풀투데이
[오라클] 관계형 데이터베이스, 오라클의 주요 자료형 본문
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
*/
'DATABASE' 카테고리의 다른 글
[오라클] UPPER(), LOWER(), INITCAP() / TO_DATE() / BETWEEN ⓐ AND ⓑ (0) | 2022.03.11 |
---|---|
[오라클] NULL의 처리(NVL, NVL2, COALESCE()) / 급여, 연봉 산출 (0) | 2022.03.11 |
[오라클] 사용자 계정 생성 및 설정, 테이블 스페이스(TABLESPACE) (0) | 2022.03.10 |
[오라클] 데이터베이스 개념 (0) | 2022.03.10 |
[오라클] 접속 및 구동 (0) | 2022.03.09 |