일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- PLSQL
- 프로그래머스 쿼리문
- 게시판만들기
- html기초
- 스프링게시판만들기
- js datepicker
- CRUD게시판만들기
- 자바배열예제
- 2020정보처리기사실기정리
- 자바기초
- 스프링 CRUD게시판
- spring crud게시판
- Oracle기초
- 오라클설치
- spring crud
- 자바연산자
- 정보처리기사실기정리
- 오버라이딩
- 자바 정규표현식 예제
- 정처기실기정리
- jsp 날짜팝업
- 스프링 crud
- 2020정보처리기사실기
- crud게시판
- 프로그래머스 SQL
- 2020정보처리기사실기요약
- 프로그래머스 MYSQL
- jsp 팝업띄우기
- 날짜지정팝업
- jsp게시판만들기
Archives
- Today
- Total
영보의 SystemOut.log
[Oracle] Sub Query(서브쿼리) 종류와 예제(2) 본문
반응형
개념 정리
# 다중행 서브쿼리
: 데이터가 여러개인 경우 → 다중행 서브쿼리
- 데이터 전체를 처리 : IN
- 최대값 : ALL, MAX
- 최소값 : ANY, MIN(), SOME()
이름 | 설명 |
예제 |
>ANY() | 수행된 결과중에 최소값 = MIN 값 |
(SELECT MIN(deptno)_FROM dept) (SELECT MAX(deptno)_FROM dept) |
<ANY() | 수행된 결과중에 최대값 = MAX 값 |
<ANY(SELECT deptno FROM dept) ANY(10,20,30,40,50) => 50 |
>ALL() | 수행된 결과중에 최대값 |
<ANY(SELECT deptno FROM dept) ANY(10,20,30,40,50) => 50 |
<ALL() | 수행된 결과중에 최소값 |
>ANY(SELECT deptno FROM dept) ANY(10,20,30,40,50) => 10 |
#변수 선언
이름 | 설명 |
예제 |
스칼라변수 |
- 일반 변수 : NUMBER, VARCHAR2, CLOB, DATE |
id VARCHAR2(10) |
%TYPE | - 원형 ( 다른 테이블의 원형) | emp.ename%TYPE → ename이 가지고 있는 데이터형을 가지고 온다 |
%ROWTYPE | - 하나 이상의 데이터값을 갖는 데이터 타입 - 배열과 비슷한 역할을 하고 재사용이 가능 |
emp%ROWTYPE → emp테이블이 가지고 있는 모든 컬럼의 데이터형을 읽어 온다. |
RECODE | - JOIN, SUBQUERY - 여러개의 테이블의 컬럼을 받아서 처리 - 1ROW만 처리 |
|
CURSOR | - ArrayList - 여러개의 ROW 처리가 가능하다 |
# 출력 함수
- DBMS_OUTPUT.PUTDBMS_OUTPUT.PUT_LINE() == System.out.println()
- DBMS_OUTPUT.PUT() == System.out.print()
예제
#스칼라 변수 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
SET serveroutput on;
DECLARE
vempno NUMBER(4);
vename VARCHAR2(20);
vjob VARCHAR2(20);
vhiredate DATE;
vsal NUMBER(7,2);
BEGIN
SELECT empno,ename,job,hiredate,sal INTO vempno,vename,vjob,vhiredate,vsal
FROM emp
WHERE empno=7788;
--출력
DBMS_OUTPUT.PUT_LINE('=====결과=====');
DBMS_OUTPUT.PUT_LINE('사번'||vempno);
DBMS_OUTPUT.PUT_LINE('이름'||vename);
DBMS_OUTPUT.PUT_LINE('직위'||vjob);
DBMS_OUTPUT.PUT_LINE('입사일'||vhiredate);
DBMS_OUTPUT.PUT_LINE('급여'||vsal);
END;
|
cs |
# %TYPE 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
DECLARE
vempno emp.empno%TYPE;
vename emp.ename%TYPE;
vjob emp.job%TYPE;
vhiredate emp.hiredate%TYPE;
vsal emp.sal%TYPE;
BEGIN
SELECT empno,ename,job,hiredate,sal INTO vempno,vename,vjob,vhiredate,vsal
FROM emp
WHERE empno=7788;
--출력
DBMS_OUTPUT.PUT_LINE('=====결과=====');
DBMS_OUTPUT.PUT_LINE('사번'||vempno);
DBMS_OUTPUT.PUT_LINE('이름'||vename);
DBMS_OUTPUT.PUT_LINE('직위'||vjob);
DBMS_OUTPUT.PUT_LINE('입사일'||vhiredate);
DBMS_OUTPUT.PUT_LINE('급여'||vsal);
END;
|
cs |
# %ROWTYPE 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
DECLARE
vemp emp%ROWTYPE;
BEGIN
SELECT * INTO vemp
FROM emp
WHERE empno=7788;
--출력
DBMS_OUTPUT.PUT_LINE('=====결과=====');
DBMS_OUTPUT.PUT_LINE('사번'||vemp.empno);
DBMS_OUTPUT.PUT_LINE('이름'||vemp.ename);
DBMS_OUTPUT.PUT_LINE('직위'||vemp.job);
DBMS_OUTPUT.PUT_LINE('입사일'||vemp.hiredate);
DBMS_OUTPUT.PUT_LINE('급여'||vemp.sal);
END;
|
cs |
- %ROWTYPE 은 DESC emp; 를 수행했을 때 안의 값이 다 들어가있는게 %ROWTYPE의 특징이다.
# RECORD 예제 : 사용자 정의
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
DECLARE
TYPE empdept IS RECORD(
empno emp.empno%TYPE,
ename emp.ename%TYPE,
dname dept.dname%TYPE,
loc dept.loc%TYPE
);
ed empdept;
BEGIN
SELECT empno,ename,dname,loc INTO ed
FROM emp, dept
WHERE emp.deptno=dept.deptno
AND empno=7788;
DBMS_OUTPUT.PUT_LINE('====결과====');
DBMS_OUTPUT.PUT_LINE('사번:'||ed.empno);
DBMS_OUTPUT.PUT_LINE('이름:'||ed.ename);
DBMS_OUTPUT.PUT_LINE('부서명:'||ed.dname);
DBMS_OUTPUT.PUT_LINE('근무지:'||ed.loc);
END;
|
cs |
반응형
'Database > Oracle' 카테고리의 다른 글
[Oracle] Oracle 입력 값 받아서 구구단 출력 예제 (0) | 2020.11.10 |
---|---|
[Oracle] PL/SQL - 제어문 (반복문 / 선택문 / 조건문) 종류와 예제 (0) | 2020.11.10 |
[Oracle] Sub Query(서브쿼리) 종류와 예제(1) (0) | 2020.11.10 |
[Oracle] DML / 데이터형 / Oralce 제약조건 (0) | 2020.08.18 |
[Oracle] JOIN / EQUI_JOIN / NON_EQUI_JOIN/ JOIN예제 (0) | 2020.08.12 |