반응형

안녕하세요! 오늘은 컬럼, 코멘트 추가 및 컬럼 순서 변경 방법입니다.

 

[컬럼추가]

ALTER TABLE 테이블명 ADD(컬럼명 데이터타입);

ex) ALTER TABLE EMP_TBL ADD(EMP_NM VARCHAR(50));

 

[컬럼수정]

- 컬럼명 변경

ALTER TABLE 테이블명 RENAME COLUMN 컬럼명(전) TO 컬럼명(후);

ex) ALTER TABLE EMP_TBL RENAME COLUMN EMP_NM TO EMP_NAME;

 

- 컬럼 데이터타입/컬럼크기 변경

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입;

ex) ALTER TABLE EMP_TBL MODIFY EMP_NM VARCHAR(100);

 

[컬럼삭제]

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

ex) ALTER TABLE EMP_TBL DROP COLUMN EMP_NM;

 

[코멘트추가/수정]

COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트';

ex) COMMENT ON COLUMN EMP_TBL.EMP_NM IS '사원명'; 

 

[컬럼순서변경]

※ 컬럼을 추가하면 컬럼순서는 마지막이 됨 > 그 위로 올리고 싶은 경우 해당 위치 밑에 있는 컬럼들을 숨겼다가 다시 풀어주면 됨

 

ALTER TABLE 테이블명 MODIFY 컬럼명 INVISIBLE;

ALTER TABLE 테이블명 MODIFY 컬럼명 VISIBLE;

ex) ALTER TABLE EMP_TBL MODIFY EMP_AGE INVISIBLE;

      ALTER TABLE EMP_TBL MODIFY EMP_AGE VISIBLE;

 

 

반응형
반응형

안녕하세요! 오늘은 TOAD에서 엑셀파일을 데이터로 INSERT 하는 방법에 대해 소개해 드리겠습니다.

 

1. 토드 실행 후 Database > Import > Import Table Data 를 클릭합니다.

2. Object Name 에 INSERT 할 테이블을 선택하고 Next를 클릭합니다.

 

3. Excel file을 선택하고 File을 선택한 후 Next를 클릭합니다.

 

4. 엑셀에서 INSERT 데이터의 범위를 지정해줍니다.

    첫번째줄에 컬럼명이 적혀있는 경우에는 2번째 행부터 지정하면 됩니다.  이후 NEXT 버튼을 클릭합니다.

 

5.  조건에 맞는 항목을 선택합니다.

     엑셀의 데이터를 테이블로 삽입 시 엑셀파일의 컬럼/테이블의 컬럼 으로 매칭할지,

     엑셀의 컬럼 순서대로 테이블의 삽입할지 결정하여 OK를 클릭합니다.

     이후 NEXT 를 클릭합니다.

 

6. PK로 설정할 컬럼을 선택 후 NEXT 를 클릭합니다.

 

7. 컬럼과 데이터가 미리보기 형태로 조회되면 NEXT 를 클릭합니다.

 

8. INSERT 선택 후 EXECUTE 를 클릭합니다.

 

9. 해당 창과 함께 테이블을 확인하시면 엑셀파일의 데이터가 INSERT 된 것을 확인할 수 있습니다.

반응형
반응형

안녕하세요! 오늘은 임의의 데이터 생성 방법에 대해 소개해 드리겠습니다.

 

- 쿼리문 

 

- 실행결과

 

위의 쿼리문을 통해 임의로 데이터를 생성하여 조회하거나 기존의 데이터에 덧붙여서 유용하게 사용 가능합니다.

반응형
반응형

안녕하세요! 오늘은 SVN LOCK 해제 방법에 대해 소개해 드리겠습니다.

 

1. SQLite 다운

 

먼저, LOCK 해제에 필요한 SQLite 프로그램을 다운받아야 합니다.

https://www.sqlite.org/index.html

 

SQLite Home Page

SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bu

www.sqlite.org

 

 

2.  SVN 폴더 찾기

LOCK이 걸린 해당 workspace의 wc 파일을 찾아야 합니다.

ex) D:\eGovFrameDev-3.5.1\workspace\폴더이름\폴더이름

해당 .svn 폴더가 보이지 않는다면 숨김 폴더까지 조회되도록 설정하시면 됩니다.

 

.svn 폴더로 들어가면 wc.db 파일을 확인할 수 있습니다. 경로를 기억하여 놓습니다.

 

 

3. SQLite 실행

 

다운받은 SQLite를 실행하고 파일-데이터베이스 열기를 클릭하여 전에 기억해둔 경로의 wc.db 파일을 열어줍니다.

 

LOCK이 걸린 경우 SELECT 쿼리를 실행하면 데이터가 조회됩니다.

같은 방법으로 SELECT * FROM WORK_QUEUE / DELETE FROM WORK_QUEUE 도 실행합니다.

 

 

4. 변경사항 저장하기

 

쿼리 실행 후 Ctrl + S 를 통해 WC 파일을 저장합니다.

이후에 이클립스를 clean up 하면 LOCK이 해제됩니다.

 

 

반응형

'코딩 기록 > JAVA' 카테고리의 다른 글

[JAVA] 숫자야구 게임  (2) 2021.03.27
반응형

안녕하세요. 두번째로 최대값을 출력해보는 SQL을 작성해보겠습니다.

 

아래와 같은 테이블이 존재합니다.

 

1. SCORE의 최대값을 출력하여 보겠습니다.

1
SELECT MAX(SCORE) AS MAX_SCORE FROM TEST_RESULT;
cs

 

2. SCORE의 두번째 최대값을 출력하여 보겠습니다.

 

방법 1) NOT IN 사용하기

1
2
3
SELECT MAX(SCORE) AS SECOND_MAX_SCORE
  FROM TEST_RESULT
 WHERE SCORE NOT IN 50;
cs

 

방법 2) ROWNUM 사용하기

1
2
3
4
5
6
SELECT SECOND_MAX_SCORE
  FROM (SELECT ROWNUM AS RN, SCORE
         FROM(SELECT SCORE
               FROM TEST_RESULT
              ORDER BY SCORE DESC))
 WHERE RN = 2;
cs

 

결과는 최대값 50을 제외하고 가장 큰 수 인 40이 출력됩니다.

 

 

3. SCORE의 최대값을 제외한 나머지 행을 출력하여 보겠습니다.

 

방법 1) NOT IN 사용하기

1
2
3
4
SELECT SCORE AS SCORE
  FROM TEST_RESULT
 WHERE SCORE NOT IN 50
ORDER BY SCORE ASC;
cs

 

방법 2) ROWNUM 사용하기

1
2
3
4
5
6
7
SELECT SCORE
  FROM (SELECT ROWNUM AS RN, SCORE
         FROM(SELECT SCORE
               FROM TEST_RESULT
              ORDER BY SCORE DESC))
 WHERE RN > 1
ORDER BY SCORE ASC
cs

 

결과는 최대값 50을 제외한 나머지 목록이 출력됩니다.

반응형
반응형

안녕하세요. 오늘은 기호로 구분하여 전화번호를 저장하고 추출하여 보겠습니다.

 

자릿수에 상관없이 저장, 추출 가능합니다. (핸드폰번호, 집 전화번호 모두 가능)

전화번호를 세부분으로 나누어 받아 한 컬럼에 추가하고, 다시 화면에 나타낼 때는 세부분으로 나누어 출력이 가능합니다. 

 

먼저 TABLE1 이라는 테이블에 TEL_NO 라는 컬럼에 데이터를 추가합니다. 

여기서 [010] [1111] [2222] 이 부분은 사용에 맞게 값을 넣어주시면 됩니다.

1
INSERT INTO TABLE1(TEL_NO) VALUES ('010'||'-'||'1111'||'-'||'2222')
cs

데이터가 잘 들어간 것을 확인하였습니다.

 

전화번호가 들어오는 형식은 핸드폰 번호일수도, 집전화일수도, 인터넷전화번호일수도 있기 때문에 중간에 있는 "-" 기호로 구분하여 추출해보겠습니다.

 

 

먼저 SUBSTR, INSTR의 이해가 필요합니다.

1
2
3
SUBSTR(문자열,1,4-- STR의 1번째 글자부터 4개 자르기
 
INSTR(문자열, '-'12-- STR의 1번째 문자부터 2번째 '-' 기호가 있는 문자 위치 찾기
cs

 

그럼 기호를 기준으로 나누어 출력해보겠습니다.

1
2
3
4
5
SELECT SUBSTR(TEL_NO, 1, INSTR(TEL_NO, '-'11- 1) AS TEL_NO1
       ,SUBSTR(TEL_NO, INSTR(TEL_NO, '-'11+ 1, INSTR(TEL_NO, '-'12
               - INSTR(TEL_NO, '-'11- 1) AS TEL_NO2
       ,SUBSTR(TEL_NO, INSTR(TEL_NO, '-'12+ 1) AS TEL_NO3
FROM TABLE1
cs

INSTR을 통해 기호를 기준으로 자를 문자열의 위치를 파악한 후 SUBSTR으로 잘라줍니다.

이 방식을 통해 - 기호로 구분하여 화면에 나타낼 수 있고 저장 할 때는 DB에 기호 붙여서 저장 가능합니다.

 

다른예로, 집전화번호 형태의 데이터도 추출해보겠습니다.

반응형
반응형

이번 포스팅은 SVD를 이용한 추천시스템 2번째 글입니다. 저는 Oracle과 연동하여 사용하였습니다.

SVD에 대한 이해가 필요하다면 이전 글을 보고 와주세요 ↓↓↓↓↓

 

 

[Python] SVD를 이용한 추천 시스템 만들기 - 1

안녕하세요 이번엔 SVD를 이용한 추천 시스템을 소개해 보려고 합니다. 그전에 SVD에 대해 간략히 소개해드리겠습니다. https://angeloyeo.github.io/2019/08/01/SVD.html 특이값 분해(SVD) - 공돌이의 수학정리

maxtime1004.tistory.com

 

저는 아래의의 깃허브 내용을 토대로 jupyter notebook으로 진행하였고 저에게 맞춰서 조금씩 변형하였습니다.

원본 코드를 보고 싶으시면 아래의 주소로 가주세요 ↓↓↓↓↓

 

lsjsj92/recommender_system_with_Python

recommender system tutorial with Python. Contribute to lsjsj92/recommender_system_with_Python development by creating an account on GitHub.

github.com

 

 

저의 본 포스팅을 보시고 전체 코드를 원하신다면 밑의 github 주소로 들어가서 확인하세요↓↓↓↓↓

 

dpwls64/profit_recommand

Contribute to dpwls64/profit_recommand development by creating an account on GitHub.

github.com

 

* 참고

- 테스트용으로 만든거라 데이터가 보기 좋은 형태가 아닐 수도 있는데 이점은 양해부탁드려요 ㅜㅜ

- 필요한 테이블은 2개인데 하나는 강의(강의번호, 강의제목) 데이터가 들어있는 테이블,

   하나는 강의에 대한 평점(사용자아이디, 강의번호, 평점) 데이터가 들어있는 테이블이 필요합니다.

- 저의 목적은 강의 하나당 추천 강좌 5개의 데이터를 DB로 넣어서 활용하려고 합니다.

  최종 테이블에는 이러한 형태로 들어갈 것 입니다. 방법을 이해하셔서 본인에게 맞게 변경하여 사용하세요.

 

* SVD 추천 시스템 

 

1. 필요한 패키지를 import 합니다.

 

2. 현재 DB에 등록되어 있는 강의 테이블을 가져옵니다. 필요에 따라 안의 sql문은 바꿔주세요.

 

3. 같은 방식으로 평점 테이블도 가져옵니다.

 

4.  강의 번호를 기준으로 두 테이블을 합칩니다.

 

5. SVD 를 수행하기 위한 데이터 형태를 맞춰줍니다.

 

6. 다음과 같이 특이값 분해를 진행합니다.

 

7. 그래프를 그려봅니다.

 

8. 강의 번호와 그에 따른 추천 강의 5개를 추출합니다.

 

9. 형태에 맞게 데이터를 추가 합니다.

반응형
반응형

안녕하세요 이번엔 SVD를 이용한 추천 시스템을 소개해 보려고 합니다.

그전에 SVD에 대해 간략히 소개해드리겠습니다.

 

 

특이값 분해(SVD) - 공돌이의 수학정리노트

 

angeloyeo.github.io

 

저는 이분의 글을 참고하여 개념을 익혔지만 사실 수학적인 부분은 깊게 이해하지 못했기 때문에 추천시스템을 활용하기 위한 정도만 학습하였고, 제 이해를 바탕으로 글을 작성하는 것이기 때문에 깊은 이해를 원하시면 위의 링크나 따로 검색을 이용해 주세요!!

 

 

* 배경 지식 

 

먼저 고유값 분해(EVD)가 있습니다. 고유값 분해는 정방행렬에 대해서만 적용 가능하여 한계가 존재합니다.

따라서 정방 행렬이 아닌 m x n 행렬에 적용될 수 있게 일반화된 EVD가 SVD 입니다.

즉, 특이값 분해(Singular Value Decomposition, SVD)의 정의는 임의의 m x n 차원의 행렬 A에 대하여 행렬을 분해할 수 있는 방법 중에 하나입니다.

 

 

* 특이값 분해의 기하학적 의미 

 

직교하는 벡터 집합에 대하여, 선형 변환 후에 그 크기는 변하지만 여전히 직교할 수 있게되는 그 직교 집합은 무엇인가?

그리고 선형 변환 후의 결과는 무엇인가?

 

 

* 특이값 분해의 활용 

 

특이값 분해는 분해되는 과정보다 분해된 행렬을 다시 조합하는 과정에서 그 응용력이 빛을 발합니다.

A행렬을 특이값 p개 만을 이용해 A' 라는 행렬로 부분복원이 가능합니다.

특이값의 크기에 따라 A의 정보량이 결정되기 때문에 값이 큰 몇개의 특이값들을 가지고도 충분히 유용한 정보를 유지할 수 있습니다.

 

 

특이값 분해를 통해  부분 복원을 하여 사진을 더욱 선명하게 만들 수도 있습니다.

 

SVD를 이용한 실습 예제를 보고 싶으시면 다음 글을 클릭해주세요↓↓↓↓↓

 

[Python] SVD를 이용한 추천시스템 만들기 - 2

이번 포스팅은 SVD를 이용한 추천시스템 2번째 글입니다. 저는 Oracle과 연동하여 사용하였습니다. SVD에 대한 이해가 필요하다면 이전 글을 보고 와주세요 ↓↓↓↓↓ https://maxtime1004.tistory.com/90 [Py

maxtime1004.tistory.com

 

반응형

+ Recent posts