단축키

Control + return (또는 F9) : 커밋

Control + '.' : 자동완성
Control + 'T' : 테이블명 자동완성 (위에 Control + '.'으로도 할 수 있다.)

Control + 'B' : 주석 처리.
Control + Shift + 'B' : 주석 해제.

F4 : 해당 테이블의 Script(명령 Log) 보기.

 

 

자료형

CHAR(n) : 고정길이 문자 (기본값은 1Byte, 최대 2000Byte)
VARCHAR2(n) : 가변길이 문자 (기본값은 1Byte, 최대 4000Byte)

NCHAR(n) : 고정길이 유니코드 문자 (기본값은 1Byte, 최대 2000Byte)
NVARCHAR(n) : 가변길이 유니코드 문자 (기본값은 1Byte, 최대 4000Byte)
 
LONG : 가변길이 문자 (최대 2GB)

CLOB : 가변길이 문자 (최대 4GB)
NCLOB : 가변길이 유니코드 문자 (최대 4GB)

유니코드 : 다국어 입력이 가능하다.

 

NUMBER(P) : 가변길이 숫자 (소수점을 포함한 전체 자릿수 1~38, 최대 22Byte)
NUMBER(S) : 가변길이 숫자 (전체 자릿수 -84 ~ 127, 최대 22Byte)

FLOAT(P) : 

BINARY_FLOAT : 32비트 소수 (최대 4Byte)
BINARY_DOUBLE : 64비트 소수 (최대 8Byte)

 

DATE : - 4712.01.01 ~ 9999.12.31 초 단위
TIMESTAMP : 모든 연도를 초 단위는 물론 밀리초 단위까지 가능.

 

 

사용자 조회하기

SELECT *
FROM ALL_USERS;

모든 사용자를 조회한다.

 

사용자 생성하기

CREATE USER 홍길동
IDENTIFIED BY 1234; (항상 마지막은 ;)

홍길동이란 계정을 만들어라. 비밀번호는 1234.

 

사용자 권한주기

GRANT 권한1, 권한2, 권한3 TO 홍길동;

홍길동에게 권한1, 권한2, 권한3을 줘라.

GRANT CONNECT, RESOURCE, DBA TO 홍길동;

홍길동에게 접속 권한, 저장소 권한, 관리자 권한을 모두 줘라.

 

사용자 생성과 권한주기를 한 번에 하려면 다음과 같이 한 쿼리씩 실행되게 ; 로 구분해주면 된다. 

CREATE USER 홍길동 IDENTIFIED BY 1234;
GRANT 권한1, 권한2, 권한3 TO 홍길동;

(커밋 2번 해줘야 함! 1번만 누르면 첫번째 쿼리문만 커밋한다! 라인 옆에 보면 재생 버튼이 커밋 1번 하면 위에 있다 또 한 번 하면 아래 라인으로 이동할거다.)

 

세부적으로 주는 경우

더보기

GRANT CREATE SESSION TO 홍길동;
GRANT CREATE DATABASE LINK TO 홍길동;
GRANT CREATE MATERIALIZED VIEW TO 홍길동;
GRANT CREATE PROCEDURE TO 홍길동;
GRANT CREATE PUBLIC SYNONYM TO 홍길동;
GRANT CREATE ROLE TO 홍길동;
GRANT CREATE SEQUENCE TO 홍길동;
GRANT CREATE SYNONYM TO 홍길동;
GRANT CREATE TABLE TO 홍길동;
GRANT DROP ANY TABLE TO 홍길동;
GRANT CREATE TRIGGER TO 홍길동;
GRANT CREATE TYPE TO 홍길동;
GRANT CREATE VIEW TO 홍길동;

 

사용자 권한뺏기

위와 동일하고 명령어만 다르다. GRANT 대신 REVOKE, TO 대신 FROM을 치면 된다.

REVOKE 권한1, 권한2, 권한3 FROM 홍길동;

 

테이블 정보 조회하기

DESC 테이블명

으로 조회할 수 있다.

 

테이블 조회하기

SELECT *
FROM TABS;

모든 테이블을 조회한다.

 

테이블 생성하기

CREATE TABLE KOPO_PRODUCT_VOLUME
(
        REGIONID VARCHAR2(20),
        PRODUCTGROUP VARCHAR2(20), 
        YEARWEEK VARCHAR2(6),
        VOLUME NUMBER
);

KOPO_PRODUCT_VOLUME 라는 테이블을 생성해라. 컬렘헤더는 VARCHAR2 자료형의 REGIONID, PRODUCTGROUP, YEARWEEK, NUMBER 자료형의 VOLUME이다.

cf. 오라클에서 테이블명은 최대 30자로 제한된다.

 

데이터 조회하기

SELECT PRODUCTGROUP
FROM KOPO_PRODUCT_VOLUME
WHERE REGIONID = 'A01';

KOPO_PRODUCT_VOLUME 테이블에서 REGIONID의 값이 'A01'PRODUCTGROUP을 조회하라.

 

다른 계정(스키마)의 데이터 조회하기
KOPO2로 로그인 된 상태고, KOPO의 데이터를 조회하고 싶을 경우

SELECT PRODUCTGROUP
FROM KOPO.KOPO_PRODUCT_VOLUME
WHERE REGIONID = 'A01';

KOPO계정의KOPO_PRODUCT_VOLUME 테이블에서  REGIONID의 값이 'A01' PRODUCTGROUP을 조회하라.

 

데이터 생성하기

INSERT INTO KOPO_PRODUCT_VOLUME
VALUES('A01','ST0001','201401',100);

-- 오라클에서 문자열은 반드시 '홑 따옴표'로 쓴다.

 

데이터 파일로 입력하기

Database -> Import -> Import_Table Data 에서 파일을 불러온다.

 

데이터 편집하기

EDIT KOPO_PRODUCT_VOLUME;

입력된 데이터를 바로 편집할 수 있게 편집모드를 활성화한다.

 

데이터 삭제하기

DELETE FROM KOPO_PRODUCT_VOLUME
WHERE REGIONID = 'A01';

KOPO_PRODUCT_VOLUME 테이블에서 REGIONID의 값이 'A01'인 데이터를 삭제하라.

 

DELETE FROM KOPO_PRODUCT_VOLUME;

KOPO_PRODUCT_VOLUME 테이블의 모든 데이터를 삭제하라.

 

DB 링크 생성하기 (접속 엔진 생성)

CREATE DATABASE LINK DEVSERVER
CONNECT TO kopo  -- ID
IDENTIFIED BY kopo -- PW
USING '
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.110.112)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  ) '

 

USING에 들어가는 정보는 TNSNAMES Editior에서 복사해 사용하면 된다.

'DEVSERVER'라는 이름으로 링크(엔진)을 생성한다. (ID, PW, TNSNames를 입력해준다.)

 

또는 TNSNAMES Editor에 등록된 이름을 그대로 사용해도 된다.

CREATE DATABASE LINK DEVSERVER
CONNECT TO kopo  -- ID
IDENTIFIED BY kopo -- PW
USING 'SERVER112'

 

 

DB 링크 조회하기

SELECT * FROM ALL_DB_LINKS : 모든 DB 링크 조회하기

 

DB 링크 삭제하기

DROP DATABASE LINK DEVSERVER : DEVSERVER 라는 이름의 링크를 삭제한다.

 

DB 링크 이용해 내 DB에 복사해오기

CREATE TABLE KOPO_CHANNEL_RESULT_NEW AS
SELECT * FROM KOPO_CHANNEL_RESULT_NEW@DEVSERVER

내 DB에 KOPO_CHANNEL_RESULT_NEW라는 테이블을 만들어라. (AS는 엑셀의 = 수식과 같다.)
= 테이블에 DEVSERVER 링크 엔진을 이용해 KOPO_CHANNEL_RESULT_NEW라는 테이블을 조회한 것과 같다.

 

소모 비용

Ctrl + E를 누른다.

Cost : 컴퓨터 자원 소모 비용
Bytes : 데이터의 크기
Cardinality : Record Count를 한 것과 같다.

 

데이터 조인

UNION : 중복을 제거하고 결합한다.
UNION ALL : 중복을 제거하지 않고 결합한다.

SELECT *
FROM KOPO_PRODUCT_VOLUME
WHERE 1=1
AND PRODUCTGROUP = 'ST0001'
UNION ALL
SELECT *
FROM KOPO_PRODUCT_VOLUME
WHERE 1=1
AND PRODUCTGROUP = 'ST0002';

 

CONCAT

파이썬에서 pd.concat에 해당하는 것이 오라클에서는 UNION이고 오라클에서 CONCAT은 두 문자열을 이어 붙인다. 오라클의 ||(OR)연산과 동일하다.

CONCAT('A','B') -> AB

 

UNION은 각각 완성된 쿼리문의 결과(조회 결과)를 이어 붙이는 것이고

CONCAT은 SELECT 절에서의 OR 조건(||)과 동일하다. 쿼리문 조회할 때 2개의 컬럼의 문자열을 결합한다.

 

 

함수

문자열 관련

(수정중 나중에 조회가능하게 표로 바꾸기)

 

숫자 관련

 

날짜 관련

 

치환 함수(조회나 정렬에 조건을 주어 다양하게 활용 가능하다)

 

GROUP BY 집계

 

 

형변환

 

 

조건문

DECODE : '='에 대한 처리만 가능하다. '>', '<' 와 같은 처리는 CASE WHEN을 사용해야한다.

DECODE는 2가지 방법으로 사용할 수 있다.

1 ) 일반적인 단일 IF문처럼 사용

SELECT DECODE(컬럼명, 조건, TRUE인 경우, FALSE인 경우) AS DECODE_PRACTICE
FROM PRACTICE_TABLE;

예 )
SELECT DECODE(주민번호 뒷자리, 1, '남자', '여자') AS 성별
FROM 학적정보;

 

2 ) 라벨링으로 사용

SELECT DECODE(컬럼명, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3, 조건4, 결과4) AS DECODE_PRACTICE
FROM PRACTICE_TABLE;

예 )
SELECT DECODE(주민번호 뒷자리, 1, '남자', 2, '여자', 3, '남자', 4, '여자') AS 성별
FROM 학적정보;

 

CASE WHEN : 반드시 END로 닫아줘야한다.

SELECT CASE WHEN (조건) THEN (TRUE인 경우)
			ELSE (FALSE인 경우) END
       AS (컬럼 1),
       CASE WHEN (조건) THEN (TRUE인 경우)
			ELSE (FALSE인 경우) END
       AS (컬럼 2),
       CASE WHEN (조건) THEN (TRUE인 경우)
			ELSE (FALSE인 경우) END
       AS (컬럼 3),
       CASE WHEN (조건) THEN (TRUE인 경우)
			ELSE (FALSE인 경우) END
       AS (컬럼 4)
FROM (테이블 명);

'>', '<' 에 대한 처리는 물론 다중 조건을 처리할 수 있다.

 

+ Recent posts