일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도서관관리프로그램
- 백준 저울
- 자바 알고리즘
- java 백준
- 백준 문제
- 백준 자바
- 오라클
- 자바 예제
- 도서관 관리
- JAVA공부
- 자바 자료구조
- 코딩
- 백준 2437
- java실습
- 오라클 기본 쿼리
- ORACLE JOIN
- 제약조건 설정
- JAVA 예제
- java프로젝트
- 자바
- 오라클 그룹 함수
- 오라클 쿼리 함수
- 자료구조
- 오라클 쿼리문
- 오라클 제약조건
- 오라클 인라인뷰
- oracle constraints
- java 도서관관리프로그램
- java
- 제약조건 확인
- Today
- Total
DEVELOPER NOMAD
[오라클 기본 쿼리 및 함수] (ORACLE QUERY) 기본 쿼리, 기본쿼리 함수 본문
[오라클 기본 쿼리 및 함수] (ORACLE QUERY) 기본 쿼리, 기본쿼리 함수
DEVELOPER NOMAD 2019. 1. 8. 15:28오라클 기본 쿼리 실습 예제들과 기본쿼리 예제, 함수 모음 입니다.
//*****************************************
-- 오라클 데이터베이스 및 SID 확인(SYS 계정)
-- SID 란?
-- System Identifier 의 약자로 데이터베이스를 식별함에 있어 고유한 아이디
-- 데이타베이스가 하나만으로 구성 되어 있다면 데이타베이스명이 SID가 된다. 하지만 RAC 로 구성하여 데이타베이스 두개가 동시 가동되는 경우라면 SID 가 서로 다를 수 있기 때문에 중복 확인해야 한다.
-- DB연동을 위하여 필요한 naming 이다.
DBMS 서버를 기동하기 위해서는 DB서버가 기동하는 서버의 IP 그리고 DB서버가 접속을 받아들이기 위한 프로토콜에 대한 정의가 필요하다. 오라클의 경우 인스턴스가 서버 역할을 하는 DBMS 프로세스인데, 인스턴스가 기동할때 SID를 필요로 한다. 즉 SID는 인스턴스의 이름이다.
그리고 SID정보는 환경변수와, LISTENER.ORA라는 파일에서 정의 된다. listener.ora 파일을 열어보면
(SID_NAME = xe)
라고 기술된 부분이 있는데 이것이 SID이다.
-- 오라클 데이타베이스명을 확인(XE)
SQL>SELECT NAME, DB_UNIQUE_NAME FROM v$database;
-- 오라클 SID를 확인(xe)
SQL>SELECT instance FROM v$thread;
//*****************************************
-- SQLPLUS 실행(일반사용자)
CMD>sqlplus 사용자명/"암호"
-- 테이블 목록 확인
SQL>SELECT * FROM TAB;
-- 테이블 구조 확인
SQL>DESC[RIBE] 테이블명;
SQL>SELECT * FROM COL WHERE tname='테이블명';
-- 테이블명은 반드시 대문자로
//*****************************************
-- iSQL*Plus 실행(일반 사용자)
http://컴퓨터명:5560/isqlplus/
-- em 실행(관리자 영역)
http://컴퓨터명:1158/em
-- tnsnames.ora 에 정의된 connect_identifier 으로 접속
cmd>sqlplus 사용자명/"암호"@orcl
-- orcl : tnsnames.ora 에 정의된 connect_identifier
//*****************************************
-- sql 에서 cmd 창으로 잠시 빠져 나가야 하는 경우
sql>HOST
cmd>EXIT -- SQL 로 복귀
//*****************************************
-- sqlplus 에서 *.sql 파일 실행
-- 파일이 존재하는 경로에서 sqlplus를 실행하고,
-- "@파일명" 명령을 실행하면 된다.
sql>@ex.sql
-- 경로를 지정하여 실행
sql>@d:\sql\ex.sql
-- sqlplus 에서 sql 작업 내용 자동 저장하기
sql>spool d:\sql\test.txt
sql>SELECT * FROM insa; -- d:\sql\test.txt 파일 생성
sql>spool off -- 스풀 정지
//*****************************************
-- 오라클 쿼리 실행 시간 출력
실행시간 시작 : SET TIMING ON
실행시간 종료 : SET TIMING OFF
sql>SET TIMING ON
sql>SELECT * FROM tab;
//*****************************************
오라클 명령은 대소문자를 구분하지 않는다. 하지만 리터널(상수)는 대소문자를 구분한다.
//*****************************************
-- 산술연산자
+ : 덧셈 - : 뺄셈 * : 곱셈 / : 나눗셈 ( ) : 괄호
-- 비교연산자
= : 같다. > : 크다. >= : 크거나 같다.
< : 적다. <= : 작거나 같다. <> : 같지 않다. != : 같지 않다.
-- 논리 연산자
AND : 논리 곱 OR : 논리 합 NOT : 부정
-- SQL 연산자
IN(값, 값, ...) : 피연산자가 식 목록 중 하나와 동일한 경우 TRUE
BETWEEN ~ AND: 피연산자가 범위 안에 있는 경우 TRUE
LIKE : 피연산자가 패턴과 일치하는 경우 TRUE
-- 문자열 연결 연산자
|| : 문자열 연결
' 를 출력할 경우에는 '을 두번 쓴다.
SELECT 'test''s' FROM insa;
SELECT name || '''' FROM insa;
//*****************************************
-- 자료 검색
-- 형식 : SELECT 필드명, 필드명 ..... FROM 테이블
- 실행 순서
FROM 절 -> WHERE 절 -> ROWNUM 할당 -> GROUP BY 절 -> HAVING -> SELECT 절 -> ORDER BY 절
-- 필드명 변경(AS는 생략가능. 별명에서 띄어쓰기등을 하는 경우에는 "" 안에 기술)
형식 : SELECT 필드명 AS 별명, 필드명 AS 별명 FROM 테이블
//*****************************************
-- 조건 검색
형식 : SELECT 필드명, 필드명 ..., 필드명 FROM 테이블 WHERE 조건
//*****************************************
-- 테이블 구조 확인
DESC 테이블명;
SELECT * FROM col WHERE tname='테이블명';
------------------------------------------
-- 테이블 목록 확인
SELECT * FROM tab;
-- 테이블 구조 확인
DESC insa;
SELECT * FROM col WHERE tname='INSA';
-- 전체출력
SELECT * FROM insa;
-- name, tel, buseo 컬럼
SELECT name, tel, buseo
FROM insa;
-- 컬럼명 변경
SELECT name AS 이름, tel AS 전화, buseo AS 부서명
FROM insa;
-- AS 생략가능
SELECT name 이름, tel 전화, buseo 부서명
FROM insa;
SELECT name 이름, tel 전화, buseo "부서 명"
FROM insa;
-- 연산
SELECT name, basicpay FROM insa;
SELECT name||'님', basicpay/10000 FROM insa;
SELECT name||'님' AS name, basicpay/10000 pay FROM insa;
-- 조건검색
-- city가 서울인 사람의 name, city, basicpay 출력
SELECT name, city, basicpay
FROM insa
WHERE city='서울';
-- basicpay+sudang 가 250만원 이상인 name, basicpay, sudang, basicpay+sudang 출력
SELECT name, basicpay, sudang, basicpay+sudang pay
FROM insa
WHERE basicpay+sudang>=2500000;
SELECT name, basicpay, sudang, basicpay+sudang pay
FROM insa
WHERE pay>=2500000; -- (X)
-- basicpay+sudang 가 200만원 이상이면서 city가 서울인 name, basicpay, sudang, basicpay+sudang, city 출력
SELECT name, basicpay, sudang, basicpay+sudang pay, city
FROM insa
WHERE basicpay+sudang>=2000000 AND city='서울';
//*****************************************
-- DUAL
- DUAL 테이블은 데이터 딕셔너리와 함께 Oracle에 의해 자동으로 생성되는 테이블로 사용자 SYS의 스키마에 존재하며, 모든 사용자가 사용 가능하다.
SELECT * FROM dual;
//*****************************************
-- 단일행(single row, 스칼라) 함수
---------------------------------------------
-- 문자함수
---------------------------------------------
-- SUBSTR (char, m [,n]) : 문자열 추출. 인덱스는 1부터 시작한다.
SELECT SUBSTR('seoul korea', 7, 3) FROM insa;
SELECT SUBSTR('seoul korea', 7, 3) FROM dual; -- kor
SELECT SUBSTR('seoul korea', -5, 3) FROM dual; -- kor
SELECT SUBSTR('seoul korea', 7) FROM dual; -- korea
-- insa 테이블중 name, city, ssn 을 출력하되 city가 서울이면서 주민번호(ssn이용)이용하여 남자인 사람만 출력
SELECT name, city, ssn
FROM insa
WHERE city='서울' AND (SUBSTR(ssn, 8, 1) = '1' OR SUBSTR(ssn, 8, 1) = '3');
SELECT name, city, ssn
FROM insa
WHERE city='서울' AND (SUBSTR(ssn, 8, 1) = '1' OR '3'); -- (X)
SELECT name, city, ssn
FROM insa
WHERE city='서울' AND SUBSTR(ssn, 8, 1) IN ('1', '3', '5', '7');
SELECT name, city, basicpay
FROM insa
WHERE city='서울' OR city='부산' OR city='경기';
SELECT name, city, basicpay
FROM insa
WHERE city IN ('서울', '부산', '경기');
-- name, city, ssn 컬럼출력. 단, 70년대 사람만(ssn 이용)
SELECT name, city, ssn
FROM insa
WHERE SUBSTR(ssn, 1, 2)>=70 AND SUBSTR(ssn, 1, 2)<=79;
SELECT name, city, ssn
FROM insa
WHERE SUBSTR(ssn, 1, 1)=7;
-- name, city, ssn 컬럼출력. 단, 김씨중 서울사람만 출력
SELECT name, city, ssn
FROM insa
WHERE city='서울' AND SUBSTR(name, 1, 1)='김';
---------------------------------------------
-- LENGTH (column | expression) : 문자열 길이
LENGTHB (column | expression) : 문자열 바이트수
-- 11g에서는 한글은 UTF-8로 처리(한글 1자는 3byte)
SELECT LENGTH('대한민국') FROM dual; -- 4
SELECT LENGTHB('대한민국') FROM dual; -- 12
---------------------------------------------
-- INSTR (column | expression, 'string' [,m] [,n])
문자의 위치를 반환한다. m값은 시작위치고, n값은 발생 횟수이며 m과 n의 기본 값은 1이다.
문자가 없으면 0을 반환한다.
SELECT INSTR('seoul korea', 'e') FROM dual; -- 2
SELECT INSTR('seoul korea', 'e', 7) FROM dual; -- 10
SELECT INSTR('seoul korea', 'e', 1, 2) FROM dual; -- 10
SELECT INSTR('seoul korea', 'abc') FROM dual; -- 0
-- name, city 출력 : 성씨가 김인사람만 출력. INSTR 이용
SELECT name, city
FROM insa
WHERE INSTR(name, '김') = 1;
-- name, city 출력 : 이름(성씨포함)에 이 가 포함된 사람만 출력. INSTR 이용
SELECT name, city
FROM insa
WHERE INSTR(name, '이') >= 1;
-- 자바에서 분리하는게 효율적
SELECT name, tel FROM insa;
SELECT name, tel, SUBSTR(tel, 1, INSTR(tel, '-')-1) 서비스번호,
SUBSTR(tel, INSTR(tel, '-')+1,
INSTR(tel, '-', 1, 2)-INSTR(tel, '-')-1) 국번,
SUBSTR(tel, INSTR(tel, '-', 1, 2)+1) 번호
FROM insa;
---------------------------------------------
-- LPAD (column | expression, n, ['string']), RPAD (column | expression, n, ['string'])
expression의 문자열을 제외한 공간에 문자열을 왼쪽(오른쪽)에 채운다.
SELECT LPAD('korea', 10, '*') FROM dual; -- *****korea
SELECT LPAD('korea', 3, '*') FROM dual; -- kor
SELECT LPAD('*', 0, '*') FROM dual; -- NULL
SELECT LPAD('대한', 6, '*') FROM dual; -- **대한
---------------------------------------------
-- REPLACE (text, search_string [, replacement_string])
문자열 치환
SELECT REPLACE('seoul korea', 'seoul', 'busan') FROM dual;
SELECT REPLACE('12365845852588', '5') FROM dual; -- 5제거
SELECT name, buseo FROM insa;
SELECT name, REPLACE(buseo, '부') FROM insa;
SELECT name, REPLACE(buseo, '부', '팀') FROM insa; -- 문제가 있을 수 있음
SELECT name, SUBSTR(buseo, 1, LENGTH(buseo)-1) || '팀' FROM insa;
---------------------------------------------
-- TRANSLATE ('char','from_string','to_string')
char 내에 포함된 문자중 from_string에 지정한 모든 각각의 문자를 to_string 문자로 각각 변경한다.
SELECT TRANSLATE('ababccc', 'c', 'd') FROM dual; -- ababddd
SELECT TRANSLATE('2dk5erw6', '0123456789abcdefghijklmnopqrstuvwxyz',
'9999999999**************************') FROM dual; -- 9**9***9
SELECT TRANSLATE('2dk5erw6', '0123456789abcdefghijklmnopqrstuvwxyz',
'0123456789') FROM dual; -- 256
---------------------------------------------
-- RTRIM(char [,set]), LTRIM(char [,set])
TRIM (leading | trailing | both trim_character FROM trim_source)
공백을 제거하거나 오른쪽(왼쪽)의 문자열 제거
SELECT ':' || ' 우 리 ' || ':' FROM dual;
SELECT ':' || TRIM(' 우 리 ') || ':' FROM dual;
SELECT ':' || LTRIM(' 우 리 ') || ':' FROM dual;
SELECT ':' || RTRIM(' 우 리 ') || ':' FROM dual;
SELECT RTRIM('우리나라대한', '대한') FROM dual;
SELECT name, RTRIM(buseo, '부') || '팀' FROM insa;
---------------------------------------------
-- UPPER(char) : 영문자 문자열을 모두 대문자로 변환
-- LOWER(char) : 영문자 문자열을 모두 소문자로 변환
-- ASCII(char) : 주어진 char의 첫 글자의 아스키 값을 반환
-- CHR(n) : 입력된 수의 바이너리 코드에 해당하는 문자를 반환
-- INITCAP(char) : 입력 문자열 중에서 각 단어의 첫 문자를 대문자로 나머지 문자는 소문자로 변환
SELECT CHR(75)||CHR(79)||CHR(82)||CHR(69)||CHR(65) FROM DUAL; -- korea
//*****************************************
-- 숫자함수
---------------------------------------------
-- MOD(m, n) : m을 n으로 나눈 나머지
SELECT MOD(13, 2) FROM dual; -- 1
SELECT name, ssn FROM insa WHERE MOD(SUBSTR(ssn, 8, 1), 2) = 0; -- 여자
---------------------------------------------
-- ROUND(n [,m]) : 반올림
SELECT ROUND(15.193, 1) FROM dual; -- 15.2
SELECT ROUND(15.193, 2) FROM dual; -- 15.19
SELECT ROUND(15.193, 0) FROM dual; -- 15
SELECT ROUND(15.193) FROM dual; -- 15
SELECT ROUND(15.193, -1) FROM dual; -- 20
---------------------------------------------
-- TRUNC(n [,m]) : 절삭
SELECT TRUNC(15.193, 1) FROM dual; -- 15.1
SELECT TRUNC(15.193, -1) FROM dual; -- 10
-- name, basicpay, basicpay의 5만원권개수, basicpay 1만원권개수, 나머지 금액
-- name basicpay 5만원권개수 1만원권개수 나머지 금액
SELECT name, basicpay, TRUNC(basicpay/50000) "5만원권개수"
,TRUNC(MOD(basicpay, 50000) / 10000) "1만원권개수"
,MOD(basicpay, 10000) "나머지 금액"
FROM insa;
-- name, basicpay, 그래프(basicpay 10만원당 *하나)
SELECT LPAD('korea', 10, '*') FROM dual; -- *****korea
SELECT name, basicpay, LPAD('*', TRUNC(basicpay/100000), '*') 그래프
FROM insa;
//*****************************************
-- 암시적 형 변환
값을 할당할 때 오라클 서버는 다음과 같이 자동으로 값을 변환할 수 있다.
VARCHAR2, CHAR → NUMBER
VARCHAR2, CHAR → DATE
NUMBER → VARCHAR2
DATE → VARCHAR2
//*****************************************
-- 변환함수
---------------------------------------------
-- TO_CHAR(label [, fmt]) : MLSLABEL datatype을 VARCHAR2 타입으로 변환
TO_CHAR(n [, fmt [, 'nlsparams'] ]) : 숫자를 문자로 변환(VARCHAR2 타입)
TO_CHAR(d [, fmt [, 'nlsparams'] ]) : 날짜를 문자로 변환(VARCHAR2 타입)
---------------------------------------------
YYYY : 4자리 연도로 표시
YY : 끝의 2자리 연도로 표시(무조건 시스템 상의 년도)
RR :
- 현재년도가 0~49사이에 있고 표현할 연도가 0~49이면 현재 세기를 적용
- 현재년도가 0~49사이에 있고 표현할 연도가 50~99이면 (현재세기-1)를 적용
- 현재년도가 50~99사이에 있고 표현할 연도가 0~49이면 (현재세기+1)를 적용
- 현재년도가 50~99사이에 있고 표현할 연도가 50~99이면 현재 세기를 적용
- 현재 : 2015년, 연도 : 70 -> 1970년
- 현재 : 2015년, 연도 : 08 -> 2008년
YEAR : 연도를 알파벳으로 표시
MM : 달을 숫자로 표시
MON : 달을 알파벳 약어 로표시
MONTH : 달을 알파벳으로 표시
DD : 일자를 숫자로 표시
DAY : 일에 해당하는 요일
DY : 일에 해당하는 요일의 약어
D : 일에 해당하는 요일을 숫자로 표시(1~7)
HH : 12시간으로 표시(1-12)
HH24 : 24시간으로 표시(0-23)
MI : 분을 표시
SS : 초를 표시
AM(또는 PM) : 오전인지 오후인지를 표시
SELECT SYSDATE FROM dual;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM dual;
SELECT TO_CHAR(SYSDATE, 'YYYY"년" MM"월" DD"일"') FROM dual;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD DAY HH24:MI:SS') FROM dual;
SELECT name, ibsadate FROM insa;
SELECT name, ibsadate FROM insa WHERE TO_CHAR(ibsadate, 'YYYY') = 2000;
---------------------------------------------
9 : 숫자의 출력 자릿수를 지정. 값이 지정한 자릿수보다 작으면 공백으로 채워 표시. '999'는 숫자를 3자리로 출력
만약 자릿수가 부족하면 #으로 출력
0 : 자릿수가 비면 0을 채움. 123을 '0999'로 출력하면 0123출력
$ : 숫자앞에 달러를 붙인다.
L : 국가별 화페를 출력.
. : 소수점(한 위치에 마침표 표기)
TO_CHAR(1234,'99999.99') -> 1234.00
, : 천단위로 ,을 출력(명시한 위치에 컴마 표기).
TO_CHAR(1234,'99,999') -> 1,234
PR : 음수를 괄호(<>)로 묶음
MI : 음수인 경우 뒤에 '-' 기호를 표시하며 양수인 경우 뒤에 공백
V : 10을 V 뒤의 수만큼 곱함
EEEE : 지수 표기법으로 표시
SELECT name, basicpay FROM insa;
SELECT name, TO_CHAR(basicpay, '9,999,999') FROM insa;
SELECT name, TO_CHAR(basicpay, 'L9,999,999') FROM insa;
SELECT name, TO_CHAR(basicpay, '999,999') FROM insa; -- 부족하면 #######
SELECT TO_CHAR(12345, '0,999,999') FROM dual; -- 0,012,345
SELECT TO_CHAR(12345, '999') FROM dual; -- ###
SELECT TO_CHAR(123.45, '990.0') FROM dual; -- 123.5
SELECT TO_CHAR(123.45, '999.9') FROM dual; -- 123.5
SELECT TO_CHAR(123, '999.9') FROM dual; -- 123.0
SELECT TO_CHAR(1234, '9999MI') FROM dual; -- 1234
SELECT TO_CHAR(-1234, '9999MI') FROM dual; -- 1234-
SELECT TO_CHAR(-1234, '9999PR') FROM dual; -- <1234>
SELECT TO_CHAR(1234.345, '9.999EEEE') FROM dual; -- 1.234E+03
SELECT TO_CHAR(1234, '99999V9999') FROM dual; -- 123450000
---------------------------------------------
-- 통화기호, 날짜 등 출력 형식 변경
SELECT parameter, value FROM NLS_SESSION_PARAMETERS; -- 확인
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN';
ALTER SESSION SET NLS_CURRENCY = '\';
ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
-- 날짜형식 변경(기본:RR/MM/DD)
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
---------------------------------------------
-- TO_NUMBER(char [,fmt [, 'nlsparams'] ]) : 문자를 숫자로 변환
SELECT '12'+20 FROM dual; -- 32
SELECT '1,200'+20 FROM dual; -- 에러
SELECT TO_NUMBER('1,200', '9,999')+20 FROM dual;
---------------------------------------------
-- TO_DATE(char [, fmt [, 'nlsparams'] ]) : 문자를 날짜로 변환
SELECT TO_CHAR(SYSDATE, 'DD-MON-RR') FROM dual; -- 02-1월-19
SELECT TO_DATE('01-JUL-08', 'DD-MON-RR') FROM dual; -- 날짜 형식이 미국식인 경우 가능
SELECT TO_DATE('01-10-90', 'MM-DD-RR') FROM dual; -- 90/01/10
SELECT name, ssn FROM insa;
SELECT name, SUBSTR(ssn, 1, 6) birth FROM insa;
SELECT name, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD') birth FROM insa;
SELECT name, TO_DATE(SUBSTR(ssn, 1, 6)) birth FROM insa; -- 가능
SELECT name, TO_CHAR(TO_DATE(SUBSTR(ssn, 1, 6)), 'YYYY-MM-DD') birth FROM insa;
SELECT TO_CHAR(SYSDATE, 'MON DD DAY') FROM dual;
SELECT TO_CHAR(SYSDATE, 'MON DD DAY', 'NLS_DATE_LANGUAGE=American') FROM dual;
SELECT TO_CHAR(SYSDATE, 'MON DD DAY', 'NLS_DATE_LANGUAGE=Korean') FROM dual;
---------------------------------------------
-- ASCIISTR(string) : string의 아스키 문자로 반환. non-ASCII 문자는 UTF-16 code로 반환.
SELECT ASCIISTR('kor') FROM dual; -- kor
SELECT ASCIISTR('대한') FROM dual; -- \B300\AD6D
//*****************************************
-- 날짜 및 날짜함수
---------------------------------------------
-- 날짜에 산술 연산을 사용하는 경우
날짜 + 숫자 → 날짜 : 날짜에 일수를 더하여 날짜 계산
날짜 - 숫자 → 날짜 : 날짜에 일수를 감하여 날짜 계산
날짜 + 숫자/24 → 날짜 : 날짜에 시간을 더하여 날짜 계산
날짜 - 날짜 → 일수 : 날짜에 날짜를 감하여 일수 계산
-- 살아온날수
SELECT TRUNC(SYSDATE - TO_DATE('20001010', 'YYYYMMDD')) 날수 FROM dual;
-- 재민씨가 2018-10-10일에 여자친구를 사귀기 시작했다. 100일후는 ??
SELECT TO_DATE('2018-10-10', 'YYYY-MM-DD') + 100 FROM dual;
-- 2019-05-16 까지 몇일 ?
SELECT TRUNC(TO_DATE('2019-05-16', 'YYYY-MM-DD') - SYSDATE) FROM dual;
-- 현재 시간 - 1시간
SELECT TO_CHAR(SYSDATE - 1/24, 'YYYYMMDD HH24:MI:SS') FROM dual;
---------------------------------------------
-- SYSDATE : 시스템에 저장된 현재 날짜를 반환
---------------------------------------------
-- CURRENT_DATE : 현재 session의 날짜 정보를 반환
---------------------------------------------
-- ADD_MONTHS(d, n) : 해당 날짜에 n만큼의 달수를 더한다.
기준이 되는 날짜가 '말일'일 경우는, 계산된 값도 해당 월의 말일을 반환한다.
SELECT ADD_MONTHS(TO_DATE('2019-03-31', 'YYYY-MM-DD'), 1) FROM dual;
-- 2019-04-30
SELECT CURRENT_DATE "today", ADD_MONTHS(SYSDATE, 1) "next month" FROM dual;
2014-03-30, 2014-03-31 ==> 6개월 후 ==> 2014-09-30, 2014-09-30
SELECT ADD_MONTHS(TO_DATE('2014-03-30', 'YYYY-MM-DD'), 6) FROM dual;
SELECT ADD_MONTHS(SYSDATE, -1) 지난달 FROM dual;
---------------------------------------------
-- LAST_DAY(d) : 정의된 날짜의 달에서 마지막일이 몇일인지 돌려준다.
SELECT LAST_DAY(SYSDATE) FROM dual;
---------------------------------------------
-- MONTHS_BETWEEN(d1, d2) : 정의된 두 날짜사이의 차이(d1 - d2)를 월로 돌려준다.
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('180708')) FROM dual;
-- SYSDATE : 19-01-03 ==> 5.xxx
-- name, ssn, birth, age
SELECT name, ssn, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD') birth,
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6)))/12) age
FROM insa;
-- name, ssn, birth, age, ibsadate, 근속년수
SELECT name, ssn, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD') birth,
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6)))/12) age,
ibsadate, TRUNC(MONTHS_BETWEEN(SYSDATE, ibsadate)/12) 근속년수
FROM insa;
---------------------------------------------
-- ROUND(d [,fmt]) : 정해진 날짜를 fmt를 기준으로 반올림
-- 년도 기준은 7월 1일부터 반올림
SELECT ROUND(TO_DATE('070710'), 'YEAR') FROM dual; -- 2008-01-01
SELECT ROUND(TO_DATE('070630'), 'YEAR') FROM dual; -- 2007-01-01
-- 월의 기준은 16일 기준
SELECT ROUND(TO_DATE('070720'), 'MONTH') FROM dual; -- 2007-08-01
SELECT ROUND(TO_DATE('070715'), 'MONTH') FROM dual; -- 2007-07-01
---------------------------------------------
-- TRUNC(d,[fmt]) : 정해진 날짜를 fmt를 기준으로 반 내림
SELECT TRUNC(TO_DATE('070710'), 'YEAR') FROM dual; -- 2007-01-01
SELECT name, ibsadate, TRUNC(ibsadate, 'MONTH') FROM insa;
---------------------------------------------
-- NEXT_DAY(d, char)
명시된 요일(char)이 돌아오는 날짜를 계산한다. 요일은 숫자로 표현 가능(SUNDAY : 1, MONDAY : 2, ...)
SELECT SYSDATE, NEXT_DAY(SYSDATE, '월요일') FROM dual;
SELECT SYSDATE, NEXT_DAY(SYSDATE, 2) FROM dual;
-- 시스템 날짜를 기준으로 주의 시작, 오늘날짜, 주의 마지막 날짜 출력
SELECT CASE
WHEN TO_CHAR(SYSDATE, 'D') = 1 THEN SYSDATE -- 일요일이면 1
ELSE NEXT_DAY(SYSDATE, 1)-7
END 주시작,
SYSDATE,
CASE
WHEN TO_CHAR(SYSDATE, 'D') = 7 THEN SYSDATE
ELSE NEXT_DAY(SYSDATE, 7)
END 주끝
FROM dual;
---------------------------------------------
-- EXTRACT ({year|month|day|hour|minute|second|
timezone_hour|timezone_minute|
timezone_region|timezone_abbr}
FROM {datetime_value_expr|interval_value_rxpr})
특정 날짜/시간 값이나 날짜 값을 가진 표현식으로 부터 원하는 날짜 영역을 추출하여 출력한다.
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
SELECT TO_CHAR(SYSDATE, 'YYYY') FROM dual;
---------------------------------------------
-- 오늘 0시0분0초
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
SELECT TO_CHAR(TRUNC(SYSDATE, 'DD'), 'YYYY-MM-DD HH24:MI:SS') FROM dual;
-- 내일 0시 0분 0초
SELECT TO_CHAR(TRUNC(SYSDATE, 'DD')+1, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
---------------------------------------------
-- TIMESTAMP형
초단위 이하의 밀리세컨드를 처리하기 위해 사용
DATE형은 초까지만 처리
- 밀리세컨드를 3자리로 표현할 경우는 FF3, 4자리로 표현할 경우는 FF4로 나타냄.
- 현재시간을 입력 할 경우 DATE형은 SYSDATE, TIMESTAMP는 SYSTIMESTAMP를 사용
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF4') FROM dual;
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3') FROM dual;
---------------------------------------------
SELECT SYSDATE + 1 FROM dual;
SELECT SYSDATE + (INTERVAL '1' YEAR) FROM dual;
SELECT SYSDATE + (INTERVAL '1' MONTH) FROM dual;
SELECT SYSDATE + (INTERVAL '1' DAY) FROM dual;
SELECT TO_CHAR(SYSDATE + (INTERVAL '1' HOUR), 'YYYY-MM-DD HH24:MI:SS') FROM dual;
SELECT TO_CHAR(SYSDATE + (INTERVAL '02:10' HOUR TO MINUTE), 'YYYY-MM-DD HH24:MI:SS') FROM dual;
SELECT TO_CHAR(SYSDATE + (INTERVAL '01:30' MINUTE TO SECOND), 'YYYY-MM-DD HH24:MI:SS') FROM dual;
SELECT SYSDATE - (INTERVAL '3' YEAR) FROM dual;
---------------------------------------------
'2010-10-10 10:10:10' '2010-10-02 09:09:09'
-- 두날짜 사이의 간격을 초로 환산하여 출력
SELECT (TO_DATE('2010-10-10 10:10:10', 'YYYY-MM-DD HH24:MI:SS') -
TO_DATE('2010-10-02 09:09:09', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60
FROM dual;
//*****************************************
-- NULL : 값이 존재하지 않은 상태. 오라클에서는 ''(문자길이가 0인경우) 도 널이다
IS NULL : NULL 이면 참
IS NOT NULL : NULL 이 아니면 참
SELECT name, tel FROM insa;
SELECT name, tel FROM insa WHERE tel = NULL; -- (X)
SELECT name, tel FROM insa WHERE tel IS NULL;
SELECT name, tel FROM insa WHERE tel IS NOT NULL;
---------------------------------------------
-- NULL 관련 함수
NVL(expr1, expr2) : expr1이 Null 이면 expr2 반환하고 Null이 아니면 expr1 반환
NVL2(expr1, expr2, expr3) : expr1이 null이 아니면 expr2를 반환하고, null이면 expr3를 반환
NULLIF(expr1, expr2) : 두 표현식을 비교해서 같으면 null 반환하고, 같지 않으면 expr1을 반환
COALESCE(expr1, expr2, ……, exprn) : 표현식 목록에서 첫 번째로 null이 아닌 것을 반환한다. 즉, expr1이 널이 아니면 expr1을 반환하며, expr1이 널이고 expr2가 널이 아니면 expr2를 반환한다.
LNNVL(조건) : 조건이 거짓이거나 값이 존재하지 않으면 TRUE를 리턴하며, 조건이 거짓이면 FALSE를 리턴 한다. SELECT 리스트에서는 사용할 수 없으며 WHERE 절에서만 사용 가능 하다.
SELECT name, tel FROM insa ;
SELECT name, NVL(tel, '없다') tel FROM insa ;
SELECT name, NVL2(tel, '있다', '없다') tel FROM insa ;
SELECT name, NVL2(tel, tel, '없다') tel FROM insa ;
SELECT NULLIF(1, 1) FROM dual;
SELECT NULLIF(1, 0) FROM dual;
SELECT COALESCE(null, 3, null, 5) FROM dual;
SELECT 10+NULL FROM dual; --> null
SELECT 10+NVL(null, 0) FROM dual; --> 10
//*****************************************
-- ORDER BY : 정렬
- ASC : 오름차순, DESC : 내림차순
- 첫번째 행 부터 NULL 값 정렬
ORDER BY 컬럼명 NULLS FIRST;
- NULL 값을 마지막 행으로 정렬
ORDER BY 컬럼명 NULLS LAST;
- ORDER BY 구문 활용시 단순 칼럼명으로 정렬하는것이 아니라 특정칼럼의 특정값을 먼저 오게 하는것처럼 정렬순서를 변경하고 싶은경우 ORDER BY 구문과 DECODE 혹은 CASE WHEN 구문을 함께 활용하면 된다.
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa;
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY city; -- city 오름차순
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY buseo DESC, basicpay; -- buseo 내림차순, buseo 가 동일하면 basicpay 오름차순
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY buseo DESC, basicpay DESC; -- buseo 내림차순, buseo 가 동일하면 basicpay 내림차순
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY basicpay+sudang DESC; -- basicpay+sudang 내림차순
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY pay DESC; -- basicpay+sudang 내림차순
-- 부장, 과장, 대리, 사원 순
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY jikwi;
SELECT name, city, buseo, jikwi, basicpay, sudang, basicpay+sudang pay
FROM insa
ORDER BY DECODE(jikwi, '부장', 1, '과장', 2, '대리', 3, 4);
-- 여자(ssn 이용)중 부서별 오름차순으로 정렬하고 부서가 같으면 기본급(basicpay) 내림차순정렬
name, buseo, ssn, basicpay 출력
SELECT name, buseo, ssn, basicpay
FROM insa
WHERE MOD(SUBSTR(ssn,8,1),2)=0
ORDER BY buseo, basicpay DESC;
-- 여자를 먼저 출력하고 남자를 출력하며, 성별이 동일하면 basicpay 내림차순 출력
name, buseo, ssn, basicpay 출력
SELECT name, buseo, ssn, basicpay
FROM insa
ORDER BY MOD(SUBSTR(ssn,8,1),2), basicpay DESC;
SELECT name, buseo, ssn, basicpay
FROM insa
ORDER BY DECODE(MOD(SUBSTR(ssn,8,1),2),0,1,2), basicpay DESC;
SELECT name, buseo, ssn, basicpay
FROM insa
ORDER BY TO_DATE(SUBSTR(ssn, 1, 6));
SELECT name, tel FROM insa;
SELECT name, tel FROM insa ORDER BY tel NULLS FIRST;
---------------------------------------------
-- DECODE 문 혹은 CASE WHEN 구문을 이용한 정렬
DECODE 문 혹은 CASE WHEN 구문 뒤에는 기존 ORDER BY 구문처럼 칼럼명을 또 활용할 수 있으므로 다양한 정렬구조를 만들수 있다.
-- DECODE 사용 예제
SELECT PART,
GRADE
FROM (SELECT '국어' PART, 'A' GRADE FROM DUAL
UNION ALL
SELECT '수학' PART, 'C' GRADE FROM DUAL
UNION ALL
SELECT '영어' PART, 'B' GRADE FROM DUAL)
ORDER BY DECODE(PART, '영어', 0);
-- CASE WHEN 활용 예제
SELECT PART,
GRADE
FROM (SELECT '국어' PART, 'A' GRADE FROM DUAL
UNION ALL
SELECT '수학' PART, 'C' GRADE FROM DUAL
UNION ALL
SELECT '영어' PART, 'B' GRADE FROM DUAL)
ORDER BY CASE WHEN PART = '수학' THEN 0 END;
//*****************************************
-- DISTINCT : 중복 배제(반대 : ALL -- 기본)
SELECT buseo FROM insa;
SELECT ALL buseo FROM insa;
SELECT DISTINCT buseo FROM insa;
SELECT DISTINCT buseo, jikwi FROM insa;
SELECT DISTINCT SUBSTR(name, 1, 1) FROM insa;
//*****************************************
-- IN
IN(값, 값, ...) : 피연산자가 식 목록 중 하나와 동일한 경우 TRUE
SELECT name, city FROM insa
WHERE city='서울' OR city='경기' OR city='인천';
SELECT name, city FROM insa
WHERE city IN('서울', '경기', '인천');
//*****************************************
-- BETWEEN ~ AND : 피연산자가 범위 안에 있는 경우 참
SELECT name, basicpay FROM insa
WHERE basicpay>=2000000 AND basicpay<=2500000;
SELECT name, basicpay FROM insa
WHERE basicpay BETWEEN 2000000 AND 2500000; -- BETWEEN은 함수이므로 성능은 위가 더 좋다.
SELECT name, basicpay FROM insa
WHERE basicpay<2000000 OR basicpay>2500000;
SELECT name, basicpay FROM insa
WHERE NOT basicpay BETWEEN 2000000 AND 2500000;
//*****************************************
-- LIKE : 주어진 문자열이 패턴과 일치하는지 여부 확인
'%' : 여러문자 공통
'_' : 한문자 공통
'%' 는 0~N개 까지, '_' 는 단 하나의 문자를 나타내는 와일드카드
문자열 처리 시 오라클 내부 알고리즘상 LIKE 연산자보다
INSTR (column | expression, 'string' [,m] [,n]) 함수가 더 빠르게 처리
---------------------------------------------
-- ESCAPE
'%' 나 '_' (와일드카드)가 포함된 데이터 추출하기 위해 활용
SELECT name FROM insa
WHERE name LIKE '김%';
SELECT name FROM insa
WHERE name NOT LIKE '김%';
SELECT name FROM insa
WHERE name LIKE '%이%';
SELECT name FROM insa
WHERE name LIKE '_미%';
SELECT name FROM insa
WHERE name LIKE '%%'; -- 모두 출력
- ㄱ 씨
SELECT name FROM insa
WHERE name BETWEEN '가%' AND '나%';
는 아래와 동일. % 는 LIKE 에서만 유용
SELECT name FROM insa
WHERE name BETWEEN '가' AND '나';
SELECT name FROM insa
WHERE name>= '가' AND name < '나';
WITH tb AS (
SELECT '김김김' name, '우리_나라' content FROM dual
UNION ALL
SELECT '나나나' name, '자바%스프링' content FROM dual
UNION ALL
SELECT '다다다' name, '우리나라' content FROM dual
UNION ALL
SELECT '라라라' name, '웹%안드로이드' content FROM dual
)
SELECT * FROM tb;
WITH tb AS (
SELECT '김김김' name, '우리_나라' content FROM dual
UNION ALL
SELECT '나나나' name, '자바%스프링' content FROM dual
UNION ALL
SELECT '다다다' name, '우리나라' content FROM dual
UNION ALL
SELECT '라라라' name, '웹%안드로이드' content FROM dual
)
SELECT * FROM tb WHERE INSTR(content, '%') >= 1;
WITH tb AS (
SELECT '김김김' name, '우리_나라' content FROM dual
UNION ALL
SELECT '나나나' name, '자바%스프링' content FROM dual
UNION ALL
SELECT '다다다' name, '우리나라' content FROM dual
UNION ALL
SELECT '라라라' name, '웹%안드로이드' content FROM dual
)
SELECT * FROM tb WHERE content LIKE '%&%%' ESCAPE '&';
//*****************************************
-- DECODE : 각각의 조건에 맞는 값에 대한 처리를 결과를 리턴
DECODE(expr, search1,result1
[,search2,result2,...] [,default] );
DECODE(a, 'b', 1, 2)
a라는 항목값이 'b'와 같다면 1, 같지 않으면 2를 출력하며 a 는 칼럼이 될수도있고, 특정값이 될수도 있음
마지막값이 항상 default
DECODE(a, 'b', 1)
a라는 항목값이 'b'와 같다면 1, 같지 않으면 null
DECODE(a, 'b', 1, 'c', 2, 3)
a라는 항목값이 'b'와 같다면 1, 'c'와 같다면 2, 같지 않으면 3를 출력
SELECT name, ssn FROM insa;
SELECT name, ssn, SUBSTR(ssn, 8, 1) FROM insa;
SELECT name, ssn, DECODE(SUBSTR(ssn, 8, 1), 1, '남자', 2, '여자') 성별 FROM insa;
SELECT name, ssn, DECODE(MOD(SUBSTR(ssn, 8, 1), 2), 1, '남자', 0, '여자') 성별 FROM insa;
SELECT name, ssn, DECODE(MOD(SUBSTR(ssn, 8, 1), 2), 1, '남자', '여자') 성별 FROM insa;
//*****************************************
-- CASE ~ END : 조건에 따라 다른 결과를 리턴해야 하는 경우(DECODE 보다 성능 우수)
- CASE 함수에서는 산술연산, 관계연산, 논리연산과 같은 다양한 비교가 가능하다. 또한 WHEN 절에서 표현식을 다양하게 정의할 수 있다.
- CASE 명령어 다음에 기술하는 컬럼명/표현식과 조건, 결과에 표현되는 데이터들은 모두 데이터 타입이 동일해야 한다.
1) 형식1 : CASE 컬럼명|표현식 WHEN 비교값
CASE 뒤에 컬럼명 또는 표현식을 붙이고 특정 WHEN 절에 있는 값이 조건문의 결과에 일치하면 THEN 다음의 내용을 반환한다.
'CASE 컬럼명|표현식 WHEN 비교값' 형식의 'CASE 컬럼명|표현식' 및 'WHEN 비교값'에 올수 있는 데이터 타입으로는 CHAR, VARCHAR2, NCHAR, NVARCHAR2 등이 있으며, 11g는 NUMBER 데이터 타입도 가능하다.
SELECT
CASE 컬럼명|표현식
WHEN 비교값1 THEN 결과값1
WHEN 비교값2 THEN 결과값2
:
[ ELSE 결과값n ]
END "칼럼명"
FROM 테이블명;
SELECT name, ssn,
CASE SUBSTR(ssn,8,1)
WHEN '1' THEN '남자' -- WHEN 1 은 오류(타입이 일치하지 않으므로)
WHEN '2' THEN '여자'
END AS "성별"
FROM INSA;
SELECT name, ssn,
CASE MOD(SUBSTR(ssn,8,1), 2)
WHEN 0 THEN '여자'
WHEN 1 THEN '남자'
END AS "성별"
FROM INSA;
2) 형식2 : CASE WHEN 조건문
CASE 뒤에 WHEN이 바로 오는 형태로 WHEN 절은 조건문을 가지고 있고 특정 WHEN 절의 조건문이 TRUE일 경우 THEN 다음에 오는 값을 반환한다.
SELECT
CASE
WHEN 조건문1 THEN 결과값1
WHEN 조건문2 THEN 결과값2
:
[ ELSE 결과값n ]
END "칼럼명"
FROM 테이블명;
SELECT name, basicpay+sudang 총급여,
CASE
WHEN (basicpay+sudang) >= 2500000 THEN
ROUND((basicpay+sudang) * 0.03, -1)
WHEN (basicpay+sudang) >= 2000000 THEN
ROUND((basicpay+sudang) * 0.02, -1)
ELSE 0
END AS 세금
FROM INSA;
-- insa 테이블에서 회사의 정년은 만 55세이다.
만약 나이가 55를 초과하면 "정년초과", 나이가 55이면 "올해정년", 그렇지 않으면 정년까지 남은 기간을 출력
-- 출력형식(birth, age, 정년까지남은년수은 모두 ssn 이용)
name, ssn, birth, age, 정년까지남은년수
SELECT name, ssn
,TO_CHAR(TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD'), 'YYYY-MM-DD') 생년월일
,TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD'))/12) 나이
,CASE
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD'))/12)>55 THEN '초과정년'
WHEN TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD'))/12)=55 THEN '올해정년'
ELSE TO_CHAR(55-TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6), 'RRMMDD'))/12), '99')
END 남은기간
FROM insa;
WITH tb as (
SELECT name, ssn,
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(ssn, 1, 6),'RRMMDD'))/12) age FROM insa
)
SELECT name, ssn, age,
CASE
WHEN age > 55 THEN '정년초과'
WHEN age = 55 THEN '올해정년'
ELSE TO_CHAR(55-age, '99')
END AS 정년까지남은기간
FROM tb;
//*****************************************
-- ROWID pseudo 컬럼
오라클에서 내부적으로 사용되는 컬럼을 수도우 컬럼 이라고 하며, ROWID, UROWID, ROWNUM등이 있다.
ROWID는 데이터베이스에서 컬럼이 위치한 장소이며 수정할 수 없다.
ROWID의 중요한 쓰임새는 다음과 같다.
- single row를 찾아가는데 가장 빠른 방법이다.
- 테이블에 행들이 어떻게 저장되어 있는지를 알려준다.
- 데이블에서 행에 대한 unique identifier이다.
ROWID의 의미 : AAAHbHAABAAAMXCAAA
AAAHbH : 32bits. Object 번호
AAB : 10bits. TABLESPACE 번호(상대적 파일번호)
AAAMXC : 22bits. BLOCK 번호
AAA : 16bits. ROW 또는 Slot 번호
SELECT name, city FROM insa;
SELECT ROWID, name, city FROM insa;
SELECT ROWID, name, city FROM insa
WHERE ROWIDTOCHAR(ROWID) LIKE '%AABAA%';
SELECT ROWNUM, name, city FROM insa;
//*****************************************
-- 집합 연산자
UNION : 첫 번째 SQL문의 결과와 두 번째 SQL문의 결과 중 중복된 데이터를 제거한다.
UNION ALL : 첫 번째 SQL문의 결과와 두 번째 SQL문의 결과를 모두 출력한다.
MINUS : 차집합. 첫 번째 SQL문 결과에는 있고, 두 번째 SQL문의 결과에는 없는 데이터를 출력한다.
INTERSECT : 인터섹트는 두 번째 SQL문의 결과와 첫 번째 SQL문의 결과에 중복된 행만 출력(교집합)
-- UNION : 중복적인 자료는 한번만 출력
SELECT name, city, buseo FROM insa WHERE city='인천'
UNION
SELECT name, city, buseo FROM insa WHERE buseo='개발부';
SELECT name, city, buseo FROM insa WHERE city='인천'
UNION ALL
SELECT name, city, buseo FROM insa WHERE buseo='개발부';
SELECT name, city, buseo FROM insa WHERE city='인천'
MINUS
SELECT name, city, buseo FROM insa WHERE buseo='개발부';
SELECT name, city, buseo FROM insa WHERE city='인천'
INTERSECT
SELECT name, city, buseo FROM insa WHERE buseo='개발부';
'ORACLE(오라클) > ORACLE(오라클) 실습' 카테고리의 다른 글
[ORACLE INLINE VIEW, subquery ] 오라클 인라인뷰, 서브쿼리 (0) | 2019.01.09 |
---|---|
[ORACLE JOIN]오라클 조인 개념 및 실습. (0) | 2019.01.09 |
[ORACLE 제약조건(오라클 Constraints)] 제약조건 과 컬럼 설정, 확인하기 (0) | 2019.01.08 |
[오라클 FOREIGN KEY] (외래키, 참조키) 생성,삭제 (0) | 2019.01.08 |
[오라클(ORACLE)] 테이블 작성(CREATE),수정(ALTER),삭제(DROP) 개념 및 실습 (0) | 2019.01.07 |