*실습용 테이블
1. 실습용 sql파일 커밋하기
/*
DROP TABLE EMP;
DROP TABLE DEPT;
DROP TABLE BONUS;
DROP TABLE SALGRADE;
DROP TABLE DUMMY;
*/
CREATE TABLE DEPT
(DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );
CREATE TABLE EMP
(EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2) CONSTRAINT FK_DNO REFERENCES DEPT);
CREATE TABLE SALGRADE
(GRADE NUMBER,
LOSAL NUMBER,
HISAL NUMBER);
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK', 7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN', 7698,to_date('20-2-1981', 'dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN', 7698,to_date('22-2-1981', 'dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER', 7839,to_date('2-4-1981', 'dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981', 'dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER', 7839,to_date('1-5-1981', 'dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER', 7839,to_date('9-6-1981', 'dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST', 7566,to_date('13-07-1987', 'dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT', NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981', 'dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK', 7788,to_date('13-07-1987', 'dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK', 7698,to_date('3-12-1981', 'dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST', 7566,to_date('3-12-1981', 'dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK', 7782,to_date('23-1-1982', 'dd-mm-yyyy'),1300,NULL,10);
INSERT INTO SALGRADE VALUES (1, 700, 1200);
INSERT INTO SALGRADE VALUES (2, 1201, 1400);
INSERT INTO SALGRADE VALUES (3, 1401, 2000);
INSERT INTO SALGRADE VALUES (4, 2001, 3000);
INSERT INTO SALGRADE VALUES (5, 3001, 9999);
COMMIT;
=> 이 파일을 import 해서 열고
=> F5(스크립트 실행)를 누른다.
=> 새로고침 누르면 완료
- 사원 정보가 들어 있는 EMP 테이블
- EMPNO : 사원 번호
- ENAME : 사원 이름
- JOB : 사원 직책
- MGR : 직속 상관의 사원 번호
- HIREDATE : 입사일
- SAL : 급여
- COMM : 급여 외 추가 수당
-- DEPTNO : 사원이 속한 부서 번호
- 회사 부서 정보가 들어있는 DEPT 테이블
- DEPTNO : 부서 번호
- DNAME : 부서 이름
- LOC : 부서가 위치한 지역
- 사원들의 급여 정보가 들어있는 SALGRADE 테이블
- GRADE : 급여등급
- LOSAL : 급여등급의 최소 급여액
- HISAL : 급여등급의 최대 급여액
*데이터 조회 방법
- 셀렉션
: 행 단위로 조회하는 방식(가로줄)
- 프로젝션
: 열 단위로 조회하는 방식(세로줄)
* 셀렉션과 프로젝션 함께 사용 가능
- 조인
: 두 개 이상의 테이블을 양 옆에 연결하여 마치 하나의 테이블처럼 데이터를 조회하는 방식(실무에서 흔하다)
* SELECT절과 FROM절
SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름];
- 전체 열 조회
SELECT * FROM EMP;
=> *가 전체를 뜻한다.
- 부분 열 조회
SELECT EMPNO, ENAME, DEPTNO
FROM EMP;
* DISTINCT - 중복 데이터 삭제
- 열 중복 제거
- 열이 한 개인 경우
SELECT DISTINCT DEPTNO
FROM EMP;
- 열이 여러 개인 경우
SELECT DISTINCT JOB, DEPTNO
FROM EMP;
- ALL (중복되는 열 제거 없이 그대로 출력)
: DISTINCT와 반대로 모두 출력됨
SELECT ALL JOB, DEPTNO
FROM EMP;
* 별칭 설정하기
: 최종적으로 출력되기 원하는 열 이름을 지정할 때 주로 사용(혹은 보안이나 데이터 노출 문제의 이유로)
- 별칭 지정하는 방식
=> SAL*12+COMM을 ANNSAL로 변경된다.
★보통 3번째 방식을 선호한다.
★별칭은 보통 전체 출력에서는 불가능하다
SELECT * SAL+100 AS SAL_2
FROM EMP;
=> 이거 안됨. 무조건 출력하고자 하는 모든 열의 이름을 입력해야 한다.
* ORDER BY - 원하는 순서로 출력 데이터 정렬
★정렬은 많은 자원과 비용을 소모하기 때문에 꼭 필요한 경우가 아니면 사용하지 않는 게 좋다. (효율이 낮아지면 서비스 응답 시간 또한 느려진다.)
SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
.
. (그밖의 절)
.
ORDER BY [정렬하려는 열 이름(여러 열 지정 가능)] [정렬 옵션];
<예시>
SELECT *
FROM EMP
ORDER BY SAL DESC;
- 오름차순 : 디폴트 값이라 따로 입력을 안해도 되지만 입력하고자 한다면 정렬 옵션 위치에 ASC 입력
- 내림차순 : 정렬 옵션 위치에 DESC를 입력한다.
- 오름차순, 내림차순 동시 사용 : 우선순위는 먼저 명시한 순
SELECT *
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC;
=> 1순위는 부서 번호가 오름차순으로 정렬되고 2순위로 연봉이 내림차순으로 정렬된다.
'개발 공부 > Oracle' 카테고리의 다른 글
[Oracle] - 오라클 함수 (0) | 2023.11.28 |
---|---|
[Oracle] - WHERE절과 연산자 (0) | 2023.11.28 |
[Oracle] - 오라클 데이터베이스 설치 (0) | 2023.11.27 |
[Oracle] - 관계형 데이터 베이스 (0) | 2023.11.27 |
[Oracle] - 데이터 베이스 개념 (0) | 2023.11.24 |