SELECT 문은 가장 기본이면서 가장 중요한 구문이다.


SELECT문이란 데이터베이스 내의 테이블에서 원하는 정보를 추출하는 명령


WITH <Sub Query>

SELECT select_list

FROM table_source WHERE search_condition

GROUP BY group_by_expression

HAVING search_condition

ORDER BY order_expression ASC : DESC


SELECT 열이름

FROM 테이블이름

WHERE 조건



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
32
33
34
35
36
37
38
39
40
41
SELECT CHR(75FROM DUAL;
-- 숫자를 문자값으로 변환 (K)
 
SELECT CONCAT('TEST''_NAME'FROM DUAL;
-- 2개의 문자값을 결합 (TEST_NAME)
 
SELECT INITCAP('MANAGER CHECK'FROM DUAL;
-- 첫번째 문자만 대문자로 변환 (Manager Check)
 
SELECT LOWER('MANAGER CHECK'FROM DUAL;
-- 소문자로 변환 (manager check)
 
SELECT LPAD('GRAYPASTEL'20'*'FROM DUAL;
-- 20-GRAYPASTEL을 지정한 문자로 채움 (**********GRAYPASTEL)
 
SELECT RPAD('GRAYPASTEL'20'#'FROM DUAL;
-- GRAYPASTEL##########
 
SELECT LTRIM('xyXYYYLATxy','xy'FROM DUAL;
-- 왼쪽부터 지정된 문자가 발견되면 제거 (XYYYLATxy)
 
SELECT RTRIM('xyXYYYLATxy','xy'FROM DUAL;
-- 왼쪽부터 지정된 문자가 발견되면 제거 (xyXYYYLAT)
 
SELECT REPLACE('CHECK' , 'C''R'FROM DUAL;
-- 두번째 정의된 값을 세번째 정의된 값으로 변경 (RHERK)
 
SELECT SUBSTR('ABCDEFGAAABBA',2,4FROM DUAL;
-- 2번째 문자부터 4개의 문자만 출력 (BCDE)
 
SELECT ASCII('P'FROM DUAL;
-- ASCII코드로 변환
 
SELECT LENGTH('CANDIDE'FROM DUAL;
-- 정의된 문자의 길이를 구해줌 (7)
 
SELECT NVL(COMM, 0FROM EMP;
-- 정의된 컬럼이 NULL이면 지정한 값으로 대체
 
SELECT NVL2(COMM, 50FROM EMP;
-- 해당 컬럼이 NULL이면 세번째 아니면 두번째 값으로 대체
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT ABS(-15FROM DUAL;
-- 절대값으로 변환 (15)
 
SELECT CEIL (15.2FROM DUAL;
-- 정의된 값을 올림값으로 변환 (16)
 
SELECT FLOOR(15.2FROM DUAL;
-- 정의된 값을 내림값으로 변환 (15)
 
SELECT LOG(6100FROM DUAL;
-- 뒤의 수가 앞의 수의 몇승인지 나타남
 
SELECT POWER(3,4FROM DUAL;
-- 3의 4승을 값
 
SELECT ROUND(15.295,2FROM DUAL;
-- 첫번째 수의 소수점 자리수를 두번째 값에서 정하고 반올림한다. (15.3)
 
SELECT SIGN(3FROM DUAL;
-- 정의된 값이 음수이면 -1, 0이면 0, 양수이면 1을 리턴
 
SELECT TRUNC(15.7962FROM DUAL;
-- 정의된 수의 출력할 소수점 자리수를 정한다. (15.79)
cs


기본개념)

 - 자신을 호출한 곳으로 리턴 해주는 값은 없고 호출되어 실행만 된다.

 - 실행환경과 Stored Program 사이에 값을 전달하기 위해 파라미터를 사용한다.

 - 파라미터 종류

1. IN : 호출하는 곳에서 함수 or 프로시저로 값을 전달

2. OUT : 함수 or 프로시저에서 호출한 곳으로 값을 전달 // 빈 깡통을 생각하면 쉽다. 비어이는 깡통에 결과값이 담긴다.

3. IN OUT : 호출하는 곳에서 함수 or 프로시저로 값을 전달하고 동시에 함수 or 프로시저에서 호출한 곳으로 값을 전달하는 변수

 - 프로시저 Hearder의 끝에는 IS[AS]가 와야하고 IS와 BEGIN사이에 BEGIN~END에서 사용할 변수를 선언

 - 자신의 스키마에서 프로시저를 만들기 위해서는 CREATE PROCEDURE 시스템권한이 있어야 하며,

   다른 스키마 계정에서 프로시저를 만들기 위해서는 CREATE ANY PROCEDURE 시스템 권한이 있어야 한다.


기본형식)

CREATE [OR REPLACE] PROCEDURE procedure_name[parameters]

IS[AS]

선언부

BEGIN

도입부

EXCEPTION

예외처리

END;


예제)

CREATE OR REPLACE PROCEDURE ojc3 (p_empno IN NUMBER, p_new_sal IN NUMBER) // 외부에서 값을 넣어주어야 한다.

IS 

BEGIN

UPDATE emp

SET sal = p_new_sal

WHERE empno = p_empno;


COMMIT;

END ojc3;


SELECT empnp, ename, sal FROM emp WHERE empno = 7369;


EMPNO  ENAME  SAL

7369      smith    800


호출)

exec ojc3(7369, 4500);


SELECT empnp, ename, sal FROM emp WHERE empno = 7369;


EMPNO  ENAME  SAL

7369      smith    4500



'Database' 카테고리의 다른 글

[ORACLE] SELECT문 알아보기  (0) 2018.02.28
[ORACLE] 오라클 기초 단일행 함수  (0) 2018.02.28
[ORACLE] 오라클 함수(Function)를 알아보자  (0) 2018.02.27

기본개념)

 - 자신을 호출한 곳으로 반드시 하나의 값을 리턴해 줘야되는 PL/SQL Stored Program이다.

 - 프로시저와 함수의 가장 큰 차이는 값을 리턴하느냐 마느냐

 - 자신의 스키마 계정에 함수를 작성하려면 CREATE PROCEDURE 시스템 권한이 필요

 - 다른 사용자 계정에 함수를 작성하려면 CREATE ANY PROCEDURE 시스템 권한이 필요

 - 함수 Header에 리턴되는 데이터 타입을 기술해야 하며, Header의 끝에는 IS[AS]가 와야하고, IS[AS]와 BEGIN사이에 Begin~End에서 사용할 변수를 선언


기본 형식)

CREATE [OR REPLACE] FUNCTION function_name[parameters]

RETURN 리턴되는 데이터 타입

IS[AS]

선언부

BEGIN

실행부

EXCEPTION

예외처리

END;


예제)

CREATE OR REPLACE FUNCTION ojc2(p_empno IN NUMBER) // 외부에서 ojc2라는 함수를 호출하면서 파라메터를 넣어줘야 한다.

RETURN VARCHAR2 // 리턴되는 타입 가변길이 문자열 형태

IS

v_ename emp.ename%TYPE; // emp테이블의 ename컬럼과 타입을 같게해라. 동적타입

BEGIN

SELECT ename

INTO v_ename // 반드시 INTO절이 있어야 한다.

FROM emp

WHERE empno = p_empno;


RETURN v_ename;

END ojc2;


실행예시)

SELECT ojc2(7000) FROM DUAL; // SELECT문에는 반드시 테이블 명이 필요함 임시 테이블 사용



CREATE TABLE EMP_TEMP AS SELECT EMPNO, SAL, ENAME FROM EMP WHERE 1=2;


INSERT INTO EMP_TEMP VALUES(7788, 9999, ojc2(7788));


결과값)

EMPNO   SAL   ENAME

7788       9999  (7788의 문자열)


==================================================================================================


CREATE OR REPALCE FUNCTION "함수명"(

"파라미터" 데이터타입, ( EX : FUNC_V_NAME (IN) VARCHAR2 )

"파라미터" 데이터타입

)

RETURN 데이터타입( VARCHAR2 )INTO

"변수이름"( V_TEST_NAME ) 데이터타입( VARCHAR2(300) ) ;


BEGIN

V_TEST_NAME := 'HELLOWORLD'; ( =앞에 ':'가 들어간다. )


SELECT testName

INTO V_TEST_NAME

FROM TEST_TABLE

WHERE funcVname = FUNC_V_NAME;


RETURN V_TEST_NAME;


END;


사용예)

SELECT "함수명" FROM DUAL;

+ Recent posts