728x90
반응형

1. 데이터베이스>새 데이터베이스 연결
2. 연결하고자 하는 db를 선택
3. 원하는 connection type을 선택 후, 그에 따라 db 접속 경로 지정

basic 방식
• 접속 정보(Host, Port, Service/SID)를 DBeaver에 직접 입력하는 방식

TNS 방식
• 오라클 클라이언트에서 제공하는 tnsnames.ora 파일에 정의된 TNS Alias를 사용
• DBeaver는 TNS Alias 이름만 지정하고, 실제 접속 정보는 tnsnames.ora에서 불러옴


4. 계정 정보 입력
5. 우측 하단 [Edit Driver Settings] 버튼 클릭
6. 하단 ’Libraries’ 탭에 기본 설정된 것들 전부 삭제
🔥7. [Add File] 버튼 클릭 후, 각 DB에 맞는 JDBC(Java Database Connectivity) 드라이버 선택

JDBC(Java Database Connectivity) 드라이버
• Java 애플리케이션이나 DBeaver 같은 툴이 DB에 접속하기 위해 꼭 필요한 중간 연결 역할
• Java 애플리케이션 ↔ 데이터베이스 사이에서 명령과 데이터를 주고받는 번역기 역할
• 형식은 .jar(Java ARchive), 해당 파일이 없으면 Java 프로그램이 DB 종류를 인식하지 못해 연결 불가
MySQL JDBC 드라이버(mysql-connector.jar)
Oracle JDBC 드라이버(ojdbc.jar)


8. 하단 중간에 위치한 [Find Class] 클릭하면 ‘Drive class’를 선택할 수 있는데 아무거나 선택
9. [Test Connection…] 버튼 클릭해서 테스트 해보면 됨

728x90
반응형
728x90
반응형

*고정 필터 설정


1. Schema Browser 클릭
2. 화면의 왼쪽에 object 별로 검색할 수 있는 영역이 있는데 그중에 필터 모양의 버튼을 클릭
3. 필터를 설정할 수 있는 팝업창이 열리면 Schema, Table, Column 명 별로 필터를 설정할 수 있음


-필터를 여러 개 걸고 싶으면 세미콜론(;) 찍고 추가하면 됨



*검색 시 필터 적용


단순 일회성으로 필터 적용을 원한다면 필터 아이콘 옆에 있는 텍스트 박스에 입력하면 됨.

✔️ 필터 문법(?)

  • parsley로 시작하는: parsley%
  • parsley로 끝나는: %parsley
  • parsley를 포함하는: %parsley%


like 함수 사용할 때랑 똑같음
여기도 마찬가지로 필터 여러 개 적용할거면 세미콜론(;)으로 구분



참조
https://forums.toadworld.com/t/filter-schema-browser-multiple-criteria/55919

728x90
반응형
728x90
반응형
SELECT SYSDATE
      ,TO_CHAR(SYSDATE, ‘Q’) - 1 AS “전분기”
      ,ADD_MONTHS(TRUNC(SYSDATE), ‘Q’,- 3) AS “전분기첫일”
      ,TRUNC(SYSDATE, ‘Q’) - 1 AS “전분기막일”
      ,TO_CHAR(SYSDATE, ‘Q’) AS “현분기“
      ,TRUNC(SYSDATE, ‘Q’) AS “현분기첫일”
      ,ADD_MONTHS(SYSDATE, ‘Q’, 3) - 1 AS “현분기막일”
FROM dual
;


728x90
반응형
728x90
반응형

 

*스크립트 배경색 변경
Veiw > Toad Options… > Editor > Display > Background color


*글자색 변경
Veiw > Toad Options… > Editor > Behavior > ‘Languages’-[Code templates…]


*위에서 변경한 설정 값들 Export/Import
Veiw > Toad Options… > Editor > Behavior > ‘Languages’-[Code templates…] 버튼 클릭하거나 [Syntax highlighting…] 버튼 클릭하면 [Export/Import] 할 수 있음


*토드 실행 시, 스크립트 파일 자동 열기

방법 1
토드 실행 파일 - 우클릭 - 속성
대상란에 토드 실행 파일 경로가 입력되어 있는데
여기에 추가로 sql 파일의 절대경로를 입력하면 됨

대상: “C:\Dell\Toad for Oracle 12.6\Toad.exe”
⬇️
대상: “C:\Dell\Toad for Oracle 12.6\Toad.exe” “파일경로\a.sql”


방법 2
토드 실행 후
View - Toad Options… - StartUp
File to load on startup란에 sql 파일의 절대경로를 입력하면 됨

728x90
반응형
728x90
반응형

 

① cmd 접속 후 sql 스크립트 파일이 있는 곳으로 이동
 
 
 

② sqlplus 접속 후 로그인
 
 
 

③ 스크립트 파일 실행(@스크립트파일명 또는 @스크립트파일명.sql 입력)
 
 
 

 
 
 
 
 
 

728x90
반응형
728x90
반응형

✅MYSQL 등: LIMIT

MYSQL, PostgreSQL과 같은 일부 RDBMS에는 LIMIT절을 사용하여 출력 데이터의 행 개수를 지정할 수 있음.
 

SELECT *
FROM MEMBER_PROFILE
ORDER BY DATE_OF_BIRTH DESC
LIMIT 1
;

출력 결과

 
 
 

✅ORACLE: FETCH

오라클에는 LIMIT절이 없으나
12c 릴리스부터 LIMIT절과 유사하지만 더 유연한 절을 제공함.
 

SELECT *
FROM MEMBER_PROFILE a
ORDER BY DATE_OF_BIRTH DESC
FETCH FIRST 1 ROW ONLY
;

출력 결과

 
 
 

FETCH절 구문

[ OFFSET offset ROWS]
 FETCH  NEXT [  row_count | percent PERCENT  ] ROWS  [ ONLY | WITH TIES ]

 

  • 의미를 명확하게 하기 위해 ROW 대신 ROWS를 사용할 수 있음. 예를 들어 아래 절들은 동일하게 동작함
    • FETCH NEXT 1 ROWS
    • FETCH FIRST 1 ROW
  • ONLY와 WITH TIES
    • ONLY: 정확한 행 개수(row_count) 또는 행 비율(percent)를 반환
    • WITH TIES: 마지막 행과 동일한 값을 가진 행을 추가 반환

 
 
https://www.oracletutorial.com/oracle-basics/oracle-fetch/0/-

728x90
반응형
728x90
반응형

3. 복합형

  • 여러 종류 및 개수의 데이터를 저장하기 위해 사용자가 직접 정의하는 자료형
  • 레코드: 다양한 자료형을 가진 데이터들을 한 번에 저장(테이블의 행과 유사)
  • 컬렉션: 동일한 자료형을 가진 데이터를 여러 개 저장(테이블의 열과 유사, like 배열)



레코드

DECLARE
  TYPE rec_emp IS RECORD(
        name VARCHAR2(200)
       ,salary emp%TYPE
       ,dept_code emp%TYPE
  )
BEGIN
  rec_emp.name := ‘이동욱‘;
  rec_emp.salary := 3000000;
  rec_emp.dept_code := ‘10000678’;
  
  —-레코드를 사용한 INSERT
  INSERT INTO emp
  VALUES rec_emp;
  
  
  rec_emp.salary := 5500000;
  rec_emp.dept_code := ‘10000999’;
  
  —-레코드를 사용한 UPDATE
  UPDATE emp
  SET ROW = rec_emp
  WHERE name = ‘이동욱’
  ;
END
;



컬렉션

  • 특정 자료형의 데이터를 여러 개 저장하는 복합 자려향
  • 종류: *연관 배열, 중첩 테이블, VARRAY

*연관 배열

TYPE 연관배열명 IS TABLE OF 연관배열자료형[NOT NULL] —참조 자료형 사용 가능
INDEX BY 인덱스자료형;
  • 인덱스(key)와 값(value)으로 구성되는 컬렉션
  • 중복되지 않은 유일한 키를 통해 값을 저장하고 불러오는 방식
  • 인덱스는 1부터 시작
  • 사용 빈도가 제일 높은 컬렉션
DECLARE
  idx NUMBER(10) := 0;
  
  TYPE itab_lang IS TABLE OF VARCHAR2(200)
  INDEX BY PLS_INTEGER;
  arr_lang itab_lang;
  
  —-참조 자료형 연관 배열 생성
  TYPE itab_emp IS TABLE OF emp%ROWTYPE
  INDEX BY PLS_INTEGER;
  arr_emp itab_emp;
  
BEGIN
  arr_lang(1) := ‘java’;
  arr_lang(2) := ‘javaScript’;
  arr_lang(3) := ‘sql’;
  arr_lang(4) := ‘python’;
  
  —-LOOP문으로 arr_lang 출력
  LOOP
    idx := idx + 1;
    IF idx > arr_lang.COUNT THEN EXIT;
    END IF;
    dbms_output.put_line(arr_lang(idx));
  END LOOP;

  —-FOR LOOP문으로 arr_lang 출력
  FOR i IN arr_lang.FIRST..arr_lang.LAST LOOP
    dbms_output.put_line(arr_lang(i));
  END LOOP;
  
  idx := 0;
  —-FOR LOOP 응용
  FOR i IN (SELECT * FROM emp) LOOP
    idx := idx + 1;
    arr_emp(idx) := i;
    —-emp 테이블 전체 직원명 출력
    dbms_output.put_line(arr_emp(idx).name);
  END LOOP;

  —-컬렉션을 사용한 INSERT
  INSERT INTO emp2
  VALUES arr_emp(idx)
  ;
END
;



728x90
반응형
728x90
반응형

변수의 자료형

  • 스칼라형(scalar)
  • 참조형(reference)
  • 복합형(composite)
  • LOB(LargeOBject)



1. 스칼라형

  • 오라클에서 기본으로 정의 해놓은 자료향
  • 내부 구성 요소가 없는 단일 값을 의미
  • NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN


2. 참조형

  • 오라클 데이터베이스에 존재하는 특정 테이블 열의 자료형나 하나의 행 구조을 참조하는 자료형
  • %TYPE(열 참조), %ROWTYPE(행 참조)


  —-상수
  PI CONSTANT NUMBER(10) := 3.14;
  
  —-스칼라형
  test1 VARCHAR2(9);
  test2 NUMBER(10) DEFAULT 1; 
  test3 NUMBER(10) NOT NULL := 100;
  —-*NOT NULL 키워드를 사용한 변수는 반드시 선언과 동시에 특정 값을 지정해야 함

  —-참조형
  test4 emp.name%TYPE;
  test5 emp%ROWTYPE;
728x90
반응형
728x90
반응형

1. 조건문

  • IF
  • CASE
DECLARE
  person emp%ROWTYPE;
BEGIN
  SELECT * 
  INTO person
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = ‘04001000’
  AND name = ‘에이다 러블레이스‘
  ;
  
  
—-IF조건문
  IF person.name = ‘에이다 러블레이스’;
    THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
  ELSIF person.name = ‘제임스 고슬링’;
    THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END IF;
  
—-단순CASE조건문
  CASE person.name
    WHEN ‘에이다 러블레이스‘ THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
    WHEN ‘제임스 고슬링‘ THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END CASE;

—-검색CASE조건문
  CASE
    WHEN person.salary < 3000000 THEN dbms_output.put_line(‘기본급이 300만원 미만입니다.’);
  ELSE
    dbms_output.put_line(‘기본급이 300만원 이상입니다.’);
  END CASE;





2. 반복문

  • LOOP: 기본 반복문
  • WHILE LOOP: 특정 조건식의 결과를 통해 반복 수행
  • FOR LOOP: 반복 횟수를 정하여 반복 수행
  • CURSOR FOR LOOP: 커서를 활용한 반복 수행


*반복 수행을 중단 시키거나 특정 반복 주기를 건너뛰는 명령어

  • EXIT: 수행 중인 반복 종료
  • EXIT WHEN: 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료
  • CONTINUE: 수행 중인 반복의 현재 주기를 건너뜀
  • CONTINUE WHEN: 특정 조건힉을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀
DECLARE
  num NUMBER(10) DEFAULT 1;
  total NUMBER(10) DEFAULT 0;
  v_emp emp%ROWTYPE;
  
  CURSOR c_emp IS
  SELECT *
  INTO v_emp
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = 04001000’
  ;
BEGIN
  —-기본LOOP(1부터 10까지 합산값 구하기)
  LOOP
    total := total + num;
    num := num + 1;
    IF num > 10 THEN EXIT;
    END IF;
  END LOOP;
  
  total := 0;
  num := 1;
  —-WHILE LOOP
  —-반복 수행 전에 조건식을 검사하기 때문에 조건식 결과 값에 따라 단 한 번도 반복 수행 되지 않을 수도 있음!
  WHILE num < 11 LOOP
    total := total + num;
    num := num + 1;
  END LOOP;
  
  total := 0;
  —-FOR LOOP
  FOR i IN 1..10 LOOP
    total := total + i;
    CONTINUE WHEN MOD(i, 2) = 0;
    dbms_output.put_line(‘i: ‘||i);
  END LOOP;
  
  —-CURSOR FOR LOOP(커서 출력)
  FOR i IN c_emp LOOP
    dbms_output.put_line(‘이름: ‘||i.name||’, 기본급: ’||i.salary);
  END LOOP;
END
;



728x90
반응형
728x90
반응형

1. cmd 창에서 명령어 SET 실행

2. 출력 결과 중, Path란에서 오라클 설치(ORACLE_HOME) 경로 확인
*ORACLE_HOME은 가변적인 경로


tnsnames.ora

-데이터베이스 주소를 정의해놓은 파일
-해당 파일이 있으면 IP주소와 SID 혹은 Service Name을 직접 입력하지 않고도 DB 연결 가능
-(고정)경로: ORACLE_HOME\network\admin\tnsnames.ora



sqlplus 계정명/패스워드@tnsnames.ora에 설정한 DB alias명


728x90
반응형

+ Recent posts