아래 테이블이 있다고 가정

T_USER_INF
USER_ID VARCHAR2(10) PK
USER_NM VARCHAR2(10)  

 

1. FETCH 사용

-------------------------------------------------------------------------------------------------
DECLARE

v_userId T_USER_INF.USER_ID%TYPE;      -- 사용자 id
v_userNm T_USER_INF.USER_NM%TYPE;  -- 사용자 이름

-- 테이블 내 선언된 데이터타입 맞춰주어야 함
-- v_id varchar2(10);     
-- v_name varchar2(10);

CURSOR C_TMP1 IS

        SELECT USER_ID,
                  USER_NM
        FROM  T_USER_INF;

BEGIN

        OPEN C_TMP1;   -- 1. 커서 오픈
        DBMS_OUTPUT.PUT_LINE('USER_ID '||' '||' USER_NM');  -- 디어깅용   
        
        LOOP
            FETCH C_TMP1 INTO v_id, v_name; --커서에서 데이터 가져오기
            EXIT WHEN C_TMP1 %NOTFOUND; --커서 속성
            DBMS_OUTPUT.PUT_LINE(v_camp_no||' '||v_cus_no);   -- 디버깅용 출력

        END LOOP;   
        
     CLOSE C_TMP1;    

END;
-------------------------------------------------------------------------------------------------

2. for문 사용

-------------------------------------------------------------------------------------------------
DECLARE

v_userId T_USER_INF.USER_ID%TYPE;      -- 사용자 id
v_userNm T_USER_INF.USER_NM%TYPE;  -- 사용자 이름

-- 테이블 내 선언된 데이터타입 맞춰주어야 함
-- v_id varchar2(10);     
-- v_name varchar2(10);

CURSOR C_TMP1 IS

        SELECT USER_ID,
                  USER_NM
        FROM  T_USER_INF;

BEGIN

        FOR REC IN C_TMP1
        LOOP
            DBMS_OUTPUT.PUT_LINE(REC.USER_ID);               
        END LOOP;

END;
-------------------------------------------------------------------------------------------------

 

차이는 FOR문의 경우 OPEN, CLOSE 작성 안해도 됨

 

 

3. CURSOR WHERE조건을 파라미터로 주고싶을때

* 테이블 내용이 아래와 같다고 가정.

T_USER_INF
USER_ID USER_NM
test01 테스트

-------------------------------------------------------------------------------------------------
DECLARE

v_userNm T_USER_INF.USER_NM%TYPE;  -- 사용자 이름

-- 테이블 내 선언된 데이터타입 맞춰주어야 함
-- v_id varchar2(10);     
-- v_name varchar2(10);

CURSOR C_TMP1(v_userId T_USER_INF.USER_ID%TYPE)

 IS
        SELECT USER_ID,
                  USER_NM
        FROM  T_USER_INF
        WHERE USER_ID = v_userId;

BEGIN

        FOR REC IN C_TMP1('test01')   --()안에 변수 입력
        LOOP 
            DBMS_OUTPUT.PUT_LINE(REC.USER_NM);               
        END LOOP;

END;
-------------------------------------------------------------------------------------------------

3예제는 WHERE USER_ID = 'test01'로 조회된 값 '테스트'가 나옴

오렌지에서 실행할경우 디버깅값 'DBMS_OUTPUT.PUT_LINE'는  Server OutPut에서 확인 가능

 

☆○@!! 프로시저로 돌리는게 아닌, DECLARE 선어해서 돌릴 경우 쿼리 내에 'COMMIT'을 꼭 해줘야 한다.
(프로시저의 경우 CREATE로 선언해주는 DDL이기 때문에 따로 COMMIT필요없음)

'DataBase > Oracle' 카테고리의 다른 글

PLSQL IF/ELSE 사용  (0) 2020.12.02
오라클 컬럼명으로 테이블 찾기  (0) 2020.10.21
오라클 프로시저 실행방법  (0) 2020.10.15
Oracle 실습 환경 구축하기  (0) 2020.02.23

'IT > Git' 카테고리의 다른 글

Intelij 기존 프로젝트 Github repository 생성하기  (0) 2022.01.14
git 강제 pull/push  (0) 2020.11.26
Git submodule?  (0) 2020.03.07
Git - tag 긋기  (0) 2019.06.21
Git 개념 (2) - pull / commit / push  (0) 2019.05.22

알고리즘 문제풀이를 사이트별로 따로 관리했는데, 점점 많아지면서 관리하기 귀찮아서 하나로 통합했다.

그런데 통합 후 clone 후 import 하니까 아래 사진처럼 폴더가 정렬이 안되었다.

사진 1. Package Explorer

이런 불 - 편한게 보기 싫어서 여기저기 찾아보니 java Working Set이라는 것을 발견!

설정은 아래 사진과 같다

우선 Package Explorer에서 폴더를 선택하지 않은 상태에서 빈곳을 마우스 우클릭하면 아래 사진2 처럼 나온다.
그 다음 아래 사진대로 진행

사진 2. Java Working Set 설정 1

 

사진 3. Java Working Set 설정 2

 

 

사진 4. Java Working Set 설정 3

 

이렇게 하면 아래 사진처럼 편-안하게 폴더를 관리할 수 있다.

사진 5. Java Working Set 설정 4

 

이거를 이제 알게되다니... 어쨋건 알았으니 유용하게 사용해야지~

 

'IT > Java' 카테고리의 다른 글

Map Value에 LIST / MAP / 자료형 배열 생성  (0) 2022.03.19
String to Date , Date to String, Time add  (0) 2020.10.19
interface와 상속 차이 (미완)  (0) 2019.12.22
Java 다중 반복문 빠져나가기  (0) 2019.10.05
02. 상속  (0) 2019.01.15

submodule이란 git 프로젝트 내에 하위 폴더 또한 git으로 관리하는것을 말하며,
공통모듈로 사용되는 폴더의 경우 관리의 효율성의 위해 submodule로 사용한다.

 

아래는 submodule의 개념을 알게된 계기 (TMI) 아래는 안읽어도 상관없다. 

알고리즘 문제풀때 사이트별로 문제 푼거를 git으로 관리했었는데,
요즘 문제푸는 사이트가 많아지면서 통합으로 관리해야겠다는 생각이들었다.

통합을 어떻게할까 고민하다가 2가지 방법이 있을거같아서 2가지를 정리해보았다.

Plan A. 기존 폴더들에서 .git을 삭제 한 뒤, 상위 폴더를 만들고 git repository를 생성 후 통합관리한다.

 

사진 1. 통합 plan A

 

Plan B. 기존 git으로 관리하는건 그대로 두고, 상위 repository 생성 후 관리

사진 2. 통합 plan B

 

위 두가지의 차이가 무엇일지 궁금증이 생김

Plan A의 경우 일반적인 Repository이기 때문에 패스 하고,

PlanB에 대한 궁금증이 생겼다.

 

내가 궁금한거

1. Plan B의 Root.git을 clone 할 경우 하위 폴더인 A.git, B.git. C.git이 딸려오는가?
(물론 Root.git에 A/B/C를 모두 add했다고 가정)

-> 안딸려옴

2. PlanB의 A.git에 commit 후 PlanB Root에서 다시 pull받으면?

-> 변경되는거 없음

3. PlanB에서 clone 받을때 딸려온 Root/A 폴더에 testA.txt 폴더를 생성후 commit하면?

-> pathspec 'testA' is in submodule 'A'라는 에러 메세지 발생

 

결과적으로 하위 디렉토리를 git으로 관리할경우 하위 디렉토리는 독립적으로 분리되며, 따로 관리해주어야 한다는 것을 알수있었다.

그러면 planA로 만들기 귀찮아서 planB처럼 하려고 하면 나중에 관리하기 더욱 귀찮아진다는 것.
따라서 현재 내 상황(데탑/노트북 왔다갔다 하기 귀찮아서 git으로 관리하려는 상황)에서는 Plan A가 적합하다.

 

그러면 PlanB 처럼 따로 하위프로젝트를 git으로 관리하는 경우가 있는데, 왜 이렇게 불편하게 독립적으로 관리할까?

 

우선 이렇게 하위 프로젝트를 git으로 따로 관리하는 것을 submodule이라고 한다.
불리는 이름과 같이 모듈을 독립적으로 관리하기 위함이다.

공통모듈은 여러 프로젝트에 동시 적용 가능하다는 범용성을 갖추어야 한다. 이런 공통 모듈의 경우 범용적으로 적용될 수 있는 코드만 수정하여 사용하도록 독립적으로 관리해야 효율적으로 공통모듈을 관리할 수 있다.

가령 공통모듈을 독립적으로 관리 안한다고 했을때를 가정해보자

프로젝트 A에서 공통모듈을 가지고 온 후 A프로젝트 환경에 적합하게 수정 후 commit을 치면 공통모듈 또한 변경이 된다. 그러면 이 공통 모듈은 더이상 공통모듈이 아닌 A프로젝트에서만 사용 가능하게 된다.
따라서 공통모듈을 독립적으로 관리한다면 A프로젝트에서 공통모듈 코드를 수정 후 A프로젝트 repository로 push해도 공통모듈에는 적용이 안되기 때문에, 안전하게 공통모듈을 관리할 수 있게 되는 것이다.

그래서 submodule을 사용하는 것이다.

 

'IT > Git' 카테고리의 다른 글

git 강제 pull/push  (0) 2020.11.26
reset, revert, stash  (0) 2020.05.03
Git - tag 긋기  (0) 2019.06.21
Git 개념 (2) - pull / commit / push  (0) 2019.05.22
기존에 있던 프로젝트 Git으로 관리하기  (0) 2019.05.20

 

오라클 테스트환경 구축하기

※  아래 다운로드 설명은 개인적으로 오라클 공부하기 위한 용도이기 때문에 Express를 사용합니다.
Toad는 기호에 따라 설치 해도되고 안해도 상관없음

 

모든지 처음 환경구축하는게 제일 귀찮지만, 한번 설치 해두고 자유롭게 공부하자구요!
그럼 시작!!

 

 

1. 설치 전 준비

- 오라클 계정 : 오라클 설치를 위해선 오라클 계정이 필요하다.

 

2. 설치 시작

https://www.oracle.com/kr/downloads 접속 -> 데이터베이스 선택

사진 1. 오라클 다운로드 홈페이지

 

3. 버전 선택 

현재 (글작성 기준은 2020.02.23) 18c ExpressEd

사진 2. 오라클 버전 선택

 

3.1. 최신버전은 부담부담 ㅎㅎ 그래서 이전 버전으로 선택함

사진 3. 이전 버전 선택

 

 

 

 

4. 각자 컴퓨터에 맞는거 선택해서 다운로드

여기서 다운로드하려면 로그인 해야합니다. 그래서 사전 준비로 오라클 계정이 필요한겁니다!

사진 4. 오라클 다운로드

 

 

 

5. 다운로드 완료 후 설치

설치는 알아서 하면 됩니다.  원하는곳에 알집풀기 - setup.exe 실행

※주의※
그리고 설치할때 비밀번호를 설정하는 부분이 있을텐데, admin으로 최초 로그인시 필요하기때문에 설정 후 잊어버리지 않도록 조심합시다!

 

 

 

6. 설치 완료 후 설정

설치가 완료되면 (Next만 눌러서 설치했다면) 아래 URl에서 "Run SQL Command line.exe" 실행

 

설치 항목이 바탕화면에 없다면 아래 URL 찾아보기C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Oracle Database 11g Express Edition

사진 5. command line 실행

 

 

 

 

 

 

7. 계정 생성

아까 설치할때 설정한 비밀번호로 입력
SQL > connect system/{아까 설치할때 설정한 비밀번호}

사진 6. SQL 실행 후 connection

 

* 테스트로 사용할 유저 생성 및 권한 부여

사진 7. 계정 생성 및 권한 부여

 

이제 Oracle은 설치 끝!

그런데, Command보다는 GUI를 통해 관리하는 것이 더 쉽다.
그래서 Toad라는 프로그램을 설치해서 연동 후 실습을 진행할 생각이다.

(Orange 등 다른 DB관리 툴 사용할거면 하고싶은대로 하면 됨)

 

8. Toad 설치

Toad는 유료지만, 학습을 위한 Freeware가 있는데 이걸 사용할 것이다.
홈페이지 접속 : www.toadworld.com

 

Toad World

Toad World homepage Join the millions of users who trust Toad products. With nearly 20 years of development, Toad leads the way in database development, database management, and data analysis.

www.toadworld.com

 

 

 

9. download -> Toad for Oracle -> Select 클릭

사진 8. toad 홈페이지 접속

 

 

 

 

10. FreeWare 선택

9번을 실행하면 사진 10이 나오는데, 30일간 무료체험과 FreeWare 중 선택하는 화면이 나옴
하고싶은거 하면 됨. 물론 FreeWare는 기능이 제한되는것이 있다. 하지만 실습용으로는 그렇게 많이 필요치않으니 전 FreeWare를 선택

사진 10. Toad FreeWare 설치

 

 

 

 

11. FreeWare를 설치하면, 개인정보를 입력하는 페이지가 나온다.

필수 정보를 입력하고나면 설치가 가능해진다.

 

 

 

12. Toad - Oracle 연동

.msi 파일을 눌러 설치하고, 실행 (FreeWare로 선택했는데 왜 30일 License가 나오지..? 나중에 확인 후 수정)
사진 6,7에서 생성한 계정 정보를 입력하고 TNS에는 XE를 선택 후 Connet를 눌러 접속되는지 확인한다.

 

사진 11. Toad 접속정보 설정

 

 

13. 실행!

사진 12. Toad 접속 완료

 

이렇게 접속 완료헀으면 사용하면 된다.

 

오늘은 여기까지 정리!

'DataBase > Oracle' 카테고리의 다른 글

PLSQL IF/ELSE 사용  (0) 2020.12.02
오라클 컬럼명으로 테이블 찾기  (0) 2020.10.21
오라클 프로시저 실행방법  (0) 2020.10.15
Oracle PL/SQL CURSOR 반복문 사용하기  (0) 2020.10.14

인터페이스의 경우 공통된 동작을 기대하기 위해 사용하고

추상메서드의 경우 기능의 확장을 기대하기 위해 사용한다.

!?

'IT > Java' 카테고리의 다른 글

String to Date , Date to String, Time add  (0) 2020.10.19
Eclipse java Working Set 설정  (0) 2020.03.07
Java 다중 반복문 빠져나가기  (0) 2019.10.05
02. 상속  (0) 2019.01.15
01. 자바 접근제어  (0) 2019.01.08

오늘부터 R 프로그래밍 공부 시작!!

 

1. R Base 설치와 R 프로그래밍 설치

R 프로그래밍을 하기 위해선, R을 실행하기 위한 R base와 R 프로그래밍을 위한 R Studio가 필요합니다.
고로 이 두가지를 설치!

 

1.1 R base 설치 방법 : https://cran.r-project.org

 

The Comprehensive R Archive Network

 

cran.r-project.org

 

1.2 R Studio 설치 방법 : https://rstudio.com/products/rstudio/

접속 후 Desktop으로 설치

 

RStudio

Take control of your R code

rstudio.com

 

설치했다면 이제 기본적인 R 사용법을 정리해보겠습니다.

R 프로그래밍은 오픈소스 통계분석 프로그램으로
1995년 S언어를 개선하여 Ross Ihaka and Robert Gentleman 이 개발하였답니다.

 

 

아무튼,

빅데이터 분석 도구에는 통계 기법시각화 도구 2가지로 나누어 볼 수 있습니다.

통계기법에는 데이터마이닝, 머신러닝, 텍스트 마이닝, 인공지능분석 툴 등이 있고,

시각화도구에는 ggplot을 이용한 시각적 분석, 공간적 분석맵 등이 있습니다.

 

R의 경우는 C++, Java, Python 등 다른 프로그램과 쉽게 연동이 가능하기때문에 자주 사용하는 분석 툴입니다!
R의 확장자는 .R

설치를 완료 했으면 실행해보겠습니다

 

 

2. 화면 레이아웃

R Studio의 화면 레이아웃은 아래 사진과 같이 5가지로 나눌 수 있습니다.

사진 1. R studio 화면 레이아웃

1. 메뉴부분

보통 다른 툴들과 크게 다른건 없습니다. 환경설정을 할 수 있는 메뉴부분i

2. 스크립트 부문

2번 부분에 우리가 분석하고 싶은 데이터를 요리할 코드를 작성하는 부분 입니다.

3. 데이터 확인부분

Environment - 작성한 변수의 데이터 환경을 보여줍니다. 
ex) 화면에 작성 한 변수 X1의 data type은 numeric이며, 1,2,3,4,5의 데이터가 들어가 있음을 확인하는 부분입니다.

History - 사용한 기록들 확인할 수 있는 부분 입니다.

Connection - R Studio와 연결된 프로그램을 확인할 수 있는 부분 입니다.

 

4. 콘솔 화면

2번 부문에 코드를 작성하고 실행시킨 결과를 확인할 수 있는 부분 입니다.
실행 방법은 원하는 부분 드래그 후 Ctrl + Enter

 

5. 시각화 결과 부분

시각화 데이터를 확인할 수 있는 부분 입니다.
그 옆에있는 file / package 등은 현재 포함된 파일의 위치, 패키지 등을 확인 할 수 있는 부분 입니다.

 

대충 사용법을 알았으니 다음부턴 R 문법에 대해 정리해보겠습니다!

 

 

java에서는 반복문에 이름을 정해서 해당 원하는 반복문을 빠져나갈 수 있게 코드를 작성할 수 있습니다.

int n = 1;
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(n==j) {
					break;
				}
			}
		}

위 경우에는 안쪽에 있는 반복문만 탈출

전체 반복문을 빠져나가고 싶다면 아래와 같이

	loopName:
		for(int i=0; i<3; i++) {
			for(int j=0; j<3; j++) {
				if(n==j) {
					break loopName;
				}
			}
		}

loopName으로 반복문 이름을 설정하고, break에 빠져나갈 반복문 이름을 작성하면 됩니다!

'IT > Java' 카테고리의 다른 글

String to Date , Date to String, Time add  (0) 2020.10.19
Eclipse java Working Set 설정  (0) 2020.03.07
interface와 상속 차이 (미완)  (0) 2019.12.22
02. 상속  (0) 2019.01.15
01. 자바 접근제어  (0) 2019.01.08

+ Recent posts