본문 바로가기

프로그래밍 언어/쿼리문 + Oracle + MySQL50

[ErWin] Subject Area(주제영역) 만들기 ERD를 그렸는데 관계가 너무 복잡하여 한꺼번에 다 볼 수 없다면Subject Area를 만들어서 필요한 업무나 주제로 나누어 볼 필요가 있습니다. 제가 지금 투입되어 작업하고 있는 프로젝트에는 200개가 넘는 테이블이 있기 때문에업무별로 구분해서 볼 수 있는 Subject Area가 반드시 필요하답니다. 메뉴에서 [Model > Subject Areas...]를 클릭해서 만들 수 있습니다. [New...] 버튼을 클릭해서 이름을 입력하면 됩니다. '마스터'라는 Subject Area가 만들어졌습니다.는 기본적으로 모든 오브젝트를 담고 있는 영역이며 자동으로 생성됩니다. ErWin의 좌측 트리에서 Subject Areas를 찾아서 마우스 오른쪽 클릭해서 새로운 Subject Area를 만들수도 있습니다... 2017. 5. 22.
[ERWin] Reverse Engineer 기능으로 오라클(Oracle)에 연결해서 자동으로 ERD 생성하기 현재 진행중인 프로젝트의 솔루션이 ERD를 제공하고는 있지만 파워포인트로 워낙 간략하게 돼 있어서 제대로 된 ERD를 만들어 달라는 요구를 받았습니다.솔루션을 설치하면 기본적으로 만들어지는 테이블이 200개가 넘는데 이걸 언제 그리나요? 그래서, 찾아보니 ERWin의 Reverse Engineer를 사용하면 오라클에 연결해서 자동으로 ERD를 그려주더라구요.이걸 다 그렸으면 적어도 2~3일은 걸렸을 것 같은데,,, 10분도 안되는 시간에 뚝딱 ERD를 만들어 버렸네요^^ 이렇게 테이블의 컬럼과 comment를 가지고 자동으로 ERD를 만들어 준답니다.그럼, 시작해 볼까요? [Tools > Reverse Engineer...]를 클릭합니다. [Logical/Physical]을 클릭하시고, 오라클 버전을 선.. 2017. 5. 22.
[오라클] Oracle에서 모든 테이블 목록 가져오는 쿼리 현재 진행하는 프로젝트는 솔루션을 가지고 작업을 하는데요.테이블이 엄청나게 많더라구요. 테이블 수를 보고 깜짝 놀랐는데...도대체 테이블 수가 몇 개나 되는지 궁금한데 어떻게 알 수 있을까요? select object_name from user_objects where object_type = 'TABLE'; -- 테이블 목록 select object_name from user_objects where object_type = ‘SEQUENCE’; -- 시퀀스 목록 이 쿼리를 사용하면 테이블 목록을 가져올 수 있답니다. 테이블 개수가 224개나 된다니... 정말 엄청나네요~ ㄷㄷㄷ 2017. 5. 22.
[오라클] PK(Primary Key)만 가져오는 Oracle 쿼리 1234567SELECT C.POSITION ,C.COLUMN_NAMEFROM USER_CONS_COLUMNS C INNER JOIN USER_CONSTRAINTS S ON C.CONSTRAINT_NAME = S.CONSTRAINT_NAME AND S.CONSTRAINT_TYPE = 'P'WHERE C.TABLE_NAME = 'SKUWC'ORDER BY 1Colored by Color Scriptercs 해당 테이블의 primary key(프라이머리 키)만 가져오는 쿼리랍니다.이 쿼리를 응용해서 DB 상의 모든 테이블의 Primary Key만 뽑을수도 있겠죠. 1234567891011121314151617181920212223242526272829303132333435363738394041WITH LIS.. 2017. 5. 12.
[오라클] 테이블정의서 자동으로 만들어주는 Oracle 쿼리 테이블정의서 자동으로 만들어주는 오라클 쿼리입니다. 12345678910111213SELECT A.TABLE_NAME AS "테이블명", A.COLUMN_NAME AS "컬럼명", A.DATA_TYPE AS "데이터타입", A.DATA_LENGTH AS "길이", A.NULLABLE AS "Null 여부", B.COMMENTS AS "Comments"FROM dba_tab_columns A, all_col_comments BWHERE A.OWNER = B.OWNERAND A.TABLE_NAME = B.TABLE_NAMEAND A.COLUMN_NAME = B.COLUMN_NAMEAND A.OWNER = 'LOTOSDEV' -- DB명ORDER BY A.TABLE_NAMEcs 이거 실행하고 엑셀로 저장하면 .. 2017. 5. 11.
[MySQL] join 후 원하는 컬럼 update 하는 방법 MySQL에서A라는 테이블의 컬럼1을B라는 테이블과 join해서 update하고 싶은데 어떻게 해야할까요? 오라클만 사용하다가 MySQL을 쓰려니 생각대로 안되는 게 많군요 ㅠㅠupdate wp_moa_bible_mcheyne aset ever_seq_no = ( select ever_seq_no from wp_moa_bible_sort b where a.sort_name = b.name_short); update wp_moa_bible_mcheyne m, wp_moa_bible_sort s set m.ever_seq_no = s.ever_seq_no where m.sort_name = s.sort_name; 처음에 이렇게 사용해 봤는데 안되더라구요.오라클의 Merge를 이용한 update은 당연히 안될.. 2017. 2. 26.
까페24(cafe24.com)의 호스팅 DB를 외부에서 DB툴로 접속하는 방법 까페24(cafe24.com)의 DB접속은 기본적으로 외부에서 접근할 수 없도록 차단돼 있습니다.당연히, 보안 때문이겠죠? 하지만, 까페24에서는 본인의 허락하에 외부에서 접속할 수 있는 방법을 지원하고 있답니다.접속 가능한 ip를 셋팅하는 방법으로 말이죠. 먼저, 접속하려는 자신의 컴퓨터 IP를 확인해 보세요.[윈도우 키 + R]을 눌러서 실행창을 엽니다. cmd라고 입력하고 실행하면 아래처럼 명령프롬프트 창이 나옵니다.ipconfig라고 입력하고 엔터를 치면 아래처럼 ip를 확인할 수 있는데요. 까페24에서 로그인을 하고 [나의서비스관리]로 들어갑니다. 아래쪽에 보면 [MySQL 외부 IP 접근설정]이라고 보이는데, [설정하기]를 누릅니다. DB 비밀번호를 입력하고,좀 전에 ipconfig로 확인했던.. 2017. 1. 9.
[오라클] trunc(SYSDATE)로 시분초가 0인 날짜만 가져오기 0시인 현재날짜의 시간을 가져오기 위해 어떻게 사용하시나요?저는 이제껏 아래와 같은 방법으로 사용을 했었는데요. TO_CHAR(trunc(SYSDATE), ‘yyyyMMddHH24miSS‘) TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, ‘yyyyMMdd’), ‘yyyyMMdd’), ‘yyyyMMddHH24miSS‘) TO_CHAR(SYSDATE, ‘yyyyMMdd‘) ||’000000‘ trunc() 함수를 사용하면 간편하게 날짜만 가져올수가 있습니다. TO_CHAR(trunc(SYSDATE), ‘yyyyMMddHH24miSS’) SELECT TO_CHAR(SYSDATE, 'yyyyMMddHH24miSS'), TO_CHAR(trunc(SYSDATE), 'yyyyMMddHH24miSS'), .. 2016. 12. 6.
[오라클] Oracle에서 key값이 없을 때 중복데이터 rowid로 제거하는 샘플 쿼리 특별히 primary key가 없거나 unique index가 없어서 중복되어서는 안되는데 같은 내용의 데이터가 중복되어서 쌓여있을 경우, 1개의 row만 남기고 나머지 데이터들은 모두 삭제하고 싶다면? 이 쿼리를 수정해서 사용하면 됩니다. ROW_NUMBER() OVER(PARTITION BY RLTM_SRNO, EQT_SRNO ORDER BY ROWID) 중복되어서는 안되는 컬럼, 즉 key가 되는 컬럼을 PARTITION BY … 부분에 넣으시면 됩니다. 데이터가 같아도 오라클 내부적으로 ROWID는 모두 다르기 때문에 ROWID를 이용하여 데이터 하나만 남기고 나머지 중복데이터는 모두 제거가 가능합니다. DECLARE CURSOR cur IS SELECT RW FROM ( SELECT RLTM_S.. 2016. 11. 2.
[MySQL] concat() 함수 사용시 값이 깨져서 나오는 문제 해결 방법 항상 Java + Oracle 환경에서 작업하다가이번에 개인적으로 사이트를 하나 만들고 있어서 Java + MySQL로 작업을 하고 있는데정말 예상치 못한 곳에서 많이 막히는 걸 느낍니다. 오늘은 MySQL에서 문자열을 연결하기 위해 사용하는 concat() 함수에서 막혀서 많은 시간을 허비했네요 ㅠㅠ이클립스 console에 에러메시지도 찍히지를 않아서 실제로는 concat() 함수에서 오류가 발생하고 있다는 사실조차 아는데 많은 시간이 걸렸습니다. 더욱이 제가 사용하는 MySQL용 Toad라는 DB 툴에서는 쿼리를 실행하면 이렇게 한글이 아무렇지도 않게 잘 나오거든요.이러니 concat() 함수에서 문제가 발생하고 있다는 사실조차 알지 못했던거죠. 이클립스로 하나씩 하나씩 디버깅을 하는 과정에서 쿼리 .. 2016. 10. 23.
[오라클] 검색어 자동완성을 위한 초성, 중성, 종성 분리해서 검색하는 oracle 함수 프로젝트를 하면서 검색어 자동완성을 작업할 일이 있어서 개발을 해봤습니다.네이버나 구글에서 검색어를 입력하면 나오는 그 검색어 자동완성 말이죠. 바로 이건데요.여기서 핵심은 초성, 중성, 종성 검색이 가능해야 한다는 것이었습니다. 즉, 'ㄱ'을 입력하면 'ㄱ'으로 시작하는 모든 게 다 나와야 합니다.'날ㅆ'를 입력하면 '날씨, 날쏘' 등등이 나와야 하구요.'백'으로 검색을 하면 '배경화면'같은 단어들도 나와야 합니다. 어떻게 하면 이런 게 가능할까? 고민하다가검색할 데이터를 초성, 중성, 종성으로 나눠서 따로 저장해놓고검색어도 초성, 중성, 종성으로 나눠서 검색을 하면 되겠다는 생각이 들더군요. 이렇게 DB에 저장할 때 실제 제목과, 검색을 위한 초/중/종성으로 분리한 제목 2가지로 저장을 했습니다.그리.. 2016. 9. 12.
SQL 쿼리문 보기 좋게 정렬해주는 사이트 - Instant SQL Formatter 지금 하는 프로젝트에서는 Toad 정품이 없어서 freeware 버전을 설치해서 사용하고 있습니다.그런데, 이걸 써보니 확실히 편리한 기능들이 빠져 있어서 사용하는데 좀 불편함이 있네요 ㅠ 그 중에서 가장 불편한 건... SQL 쿼리의 Fomat Code 기능을 제공하지 않는다는 점이랍니다 ㅠ즉, Ctrl + F 단축키로 쿼리를 보기좋게 정렬해주는 기능을 사용할수가 없다는 것이죠. 그런데, 옆에서 같이 일하시는 분이 그런 기능을 제공해주는 사이트를 찾아서 알려주시네요^^아~ 정말 이런 사이트가 있다니... (감사 감사) http://www.dpriver.com/pp/sqlformat.htm 원하시는 쿼리를 긁어서 붙여넣으신 후에[Format SQL] 버튼 누르시면 쿼리를 예쁘게 정렬해 줍니다. 여러가지 .. 2016. 7. 27.
MySQL Database Error: Specified key was too long; max key length is 1000 bytes 에러 해결방법 MySQL에 테이블을 하나 생성하려고 했더니 에러가 나네요. CREATE TABLE COMTSSYSLOGSUMMARY(OCCRRNC_DE CHAR(20) NOT NULL,SVC_NM VARCHAR(255) NOT NULL,METHOD_NM VARCHAR(60) NOT NULL,CREAT_CO NUMERIC(10) NULL,UPDT_CO NUMERIC(10) NULL,RDCNT NUMERIC(10) NULL,DELETE_CO NUMERIC(10) NULL,OUTPT_CO NUMERIC(10) NULL,ERROR_CO NUMERIC(10) NULL,PRIMARY KEY (OCCRRNC_DE,SVC_NM,METHOD_NM)); 위 쿼리에 특별히 문제가 있어 보이진 않는데 아래와 같이 에러가 발생했습니다. My.. 2016. 7. 7.
오라클(Oracle) 설치시.. Command line option Syntax error Type Command/? for Help 해결방법 오라클 설치시 다음과 같은 오류가 발생했다면...환경변수의 TEMP, TMP의 경로를 수정해 주시면 됩니다. [제어판 > 시스템 및 보안 > 시스템]으로 이동하세요. 환경변수 버튼을 클릭하시구요. 이렇게 돼 있을 텐데요. 이렇게 바꿔주시면 됩니다^^ 2016. 7. 4.
[쿼리문/오라클] 토드(Toad)에서 바로 실행가능한 변수선언 쿼리문 변수를 선언해서 쿼리를 실행해야 할 경우가 있는데요. 반복적인 작업을 완료하고 select를 한다던지... 여러가지 경우가 있을 텐데요. DECLARE 변수선언 BEGIN 실행구문 END; 이런식으로 DECLARE BEGIN ~ END 구문으로 프로그래밍을 하여 결과를 확인할 수 있습니다. 아래 샘플을 참고하시면 됩니다. DECLARE V_NUM INTEGER := 0; V_TARGET_DATE DATE; BEGIN LOOP V_TARGET_DATE := SYSDATE - V_NUM; DELETE FROM USE_STATUS_DAY WHERE CREATE_DATE >= TO_DATE(TO_CHAR(SYSDATE - V_NUM, 'YYYYMMDD')) AND CREATE_DATE < TO_DATE(TO_C.. 2016. 2. 5.