Home     FreeBSD     Linux     MS-Window     PHP     Data Base     Utility     Phone     Etc  

   
  Category : Data-Base         .RDBMS 개요 -2수정   삭제   
.제 8 장 연산자 와 내장 함수

1. 연산자
1.1 산술 연산자
1.2 문자 연산자
1.3 비교 연산자
1.4 논리 연산자
1.5 SET 연산자
1.6 기타 연산자
2. 내장 함수
2.1 단일행 수치 함수
2.2 단일행 문자 함수
2.3 그룹 함수
2.4 변환 함수
2.5 날짜 함수
2.6 기타 함수
3. 포맷 모델
3.1 수치 포맷
3.2 날짜 포맷
4. 식
5. Expr
6. 조건
7. 조건식



연산자
연산자와 함수는 비슷한 일을 한다. 양쪽 모두 복수(아닌 경우도 있다)의 인수를 입력으로 해서 1개의 또는 복수의 결과를 리턴한다. 또 양쪽 모두 각각의 데이타 항목을 조작하기 위해서 사용된다

연산자와 함수의 차이는 함수가 함수명 (인수1, 인수2) 이라는 형식으로 표현되는 반면 연산자는 특수한 문자를 사용해서 표현된다. 개개의 연산자는 최대 2개의 인수 밖에 가질 수 없지만 함수는 그 구조에 따라서 3개 이상의 인수를 가질 수 있도록 되어 있다

산술 연산자
산술 연산자는 식 안에서 수치를 반전, 가산, 감산, 승산, 제산을 행하기 위해서 사용된다. 연산의 결과는 수치가 됩니다. 이들 연산자의 일부는 날짜 산술에도 사용된다 산술 연산자를 우선순위가 높은 것에서 부터 나타내면 다음과 같다
l 산술연산자 : () , + - (Unary) , * / , + - (Binary)

문자 연산자
문자 연산자는 식안에서 문자열을 조작하기 위하여 사용된다.
l 연산자 : ||
l 기능 : 문자(값)의 연결
l 예 : SELECT 'NAME IS' || ENAME

비교 연산자
비교 연산자는 2 개의 식을 비교하는 조건 안에서 사용된다. 모든 경우에서 비교한 결과는 [참(TRUE)] 또는 [거짓(FLASE)]이 됩니다. 다음은 SQL의 비교 연산자들을 나타낸 다
l 비교연산자 : (), =, !=, ^=, <>, >, >, >=, <=, IN, NOT IN, ANY, ALL, [NOT]BETWEEN, [NOT]EXISTS, [NOT]LIKE, IS [NOT] NULL

NOT IN 연산자

NOT IN 연산에 의해서 참조되는 값의 리스트에 널이 1 개 포함되어 있는 경우에는 모든 행은 거짓으로 평가된다 (리턴되는 행은 없다). 널을 비교대상으로 하면 결과는 모두 널이 되므로 전체 식의 결과는 널이 된다. 특히 NOT IN 연산자가 서브쿼리를 참조하는 경우에는 이같은 결과를 초래하는 것을 간과하기 쉬우므로 주의를 요한다.

논리 연산자
논리 연산자는 복수의 조건의 결과에 영향을 주기 위하여 사용한다. AND 연산자를 사용한 경우 행은 양쪽의 조건을 만족해야 한다. OR 연산자를 사용한 경우 어느 쪽인가의 조건을 만족해야만 한다. 다음은 SQL의 논리 연산자를 우선순위가 높은 순으로 나타내고 있다.

l 논리 연산자 : () , NOT , AND , OR

집합 연산자
집합 연산자는 복수의 쿼리의 결과를 1 개의 결과로 요약한다. 다음은 SQL의 집합 연산자를 우선순위가 높은 순으로 나타내고 있다.
l UNION
기능 : 쿼리 결과를 결합해서 개개의 쿼리에서 리턴된 행을 모두 중복되지 않도록 리턴한다.
예 : ...SELECT...UNION SELECT...;
l INTERSECT
기능 : 쿼리 결과를 결합해서 모든 쿼리에서 리턴된 공통의 행을 중복하지 않도록 리턴한다.
예 : ...SELECT...INTERSECT SELECT...;
l MINUS
기능 : 쿼리 결과를 결합해서 첫번째 쿼리에서 리턴된 결과에서 두번째 쿼리를 뺀 나머지 행을 리턴한다.
예 : ...SELECT ...MINUS SELECT...
l 주의 : 중복되는 행이 얻어진 경우, INTERSECT, MINUS 및 UNION을 사용할 경우 중복하는 행의 집합마다 1 개의 레코드 만이 결과로써 표시된다.


기타 연산자
다음은 위에서 언급한 연산자를 제외한 기타 연산자들을 나타내고 있다.
l (+)
기능 : 결합에 있어서 선행하는 컬럼이 외부 결합 컬럼인 것을 나타난다.
예 : ... WHERE DEPT. DEPINO=EMP.DEPINO(+)
l [table.]*
기능 : 쿼리 대상으로 하는 테이블에서 모든 컬럼을 선택한다.
테이블명과 마침표를 앞에 지정한 경우 지정한 테이블의 모든 컬럼을 선택한다.
예 : SELECT * FROM EMP; SELECT EMP.* FROM EMP;
l COUNT(expr)
기능 : expr이 널이 아닌 행의 수를 리턴한다.
예 : SELECT COUNT(COMM) FROM EMP;
l COUNT(*)
기능 : 테이블에서 널을 포함한 행의 수를 리턴한다.
예 : SELECT COUNT(*) FROM EMP;
l ALL
기능 : 쿼리 및 집합에서 중복하는 값을 보존한다
예 : SELECT ALL* ... COUNT(ALL DEPTNO);
l DISTINCT
기능 : 쿼리의 결과에서 중복하는 행을 제외한다. 혹은 집합식에서 중복하는 값을 제외한다.
예 : SELECT DISTINCT * ... ; ...COUNT(DISTINCT DEPINO);
l PRIOR
기능 : 트리구조의 쿼리에 있어서 페어런트와 차일드의 관계를 정의한다. 조건 좌측의 식(EMPNO)는 페어런트의 행을 나타난다. 이에 반해 우측의 (MGR)은 차일드의 행을 나타난다. CONNECT BY 에서만이 아닌 트리구조를 취급하는 임의의 구에서 사용할 수 있다.
예 : CONNECT BY PRIOR EMPNO=MGR

LIKE 연산자

구문 : SELECT .... WHERE char LIKE pattern
SELECT SAL FROM EMP WHERE ENAME LIKE 'BL%';
문자 패턴으로써 데이타 값에 지정할 수 있는 문자는 언더바와 퍼센트
기호 2 종류가 있다. 언더바 "_" 은 1 문자에 대응시키기 위해서 사용한다. 퍼센트 기호 "%" 는 0 을 포함한 임의의 수의 문자에 대응시키기 위해서 사용한다.

내장 함수
대개의연산자는 대부분 2 개의 인수 밖에 가질 수 없지만 함수는 그 구조에 따라서 3개 이상의 인수를 가질 수 있다.

단일행 함수는 모두 다음의 속성을 갖고 있다.

l 단일행 함수는 행당 1 개의 결과를 리턴 한다.
l 단일행 함수는 1 개 이상 (1 개도 필요로 하지 않는 것도 있음)의 인수를 받아 들인다.
l 단일행 함수는 네스트될 수 있다.
l 단일행 함수는 동일 타입의 유저 변수, 컬럼, 또는 식을 사용할 수 있는 임의의 장소에서 사용할 수 있다.
l 단일행 함수는 쿼리로 리턴되는 다른 행에 관계 없이 각각의 행에 대해서 작용한다.

다음에 사용될 인수는 아래와 같은 생략형을 사용한다.
l char 문자 상수나 문자식
l d 혹은 e 날짜 상수나 날짜식
l m, n 수치 상수나 수치식
l raw RAW 타입의 식 (행 식별자)
l rowid RAWID 타입의 식
l * 함수의 컨텍스트에 의존하는 타입
l expr 임의의 타입의 식


단일행 수치 함수
수치 함수는 수치를 입력으로서 받아들이고, 결과로서 수치를 리턴한다. 다음은 SQL의 수치 함수들을 나타한다.

ABS
l 구문 ABS(n)
l 목적 n의 절대값을 리턴한다.
l 예 SELECT ABS(-15) "absolute" FROM DUAL;

CEIL
l 구문 CEIL(n)
l 목적 n 이상의가장 작은 정수를 리턴한다.
l 예 SELECT CEIL(15.7) "ceiling" FROM DEAL;

FLOOR
l 구문 FLOOR(n)
l 목적 n 이하의 가장 큰 정수를 리턴한다.
l 예 SELECT FLOOR(15.7) "floor" FROM DUAL;

MOD
l 구문 MOD(m,n)
l 목적 m을 n으로 나눈 나머지를 리턴한다. n이 0인 경우 m을 리턴
l 예 SELECT MOD(7,5) "modula" FROM DUAL;

POWER
l 구문 POWER(m,n)
l 목적 m을 n승한 값을 리턴한다. n은 정수,
그렇지않을 경우에는 에러를 리턴한다.
l 예 SELECT POWER(3,2) "Raised" FROM DUAL;

ROUND
l 구문 ROUND(n[,m])
l 목적 n을 소수점 이하 m 자리로 사사오입한 값을 리턴한다
. m 이 생략되는 경우에는 소수점 이하가 사사오입 된다.
m 이 음수를 지정하면 소수점에서 역으로 m 자리까지
사사오입 됩니다. m 은 정수이어야 한다.
l 예 SELECT ROUND(15.193,1) "Round" FROM DUAL;

SIGN
l 구문 SIGN(n)
l 목적 n < 0이면 -1, n = 0 이면 0, n > 0 이면 1 을 리턴 한다.
l 예 SELECT SIGN(-15) "Sign" FROM DUAL;

SQRT
l 구문 SQRT(n)
l 목적 n의 평방근을 리턴 한다. n < 0 인 경우는 NULL 을 리턴 한다.
SQRT는 [실수]의 결과를 리턴 합니다.
l 예 SELECT SQRT(25) "Square root" FROM DUQL;

TRUNC
l 구문 TRUNC(n[,m])
l 목적 n을 소수점 m 자리까지 절사 한다. m 이 생략된 경우에는
소수점 이하가 절사 된다. m 이 음수를 지정하면 소수점의 좌측 m 자리 를 절사한다 (0 으로 한다)
l 예 SELECT TRUNC(15.79,1) "Truncate" FROM DUAL;


단일행 문자 함수
단일행 문자 함수는 문자를 입력으로서 받아들이고 문자 및 수치를 리턴한다

문자를 리턴하는 함수
다음은 문자값을 리턴하는 함수를 나타낸다

l 구문 CHR(n)
l 목적 ASCII 또는 EBCDIC의 값이 n인 문자를 리턴한다.
l 예 SELECT CHR(75) "Character" FROM DUAL

INITCAP
l 구문 INITCAP(char)
l 목적 각각의 단어 최초의 문자를 대문자로 기타의 문자를 소문자로
변환.하여 char를 리턴한다.
l 예 SELECT INITCAP('MR. SAMUEL HILIHOUSE') "Capitalized" FROM DUAL;

LOWER
l 구문 LOWER(char)
l 목적 모든 문자를 소문자로 변환해서 char를 리턴한다.
l 예 SELECT LOWER('MR. SAMUEL HILLHOUSE') "Lowercase" FROM
DUAL;


LPAD
l 구문 LPAD(char !, n[, char 2])
l 목적 char 1 의 좌측에 char 2 에서 지정한 문자를 채워서 n 자리로
해서 리턴한다. char의 디폴트는 공백이다.
l 예 SELECT LPAD('PAGE 1',14,'*.') "LPAD example" FROM DUAL;

LTRIM
l 구문 LTRIM(char[, set])
l 목적 set 이 아닌 최초의 문자가 나타나기 까지 char의 좌측에서
문자를 삭제한다. 디폴트의 set는 ' '이다.
l 예 SELECT LTRIM('XXXLAST WORD','X' "Left trim" FROM DUAL;

REPLACE
l 구문 REPLACE(char, search_string [,replacement_string])
l 목적 search_string 이 나타날 때에 replacement_string 으로 치환해서
char를 리턴한다. replacement_string 을 지정하지 않는 경우에
는 char 안에 나타나는 모든 search_string 을 삭제한다.
search_string 도 replacement_string 도 지정하지 않을 경우에는
함수는 NULL을 리턴한다. REPLACE 함수는 TRANSLATE 함수의
슈퍼세트에 대응한다. TRANSLATE 함수는 1문자의 치환을
행하는 것에 반해서 REPLACE 함수는 문자열의 치환과 삭제를
행할 수 있다.
l 예 SELECT REPLACE('JACK AND JUE','J','BL') "change" FROM DUAL;

RPAD
l 구문 RPAD(char 1, n[, char2])
l 목적 char 1 의 우측에 char 2 에서 지정한 문자를 채워서 n 자리로
하고 리턴한다. char 2 의 디폴트는 공백이다.
l 예 SELECT RPAD('ENAME',10,'*' "RPAD example" FROM DUAL;

RTRIM
l 구문 RTRIM(char, [set])
l 목적 set 이 아닌 최초의 문자가 나타나기 까지 char의 우측에서 문자
를 삭제한다. 디폴트 set 은 ' ' 이다.
l 예 SELECT RTRIM('TRUEXXXX','X' "Right Trim" FROM DUAL;

SOUNDEX
l 구문 SOUNDEX(char)
l 목적 char로 지정한 단어와 발음이 동일한 문자열을 리턴한다.
이 함수는 각각 단어의 음성표현을 리턴하고 철자는 다르지만
발음이 유사한 단어를 비교할 수 있다.
l 예 SELECT ENAME FROM EMP WHERE
SOUNDEX(ENAME)=SOUNDEX('SMYTHE');

SUBSTR
l 구문 SUBSTR(char, m[, N])
l 목적 문자열 char 의 m 번째 문자에서 부터 n 개의 문자열을 골라
낸다(n을 생략하는 경우는 char의 최후까지). char 의 최초의
위치는 1 이다.
l 예 SELECT SUBSRT('ABCDEF',2,3) "Substracting" FROM DUAL;

TRANSLATE
l 구문 TRANSLATE(char, from, to)
l 목적 모든 from 을 to 로 치환하고 char 를 리턴한다.
일치하지 않은 문자열은 영향을 받지 않는다. TRANSLATE 에서
문자열의 삭제는 행하지 않는다.
l 예 SELECT TRANSLATE('HELLOW! THERE!','!','-') FROM DUAL;

UPPER
l 구문 UPPER(char)
l 목적 모든 소문자를 대문자로 변환하고 char 를 리턴한다.
l 예 SELECT UPPER('Mr. Roger') FROM DUAL;


수치를 리턴하는 함수

ASCII
l 구문 ASCII(char)
l 목적 char의 첫 문자의 대조 순서의 값을 리턴합니다. EBCDIC 함수는
존재하지 않는다. EBCDIC 시스템에서는 이 ASCII 함수가 EBCDIC의 대조 순서의 값을 리턴한다
l 예 SELECT ASCII('Q') FROM DUAL;
INSTR
l 구문 INSTR(char 1, char 2[, n[, m]])
l 목적 n 의 위치에서 검색을 시작해서 char 1 안에서 char 2 가 m 번째
나타 나는 위치를 리턴한다. m 을 생략한 경우에서 "1" 로 가정 한다. n을 생략한 경우에도"1" 로 가정한다. n > 1 인 경우 위
치는 char 1 의 최초의 문자에서 상대적으로 주어진다.
l 예 SELECT INSTR('MISSISSIPPI','S',5,2) "in string" FROM DUAL;

LENGTH
l 구문 LENGTH(char)
l 목적 char 의 길이를 리턴한다.
l 예 SELECT LENGTH('ELEPHANT') FROM DUAL;

NLSSORT
l 구문 NLSSORT(char)
l 목적 사이트 지정의 국제언어에 기초한 cha r의 대조 순서의 값을
리턴 한다.
l 예 SELECT NLSSORT('Q') "Squence #" FROM DUAL;


그룹 함수
그룹 함수는 단일행 함수같이 행마다 1 개의 함수를 리턴하지 않고 행의 그룹에 기초하여 값을 리턴한다. 디폴트로 전체 결과는 1 개의 그룹으로서 취급한다. SELECT 문의 GROUP BY 구를 사용하면 보다 작은 그룹에 결과를 분할할 수 있다.
DISTINCT를 지정하면 그룹 함수는 값이 서로 다른 데이타만을 대상으로 처리한다. ALL을 지정하면 중복되는 값을 포함한 모든 값을 대상으로 처리한다. 예를 들면 DISTINCT를 사용한 경우 1,1,1,3 의 평균은 2 가 된다. ALL의 경우는 1.5 가 됩니다. 어느것도 지정하지 않은 경우에는 ALL 로써 처리된다.
COUNT(*) 를 제외한 다음의 모든 그룹 함수는 널 값을 처리 대상으로 하지 않는다.

AVG
l 구문 AVG([DISTINCT | ALL] n)
l 목적 n 의 평균값을 리턴한다. 널 값은 무시한다.
l 예 SELECT AVG(SAL) "Average" FROM EMP;


COUNT(expr)
l 구문 COUNT([DISTINCT | ALL] expr)
l 목적 expr 이 널 값이 아닌 행의 수를 리턴한다.
l 예 SELECT COUNG(JOBS) "counts" FROM EMP;

COUNT(*)
l 구문 COUNT(*)
l 목적 중복된 값이나 NULL 값을 포함한 레코드 건수를 리턴한다.
l 예 SELECT COUNT(*) "Total" FROM EMP;

MAX
l 구문 MAX([DISTINCT | ALL] expr)
l 목적 expr 의 최대값을 리턴 한다.
l 예 SELECT MAX(SAL) "Maximum" FROM EMP;

MIN
l 구문 MIN([DISTINCT | ALL] expr)
l 목적 expr의 최소값을 리턴 한다.
l 예 SELECT MIN(SAL) "Minimum" FROM EMP;

STDDEV
l 구문 STDDEV([DISTINCT | ALL] n)
l 목적 절 값을 무시해서 n 의 표준 편차를 리턴 한다.
STDDEV 는 n-1(샘플) 계산에 기초로 하고 있다.
l 예 SELECT STDDEV(SAL) "Deviation" FROM EMP;

SUM
l 구문 SUM([DISTINCT | ALL] n)
l 목적 n 의 합계를 리턴한다.
l 예 SELECT SUM(SAL) FROM EMP;

VARIANCE
l 구문 VARIANCE([DISTINCT | ALL] n)
l 목적 n 의 평방 편차를 리턴 한다.
l 예 SELECT VARIANCE(SAL) FROM EMP;
변환 함수
변환 함수는 어떤 데이타 타입에서 다른 데이타 타입으로 값을 변환하는 것이다. 일반적으로 함수의 명칭은 datatype TO datatype 이라는 명명 규칙을 따르고 있다. 처음의 datatype은 입력 데이타 타입이고 뒤의 datatype은 출력 데이타 타입이다. 함수명이 출력 데이타 타입만을 나타내고 있는 경우에는 ORACLE에서 사용 가능한 임의의 데이타 타입을 입력할 수 있다.

CHARTOROWID
l 구문 CHARTOROWID(char)
l 목적 CHAR 데이타 타입의 값을 ROWID로 변환한다.
l 예 SELECT ENAME FROM EMP WHERE
ROWID=CHARTOROWID('0000F.003.2');

CONVERT
l 구문 CONVERT(char [,dest_char_set [, source_char_set]])
l 목적 코드 체계가 다른 형식으로 설정된 2 개의 동일한 문자 세트
사이의 변환을 행한다. 예를 들면 DEC 8 비트 다국어 문자를
HP 의 8 비트 다국어 문자로 변환한다. dest_chat_set 는 변환될
문자 세트의 명칭이다. 문자 세트의 명칭을 포함한
데이타베이스의 컬럼 또는 문자 리터럴을 지정한다.
디폴트 값은 'US7ASCII' 이다.
source_char_set 는 데이타베이스에 저장되어 있는 변환 이전의
문자 세트의 명칭이다. 디폴트 값은 INIT.ORA 파라메터
LANGUAGE의 인수인 의 값이다. 공통의 문자 세트에는 아래의 것이 포함된다.
USA7ACCII 디폴트 값. US 7 비트 ASCII 문자 세트 WE8DEC
DEC의 서유럽 8 비트 ASCII 문자 세트 WE8HP HP의 서유럽 8 비트 ASCII 문자 세트DEC DEC의 프랑스 7 비트 ASCII 문자 세트
WEIBMPC IBM PC 상에서 사용되는 서유럽 8비트 ASCII문자
세트
KSC5601 한국 표준 완성형 16 비트 문자 세트
l 예 SELECT CONVERT('NEW WORD', 'USA7ASCII',KSC5601') FORM DUAL;

q HEXTORAW
l 구문 HEXTORAW(char)
l 목적 16 진수 표시의 값을 2 진수의 값으로 변환합니다(RAW 열의 포괄에 적합합니다).
l 예 INSERT INTO GRAPICS (RAW_COLUMN) SELECT HEXTORAW('7D') FROM DUAL;

q RAWTOHEX
l 구문 RAWTOHEX(raw)
l 목적 raw 를 16 진수 표시의 문자 값으로 변환합니다.
l 예 SELECT RAWTOHEX(RAW_COLUMN) FROM GRAPHICS;

q ROWIDTOCHAR
l 구문 ROWIDTOCHAR(ROWID)
l 목적 ROWID 의 값을 CHAR 데이타 타입으로 변환 합니다. 이 변환의 결과 길이는 보통 18 문자가 됩니다.
l 예 SELECT ROWID FROM GRAPHICS WHERE ROWIDTOCHAR(ROWID) LIKE '%F38%';

q TO_CHAR 수치 변환
l 구문 TO_CHAR(n[,fms])
l 목적 NUMBER 데이타 타입의 값을 CHAR 데이타 타입의 값으로 변환합니 다. fmt 의 지정은 임의 이지만 수치 포맷이어야 합니다.
l 예 SELECT TO_CHAR(17145, '$099,999') "char" FROM DUAL;

q TO_CHAR 날짜 함수
l 구문 TO_CHAR(d[, fmt])
l 목적 DATE 데이타 타입의 값을 CHAR 의 값으로 변환합니다. 변환후의 포 맷은 fmt 로 지정합니다. fmt 는 날짜 포맷이어야 합니다. fmt 를 생략한 경우, d 는 필요한 길이의 문자값으로 변환됩니다. d 는 ORACLE의 디폴트 날짜 포맷의 값으로 변환됩니다. 결과의 포맷과 TO_CHAR 이 리턴하는 문자의 수는 fmt 에서 지정된 포맷에 의해서 결정됩니다.
l 예 SELECT TO_CHAR(HIREDATE,'Month DD, YYYY') FROM EMP
WHERE ENAME='SMITH';

q TO_DATE
l 구문 TO_DATE(char[, fmt])
l 목적 char 를 날짜의 값으로 변환합니다. 명시적으로 인수가 지정되지 않은 날짜의 구성 요소에 대해서는 현재의 월, 년 등이 사용된다
fmt 는 char 의 날짜 포맷을 지정한 문자의 값입니다. fmt 를 생략한
경우에는, char의 포맷은 디폴트의 "DD-MON-YY"가 채택된다. fmt 가
J(율리우스력)의 경우, char 는 실제로는 수치이어야 한다.
l 예 INSERT INTO BONUS(BONUS_DATE)
SELECT TO_DATE('January 15, 1989','Month dd, yyyy') FROM DUAL;

TO_NUMBER
l 구문 TO_NUMBER(char)
l 목적 수치를 포함한 문자 값, char 를 NUMBER 데이타 타입의 값으로
변환한다.
l 예 UPDATE EMP SET SAL = SAL+TO_NUMBER(SUBSTR('$100 RAISE',2,3))
WHERE ENAME='BLAKE';


날짜 함수
날짜 함수는 ORACLE의 날짜를 조작한다. 수치를 리턴하는 MONTH_BETWEEN 함수를 제외한 모든 날짜 함수는 DATE 데이타 타입의 값을 리턴한다.

ADD_MONTHS
l 구문 ADD_MONTHS(d, n)
l 목적 n 개월을 가산한 날짜 d 를 리턴합니다. n 은 정수이어야
한다. 음수라도 상관없다.
l 예 SELECT ADD_MONTHS(HIREDATE,12) FROM EMP WHERE
ENAME='SMITH';

LAST_DAY
l 구문 LAST_DAY(d)
l 목적 d 를 포함하는 월의 최종일의 날짜를 리턴합니다. 그 월이 몇일
인가 알 수 있으므로 매우 편리하다.
l 예 SELECT LAST_DAY(SYSDATE) "last" FROM DUAL;

MONTH_BETWEEN
l 구문 MONTH_BETWEEN(d, e)
l 목적 날짜 d 와 e 사이의 월수를 리턴한다. d 가 e 보다 뒤의 경우에 는 양의 결과를 리턴하고 앞의 경우에는 음의 결과를 리턴한다
. 결과의 소수부는 월이 채워지지 않은 끝일수를 31일로 나눈
값이다.
l 예 SELECT MONTH_BETWEEN('02-fab-86','01-jan-86') "Months"
FROM DUAL;

NEW_TIME
l 구문 NEW_TIME(d, a, b)
l 목적 표준 시간대 a 의 일시인 d 의 시점에서 표준 시간대를 b 로
변경한 일시를 리턴한다. a 및 b 는 문자식이고 다음은 그 의미를 나타낸다
AST.ADT 대서양 표준 시간 및 그 일광 시간
BST.BDT 베링 표준 시간 및 그 일광 시간
CST.CDT 중앙 표준 시간 및 그 일광 시간
EST.EDT 동부 표준 시간 및 그 일광 시간
GMT 그리니치 표준 시간
HST.HDT 알래스카, 하와이 표준 시간 및 그 일광 시간
MST.MDT 마운틴 표준 시간 및 그 일광 시간
l 예 SELECT TO_CHAR( NEW_TIME(TO_DATE('17:47','hh24:mi','PST,
'gmt'), 'hh24:mi') "GREENWICH TIME" FROM DUAL;

NEXT_DAY
l 구문 NEXT_DAY(d,char)
l 목적 d 보다 뒤의 날짜중 char 로 지정한 요일의 날짜를 리턴한다. char에는 요일을 바르게 지정해야 합니다.
l 예 SELECT NEXT_DAY('17-MAR-90','TUESDAY') FROM DUAL;

ROUND
l 구문 ROUND(d [, fmt])
l 목적 fmt 에 지정한 반올림 단위에 따라서 d 를 반올림해서 리턴.
한다.
l 예 SELECT ROUND(TO_DATE('24-OCT-88'), 'YEAR') FROM DUAL;

SYSDATE
l 구문 SYSDATE
l 목적 현재의 일시를 리턴한다. 인수는 필요하지 않다.
l 예 SELECT SYSDATE FROM DUAL;

TRUNC
l 구문 TRUNC(d [, fmt])
l 목적 fmt 에 지정한 절사 단위까지 d 시간의 부분을 절사해서
리턴한다 디폴트로는 일의 시간 부분을 제거한다.
l 예 SELECT TRUNC(TO_DATE('28-OCT-88', 'YEAR') "First of The Year" FROM DUAL;

ROUND와 TRUNC
ROUND와 TRUNC를 사용하는 경우의 포맷 모델에 대한 반올림과 절사의 단위를 다음에 나타낸다. 디폴트는 "dd" 이고 날짜의 시간 부분은 오전 0 시로 설정되어 있다

l 포맷모델
CC,SCC 세기
SYYY, YYYY, YEAR 년(7월 1일 이후를 절상한다)
SYEAR, YYY, YY, Y
Q 4반기 (2 번째의 월의 16 일 이후를 절상한다)
MONTH, MON, MM 월 (16일 이후를 절상한다)
WW YEAR의 최소의 주
W MONTH의 최소의 주
DDD, DD, J 일
DAY, DY, D 최근의 일요일
HH, HH12, HH24 시간
MI 분


기타 함수

DECODE
l 구문 DECODE(expr,serch1,result1,[serch2,result2,]...[default])
l 목적 expr 을 각각의 search 의 값과 비교해서 expr 이 search 값과 같
은 경우에 result 를 리턴한다 일치하지 않는 경우는 DECODE
함수는 default 를 리턴한다. 디폴트가 없는 경우에는 널 값을 리 턴한디 expr는 어느 데이타 타입이라도 상관없다. search
는 expr과 동일한 데이타 타입이어야 한다. 돌려받는 값은 최초
의 result 와 같은 데이타 타입이 된다.
IF.. THEN..ELSE 기능을 구사하는 ORACLE 에서만 제공하는 매우 유용한 함수입니다.
l 예 SELECT ENAME, DECODE(MGR, 7934, 'SMITH', 7251, 'JONES',
7839, 'KING','NONE') Mgr FROM EMP;

DUMP
l 구문 DUMP(expr[,display_format[,start_position[,length.]])
l 목적 식의 값을 내부 포맷으로 표시합니다. display_format 의 유효한
값은 8 (8진수), 10 (10진수),16 (16진수) 및 17 (문자) 이다.
start_position 과 length 를 조합해서 표시할 결과를 결정한다.
l 예 SELECT DUMP(ENAME) "ASCII" FROM EMP
WHERE ENAME='SCOTT';

GREATEST
l 구문 CREATEST(expt, [expr]...)
l 목적 열거한 값의 최대값을 리턴한다. 2 번째 이후의 expr 은 비교
하기 전에 첫번째 expr 의 데이타 타입으로 변환된다.
l 예 SELECT GREATEST('HARRY','HARRIOT','HAROLD') FROM DUAL;

LEAST
l 구문 LEAST(expt, [expr]...)
l 목적 열거한 값의 최소값을 리턴한다. 2 번째 이후의 expr 은 비교
하기 전에 첫번째 expr 의 데이타 타입으로 변환된다.
l 예 SELECT LEAST('HARRY','HARRIOT','HAROLD') FROM DUAL;

NVL
l 구문 NVL(expr1, expr2)
l 목적 expr1 이 널인 경우에 expr2 를 리턴합니다. expr1 이 널이 아닌
경우에는 expr1 을 리턴한다. expr1 과 expr2 는 어느 데이타 타
입이라도 상관없다. 돌려 받는 값의 데이타 타입은 expr1 과
동일한 데이타 타입이어야 한다.
l 예 SELECT ENAME,NVL(TO_CHAR(COMM),'NOT APPLICABLE')
FROM EMP WHERE DEPTNO=30;
UID
l 구문 UID
l 목적 각각 사용자명에 할당된 유일한 정수를 리턴한다(사용자 마다 1
개의 UID 값이 있다). 인수는 필요치 않는다.
l 예 SELECT USER, UID FROM DUAL;

USER
l 구문 USER
l 목적 현재 ORACLE 사용자의 사용자명을 리턴 한다. 인수는 필요치
않습니다.
l 예 SELECT USER, UID FROM DUAL;

USERENV
l 구문 USERENV({'ENTRYID'|'SESSIONID'|'TERMINAL'|'LANGUAGE'})
l 목적 사용자 및 세션에 대해서 CHAR 데이타 타입의 정보를
리턴한다.
이정보는 어플리케이션 오류의 감사 추적 정보 테이블을
기술하기 위해서 유용한다. ENTRYID 를 지정한 경우는 이용
가능한 감사 엔트리 식별자가 리턴된다. SESSIONID 를 지정한
경우는 사용자의 감사 세션 식별자가 리턴 된다. TERMINAL을
지정한 경우 사용자 단말의 오퍼레이팅 시스템 식별자가
리턴된다. LANGUAGE를 지정한 경우는 INIT.ORA의 LANGUAGE
파라메타로 지정해서 사용하고 있는 언어(ENGLISH 등)가 리턴
l 예 SELECT USERENV('LANGUAGE') "Language" FROM DUAL;

VSIZE
l 구문 VSIZE(expr)
l 목적 expr 의 ORACLE 의 내부 표현을 저장하기 위해서 사용되는
바이트수를 지턴한다.
l 예 SELECT ENAME, VSIZE(ENAME) "BYTES" FROM EMP WHERE
DEPNO=0`;




Database Instance 기동 및 종료

/. Server Manager의 기동
Oracle 사용자로 Login해서 다음의 환경변수가 정상적으로 설정이 되었는가를 확인 후 Database Instance 기동을 위한 Server Manager를 수행한다.

-. 기본적으로 설정되어 있어야 하는 환경변수들
ORACLE_HOME
ORACLE_SID
NLS_LANG
ORACLE_TERM
PATH=${ORACLE_HOME}/bin 이 포함되어야 함.
ORATEMPATH=${ORACLE_HOME}/forms30/admin/resource
MENU5PATH=${ORACLE_HOME}/forms30/admin/resource

-. Server Manager를 기동하는 방법
$ svrmgrl (svrmgrm) ¬
또는
$ sqldba [ lmode=y ] ¬

./. Instance의 기동
-. Server Manager를 위의 방법으로 기동킨 후 아래의 순서대로 실행한다.
SVRMGR> connect internal ¬ /* connect to the database */
SVRMGR> startup ¬ /* normal start up */
SVRMGR> exit ¬ /* Server Manger 종료 */

Option]
OPEN [db_name] : Database File의 Open 작업까지 수행
MOUNT : Control File의 Open 작업까지 수행
NOMOUNT : Instance만 기동시킨다.
EXCLUSIVE : 현재의 Instance만이 Database에 접근 가능.
PARALLEL : 여러 Instance에서 Database에 접근 가능.
PFILE=parmfile : 지정된 configuration file을 사용하여 Instance 기동.
FORCE : Instance를 강제로 정지시키고 다시 기동한다.
RESTRICT : RESTRICTED SESSION Privilege(DBA 권한)를 갖는 사용자만이 Database에 접근 가능.
RECOVER : Database가 Start될 때 media recovery 수행.

/. Instance의 정지
-. Server Manager를 위의 방법으로 기동킨 후 아래의 순서대로 실행한다.
SVRMGR> connect internal ¬
SVRMGR> shutdown ¬
SVRMGR> exit ¬

option]
ABORT : Transaction을 Rollback하지 않고 강제로 Instance를 종료시킨다.
IMMEDIATE : Transaction을 Rollback한 후 Instance를 종료시킨다.
NORMAL : default
.Database의 생성 및 관리

/. Database의 생성
**. 별첨된 스크립트 참조.

/. Database의 관리
-. Oracle7 Instance 관련 사항을 변경한다.
. 현재 Open된 Instance의 Checkpoint를 수행한다.
SVRMGR> ALTER SYSTEM CHECKPOINT LOCAL;

. 모든 Instance의 Data File을 검사한다.
SVRMGR> ALTER SYSTEM CHECK DATAFILES GLOBAL;

. MTS의 Server갯수와 Dispatcher의 갯수를 조정한다.
SVRMGR> ALTER SYSTEM SET MTS_SERVERS = 3;
SVRMGR> ALTER SYSTEM SET MTS_DISPATCHERS = ‘TCP, 6’;

. 접속할 사용자의 수와 Session의 수를 제한한다.
SVRMGR> ALTER SYSTEM SET LICENSE_MAX_USERS = 5;
SVRMGR> ALTER SYSTEM SET LICENSE_MAX_SESSIONS = 20;

. Log Switch를 발생시킨다.
SVRMGR> ALTER SYSTEM SWITCH LOGFILE;

. 10번 Session에 Serial Number 5번을 죽인다.
SVRMGR> ALTER SYSTEM KILL SESSION ’10, 5’;
*. V$SESSION Table 참조.

-. 현재의 Session 관련 사항을 변경한다.
. Language를 French를 변경한다.
SVRMGR> ALTER SESSION SET NLS_LANGUAGE = French;

. Date format을 ‘YYYY MM DD HH24:MI:SS’형태로 바꾼다.
SVRMGR> ALTER SESSION SET NLS_DATE_FORMAT
= ‘YYYY MM DD HH24:MI:SS’;
. Procedure나 Function내에서 COMMIT/ROLLBACK을 할 수 없도록 한다.
SVRMGR> ALTER SESSION DISABLE COMMIT IN PROCEDURE;

-. 자주 사용하는 Data Dictionary 정보 (‘Oracle7 Server Reference Manual’ 참조)
. 구성
Static Data Dictionary Views
ALL_xxx
DBA_xxx
USER_xxx
Synonyms
Dynamic Performance Tables
V$_xxx

. User 보유 현황
SVRMGR> select username, default_tablespace, temporary_tablespace
from dba_users;

. User별 Object 보유 현황
SVRMGR> select object_name, object_type
from dba_objects
where owner = ‘SCOTT’;

. Database의 Datafile 보유 현황
SVRMGR> select file_name, tablespace_name, bytes
2> from dba_data_files;

. Tablespace별 여유공간의 량
SVRMGR> select tablespace_name, dum(bytes), max(bytes)
from dba_free_space
group by tablespace_name;

. 현재 Instance의 Session정보를 얻는다.
SVRMGR> select sid, serial#, username
from v$session;

. 현재 Instance의 Control File 정보를 얻는다.
SVRMGR> select value
from v$parameter
where name = ‘control_files’;





.Tablespace의 생성 및 관리

/. Tablespace의 생성
-. ‘tbl_space1’ 이라는 명칭의 Tablespace를 생성한다.
SVRMGR> CREATE TABLESPACE tbl_space1
2> ‘/oracle/dbs/tablespace_file1.dbf’ SIZE 20M;
-. 크기를 자동적으로 증가시키도록 생성한다.
SVRMGR> CREATE TABLESPACE tbl_space1
‘/oracle/dbs/tablespace_file1.dbf’ SIZE 20M
AUTOEXTEND ON
NEXT 10M
MAXSIZE 200M;

/. Tablespace의 변경
-. Tablespace의 추가
SVRMGR> ALTER TABLESPACE tbl_space1
2> ADD DATAFILE ‘/oracle/dbs/tablespace_file2.dbf’ SIZE 30M
-. Tablespace File명의 변경
SVRMGR> ALTER TABLESPACE tbl_space1
RENAME DATAFILE ‘/oracle/dbs/tablespace_file2.dbf’
TO ‘/oracle/dbs/tbs_file2’;
*. O/S 상에서 data file의 복사는 database를 offline한 후 수행한다.
-. Data File의 크기 변경(7.2)
SVRMGR> ALTER DATABASE DATAFILE
2> ‘/oracle/dbs/tablespace_file2.dbf’ RESIZE 50M

/. Tablespace의 삭제
SVRMGR> ALTER DATABASE DATAFILE
2> ‘/oracle/dbs/tablespace_file2.dbf' OFFLINE DROP;


.User 및 Object의 관리

/. Oracle 사용자 관리
-. 새로운 사용자를 생성.
SVRMGR> CREATE USER scott1 IDENTIFIED BY tiger1
DEFAULT TABLESPACE users1
TEMPORARY TABLESPACE temp1
QUOTA 100M ON user1; ¬

-. 사용자의 삭제
SVRMGR> DROP USER scott1;

-. 사용자의 정보 변경
SVRMGR> ALTER USER scott1
2> IDENTIFIED BY chg_passwd;

-. 사용자에게 권한 부여
SVRMGR> GRANT connect, resource TO scott1;
SVRMGR> GRANT resource ON user1 TO scott1; /* 특정 Tablespace 지정 */

*. Privilege
. SYSTEM privilege
. OBJECT privilege
*. Connect : system에서 default로 제공하는 Role
Alter session, Create Cluster, Create database link, Create table ...
등의 권한을 갖게 된다.
*. Resource : system에서 default로 제공하는 Role
Create Procedure, Create trigger 등과 갖은 resource를 사용하는 것을
가능하게 한다.

-. 사용자에게 주어진 권한의 제거
SVRMGR> REVOKE resource FROM scott1;

/. Object 관리
-. Object(Table, View 등)에 대한 접근 권한을 부여한다.
SVRMGR> GRANT SELECT ON dept TO PUBLIC;
SVRMGR> GRANT SELECT ON dept TO scott1;
SVRMGR> GRANT SELECT, UPDATE ON dept TO scotti1;

-. Object(Table, View 등)에 대한 접근 권한을 제거한다.
SVRMGR> REVOKE ALL ON dept FROM scott1;
SVRMGR> REVOKE SELECT ON dept FROM scott1;
SVRMGR> REVOKE SELECT, UPDATE ON dept FROM scotti1;
.Database Backup & Recovery

/. O/S 명령어에 의한 Backup
-. Oracle 관련 파일을 차례로 Backup한다.(Cold Backup)
-. Oracle관련 파일들
data file
redo log file
control file
parameter file

-. Backup시에 반드시 Database를 정지시킨 후 수행한다.
-. 절차
SVRMGR> connect internal
SVRMGR> shutdown normal
SVRMGR> exit

$ tar cvf /dev/rmt/0m /oracle/dbs/tbs_1.dbf /oracle/dbs/tbs2_dbf
/oracle/dbs/initORA7.ora /oracle/dbs/*.log

/. Oracle Utility에 의한 Backup
-. ‘exp’ utility를 사용하여 모든 정보를 O/S file로 Backup한다.
-. 절차
SVRMGR> connect internal
SVRMGR> startup
SVRMGR> exit

$ exp system/manager file=exp951010.dat full=y grants=y

/. Archive Log의 의한 Backup (Hot Backup)
-. Archiving에 의한 Online Backup을 하려면 Database가 Archive Mode로 운용되고 있어야 한다. Archive Mode로 운영을 하려면 parameter file에 다음의 항목을 추가한 후 Database를 재기동한다.
Log_archive_start = true
log_archive_dest = /oracle/rdbms/log/arc
log_archive_format = %t_%s.arc
-. 절차
SVRMGR> shutdown
SVRMGR> startup mount
SVRMGR> alter database archivelog;
SVRMGR> alter database open;

-. Archive Log Mode로 운영중인지를 확인하는 방법
SVRMGR> select log_mode
2> from v$database;


/. O/S 명령어에 의한 복구
-. Oracle 관련 파일을 차례로 Restore한다.
-. 절차
$ tar xvf /dev/rmt/0m

/. Oracle Utility에 의한 복구
-. ‘imp’ utility를 사용하여 모든 정보를 O/S file을 Restore한다.
-. 절차
$ imp system/manager file=exp951010.dat

/. Archive Log의 의한 복구
-. 절차
Database의 손상이 어느 정도인가에 따라서 적절한 작업을 해주어야 하므로 Oracle Engineer와 함께 작업을 하도록 한다.

SVRMGR> recover
를 수행하여 적절한 응답을 하면서 복구한다.

'..

코멘트  

이름 :      비밀번호 :
         자동등록방지
내용 :  
파일 :




금연

  글번호
이름
1 2 3
날짜
  216Data-Base mysql 테이블에 몇가지 필드값 처리 조회수가 1000회 이상이네요. ^0^2015-01-14
  206Data-Base mysql 4.x 5.x 설치후 설정 조회수가 1000회 이상이네요. ^0^2014-12-30
  69Data-Base mysqld_error code 조회수가 1000회 이상이네요. ^0^2017-03-22 10:45
Danielexent
  Data-Base .RDBMS 개요 -2 조회수가 1000회 이상이네요. ^0^2002-01-12
  64Data-Base .RDBMS 개요 -1 조회수가 1000회 이상이네요. ^0^2002-01-12
  62Data-Base CHAPTER 24 조회수가 1000회 이상이네요. ^0^2002-01-12
  61Data-Base CHAPTER 23 조회수가 1000회 이상이네요. ^0^2002-01-12
  60Data-Base CHAPTER 22 조회수가 1000회 이상이네요. ^0^2002-01-12
  59Data-Base CHAPTER 21 조회수가 1000회 이상이네요. ^0^2002-01-12
  58Data-Base CHAPTER 20 조회수가 1000회 이상이네요. ^0^2002-01-12
  57Data-Base CHAPTER 19 조회수가 1000회 이상이네요. ^0^2002-01-12
  56Data-Base CHAPTER 18 조회수가 1000회 이상이네요. ^0^2002-01-12
  55Data-Base CHAPTER 17 조회수가 1000회 이상이네요. ^0^2002-01-12
  54Data-Base CHAPTER 16 조회수가 1000회 이상이네요. ^0^2002-01-12
  53Data-Base CHAPTER 15 조회수가 1000회 이상이네요. ^0^2002-01-12
 
1 2 3
글쓰기    목록   다음   로그인
Since 1998-2020 Chris. BSD LICENSE