DB(133)
-
DB/Oracle
2019.01.21
[Oracle] Union해서 나온 결과 ROW 값 합치기
가끔 저장된 데이터는 다르지만 테이블 구조는 같은 경우가 있습니다. 이 구조가 같은 테이블을 같이 조회할 경우에는 컬럼이같기에 UNION을 사용하면 굉장히 효율적입니다. UNION을 사용하였기에 두 테이블에 있는 값은 합쳐지지 않고 따로따로 조회가 되어 합쳐지는데요. 하지만 가끔은 이렇게 조회된 두테이블의 결과 값을 서로 합쳐줘야할 때가 있습니다. 대표적으로 두 테이블의 통계를 낼때가 있겠군요. 예제 SELECT S.MODULE, SUM(S.ERR)AS ERROR_COUNT, --에러갯수 SUM(S.MOD) AS MOD_COUNT --수정갯수 FROM ( SELECT A.MODULE COUNT(A.ERR) AS ERR, COUNT(A.MOD) AS MOD, FROM ERROR_TABLE_1 A --1번테..
-
DB/Oracle
2019.01.15
[Oracle] 오라클 데이터가 없을경우에만 Insert하기
테이블에 PK로 설정되어있는 컬럼에 데이터가 중복으로 들어가면 무결성 제약조건에 걸리게됩니다. 이것을 예외처리 해주지 않는다면 프로그램에 치명적일 수 있는데요. 이 경우 데이터가 없을경우에만 Insert를 하는 형식으로 변환하여 프로그램의 안정성을 더해줄 수 있습니다. 오라클에 데이터가 없는 경우에만 Insert를 하는방법은 WHERE조건문에 NOT EXISTS(데이터 SELECT) 를 하는 방법으로 구현할 수 있습니다. INSERT INTO DEPT_TABLE ( SQ, COMPANY, DEPT, ) SELECT 1, '테스트회사', '테스트부서' FROM DUAL WHERE NOT EXISTS ( SELECT SQ FROM DEPT_TABLE WHERE SQ = 1, COMPANY = '테스트회사',..
-
DB/Oracle
2019.01.14
1
[Oracle] 오라클 insert 자동증가 컬럼의 최대값 +1하기 (MAX+1)
NVL함수와 MAX함수를 활용하여 오라클 데이터 insert시 컬럼의 최대값+1을 저장하는 방법입니다. INSERT INTO DEPT_TABLE ( DEPT_SQ, COMPANY, DEPT_NM ) VALUES ( (SELECT NVL(MAX(DEPT_SQ),0)+1 FROM DEPT_TABLE),--데이터가없으면 0 데이터가 있으면 최대값 +1 '테스트회사', '테스트회사명' )
-
DB/Oracle
2019.01.09
[Oracle] 오라클 SELECT한 데이터를 활용하여 UPDATE하기
오라클 SELECT한 데이터를 바로 UPDATE하는 법입니다. 서브쿼리를 활용하면 간단하게 해결할 수 있습니다. 문법 UPDATE [UPDATE 테이블].[별칭] SET [UPDATE 테이블 별칭].[컬럼] = ( SELECT [조회 테이블 별칭].[컬럼] FROM [조회테이블] B ) 예제 UPDATE DEPT A SET A.PC_CD = ( SELECT B.PC_CD FROM BIZAREA B WHERE A.COMPANY_CD = B.COMPANY_CD AND A.BIZAREA_CD = B.BIZAREA_CD )
-
DB/Oracle
2019.01.06
[Oracle] 오라클 조회 프로시저 만들기 예제
오라클 조회 프로시저 예제입니다. 필요하신분은 복사하셔서 사용하시면 좋을 것 같습니다. CREATE OR REPLACE PROCEDURE TEST_PROC /* IN Parameter */ ( P_PLANT_CODE IN VARCHAR2,--공장코드 P_DT_OUT IN VARCHAR2, --출고일 P_ITEM_CODE IN VARCHAR2, --품목명 P_COMPANY_CODE IN VARCHAR2--회사코드 ) IS BEGIN SELECT A.PLANT_CODE, B.PLANT_NAME, A.DT_OUT, A.ITEM,_CODE, B.ITEM_NAME, A.RMK FROM TEST_TABLE A LEFT OUTER JOIN TEST_TABLE2 B ON A.COMPANY_CODE = B.COMPANY..
-
DB/Oracle
2018.09.18
1
[Oracle] 전체 테이블중에서 원하는 Comment만 검색 & 수정하기
오라클 전체테이블 중에서 '원가요소'가 포함되어있는 Comment를 '관리계정'으로 바꾸라는 요청을 받았습니다. 사용하는 용어가 달라졌다고 하더군요.... 이런 요청을 받고 전체 테이블을 일일이 뒤져가면서 원가요소가 포함되어있는 Comment를 찾아서 관리계정으로 바꿔주는것은 굉장히 무식한 짓입니다. 쿼리문을 통해 한번에 간편하게 Comment를 바꾸는 방법에 대해 알아보겠습니다. 전체 테이블중에서 원하는 Comment만 검색 & 수정하기 사용한 방법 SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE, DATA_LENGTH, COMMENTS FROM USER_TAB_COLUMNS A,USER_COL_COMMENTS B WHERE A.COLUMN_NAME LIKE '%%..
-
DB/Oracle
2018.09.17
3
[Oracle] 계정에 테이블 DML 권한부여/취소하기(GRANT/REVOKE)
사용자가 테이블을 DROP하거나 ALTER한다면 큰 문제가 발생할 수 있습니다. 이런 문제를 방지하기 위해 DDL을 사용할 수 있는 관리자(MASTER) 계정을 따로두고 사용자(USER) 계정에는 해당 테이블의 SELECT, INSERT, UPDATE, DELETE 권한만 부여하여 운용하는 경우가 많습니다. 이번 포스팅에서는 관리자(MASTER)계정에서 사용자(USER)계정에 DML권한을 부여하는 방법에 대해 알아보도록 하겠습니다. 테이블에 권한 부여 --테이블에 DML권한 주기 --방법1 GRANT SELECT ON [TABLE] TO [USER_ID]; GRANT INSERT ON [TABLE] TO [USER_ID]; GRANT DELETE ON [TABLE] TO [USER_ID]; GRANT U..
-
DB/Oracle
2018.09.16
[Oracle] 테이블 생성시 VARCHAR2형을 CHAR형으로 치환하기
VARCHAR2는 한글을 저장할 수 있는 크기와 영문을 저장할 수 있는 크기가 다릅니다. 영문은 1바이트고 한글은 2바이트이기 때문입니다. 이렇게 되면 나중에 여러가지 문제가 생길 수 있기에 가끔 테이블 생성 시 VARCHAR2타입을 CHAR형으로 바꿔서 생성시켜주곤 합니다. (자칫하면 공간낭비가 될 수 있기 때문에 자주쓰는 방법은 아닙니다.) 요새는 툴이 좋아 CREATE문을 따로 작성하지 않아도 알아서 작성해주는 툴이 많이 있습니다. 하지만 툴이 만들어준 Create문을 보면 VARCHAR2타입으로 되어있을겁니다. 여기서 테이블의 VARCHAR2형을 CHAR형으로 바꿔주려면 CREATE문 안에 있는 VARCHAR2을 전부 CHAR로 바꿔주어야 하는데 이것은 굉장히 귀찮은 일입니다. 이럴때 요긴하게 사..
-
DB/Oracle
2018.09.15
[Oracle] 테이블 원하는 위치에 새로운 컬럼 추가하는 방법
아래와 같은 예제테이블의 ID밑에 PASSWORD라는 컬럼을 추가하고 싶다고 예를 들어보겠습니다. ALTER TABLE MEMBER ADD(PASSWORD VARCHAR(30)); 이렇게 컬럼을 추가한다고 하면 제가 원하는 ID밑에 컬럼이 추가되지 않고 제일 밑 TEL컬럼 밑에 PASSWORD가 추가됩니다. 이렇게 오라클에서는 가운데에 컬럼을 추가하기 굉장히 까다로운데 오라클 12C부터 사용할 수 있는 기능인 테이블의 컬럼을 숨기고 보이게 할 수 있는 기능인 INVISIBLE 과 VISIBLE을 활용하면 자신이 원하는 곳에 컬럼을 추가할 수 있습니다. 컬럼 숨기기 ALTER TABLE [테이블명] MODIFY [컬럼명] INVISIBLE; ALTER TABLE MEMBER MODIFY USERNAME I..
-
DB/Oracle
2018.09.14
[Oracle] 새로운 테이블에 데이터 이관, 복사, 백업하기
테이블 백업은 굉장히 많이사용합니다. 예를들어 테이블의 구조를 바꿔야하는데 테이블안에 많은 데이터들이 있을때 필히 백업을 해주어야 혹시나 있을 문제에 대비할 수 있습니다. 복사 / 백업할 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX; --테이블 데이터 조회 SELECT * FROM [테이블명]; SELECT * FROM MEMBER_EX; 테이블 복사 CREATE TABLE [복사된 테이블 명]AS SELECT * FROM [복사할테이블] CREATE TABLE MEMBER_EX_20180914 AS SELECT * FROM MEMBER_EX 복사된 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX_20180914; --테이블 데이..
-
DB/Oracle 2019.01.21[Oracle] Union해서 나온 결과 ROW 값 합치기 가끔 저장된 데이터는 다르지만 테이블 구조는 같은 경우가 있습니다. 이 구조가 같은 테이블을 같이 조회할 경우에는 컬럼이같기에 UNION을 사용하면 굉장히 효율적입니다. UNION을 사용하였기에 두 테이블에 있는 값은 합쳐지지 않고 따로따로 조회가 되어 합쳐지는데요. 하지만 가끔은 이렇게 조회된 두테이블의 결과 값을 서로 합쳐줘야할 때가 있습니다. 대표적으로 두 테이블의 통계를 낼때가 있겠군요. 예제 SELECT S.MODULE, SUM(S.ERR)AS ERROR_COUNT, --에러갯수 SUM(S.MOD) AS MOD_COUNT --수정갯수 FROM ( SELECT A.MODULE COUNT(A.ERR) AS ERR, COUNT(A.MOD) AS MOD, FROM ERROR_TABLE_1 A --1번테..
-
DB/Oracle 2019.01.15[Oracle] 오라클 데이터가 없을경우에만 Insert하기 테이블에 PK로 설정되어있는 컬럼에 데이터가 중복으로 들어가면 무결성 제약조건에 걸리게됩니다. 이것을 예외처리 해주지 않는다면 프로그램에 치명적일 수 있는데요. 이 경우 데이터가 없을경우에만 Insert를 하는 형식으로 변환하여 프로그램의 안정성을 더해줄 수 있습니다. 오라클에 데이터가 없는 경우에만 Insert를 하는방법은 WHERE조건문에 NOT EXISTS(데이터 SELECT) 를 하는 방법으로 구현할 수 있습니다. INSERT INTO DEPT_TABLE ( SQ, COMPANY, DEPT, ) SELECT 1, '테스트회사', '테스트부서' FROM DUAL WHERE NOT EXISTS ( SELECT SQ FROM DEPT_TABLE WHERE SQ = 1, COMPANY = '테스트회사',..
-
DB/Oracle 2019.01.14 1[Oracle] 오라클 insert 자동증가 컬럼의 최대값 +1하기 (MAX+1) NVL함수와 MAX함수를 활용하여 오라클 데이터 insert시 컬럼의 최대값+1을 저장하는 방법입니다. INSERT INTO DEPT_TABLE ( DEPT_SQ, COMPANY, DEPT_NM ) VALUES ( (SELECT NVL(MAX(DEPT_SQ),0)+1 FROM DEPT_TABLE),--데이터가없으면 0 데이터가 있으면 최대값 +1 '테스트회사', '테스트회사명' )
-
DB/Oracle 2019.01.09[Oracle] 오라클 SELECT한 데이터를 활용하여 UPDATE하기 오라클 SELECT한 데이터를 바로 UPDATE하는 법입니다. 서브쿼리를 활용하면 간단하게 해결할 수 있습니다. 문법 UPDATE [UPDATE 테이블].[별칭] SET [UPDATE 테이블 별칭].[컬럼] = ( SELECT [조회 테이블 별칭].[컬럼] FROM [조회테이블] B ) 예제 UPDATE DEPT A SET A.PC_CD = ( SELECT B.PC_CD FROM BIZAREA B WHERE A.COMPANY_CD = B.COMPANY_CD AND A.BIZAREA_CD = B.BIZAREA_CD )
-
DB/Oracle 2019.01.06[Oracle] 오라클 조회 프로시저 만들기 예제 오라클 조회 프로시저 예제입니다. 필요하신분은 복사하셔서 사용하시면 좋을 것 같습니다. CREATE OR REPLACE PROCEDURE TEST_PROC /* IN Parameter */ ( P_PLANT_CODE IN VARCHAR2,--공장코드 P_DT_OUT IN VARCHAR2, --출고일 P_ITEM_CODE IN VARCHAR2, --품목명 P_COMPANY_CODE IN VARCHAR2--회사코드 ) IS BEGIN SELECT A.PLANT_CODE, B.PLANT_NAME, A.DT_OUT, A.ITEM,_CODE, B.ITEM_NAME, A.RMK FROM TEST_TABLE A LEFT OUTER JOIN TEST_TABLE2 B ON A.COMPANY_CODE = B.COMPANY..
-
DB/Oracle 2018.09.18 1[Oracle] 전체 테이블중에서 원하는 Comment만 검색 & 수정하기 오라클 전체테이블 중에서 '원가요소'가 포함되어있는 Comment를 '관리계정'으로 바꾸라는 요청을 받았습니다. 사용하는 용어가 달라졌다고 하더군요.... 이런 요청을 받고 전체 테이블을 일일이 뒤져가면서 원가요소가 포함되어있는 Comment를 찾아서 관리계정으로 바꿔주는것은 굉장히 무식한 짓입니다. 쿼리문을 통해 한번에 간편하게 Comment를 바꾸는 방법에 대해 알아보겠습니다. 전체 테이블중에서 원하는 Comment만 검색 & 수정하기 사용한 방법 SELECT A.TABLE_NAME, A.COLUMN_NAME, A.DATA_TYPE, DATA_LENGTH, COMMENTS FROM USER_TAB_COLUMNS A,USER_COL_COMMENTS B WHERE A.COLUMN_NAME LIKE '%%..
-
DB/Oracle 2018.09.17 3[Oracle] 계정에 테이블 DML 권한부여/취소하기(GRANT/REVOKE) 사용자가 테이블을 DROP하거나 ALTER한다면 큰 문제가 발생할 수 있습니다. 이런 문제를 방지하기 위해 DDL을 사용할 수 있는 관리자(MASTER) 계정을 따로두고 사용자(USER) 계정에는 해당 테이블의 SELECT, INSERT, UPDATE, DELETE 권한만 부여하여 운용하는 경우가 많습니다. 이번 포스팅에서는 관리자(MASTER)계정에서 사용자(USER)계정에 DML권한을 부여하는 방법에 대해 알아보도록 하겠습니다. 테이블에 권한 부여 --테이블에 DML권한 주기 --방법1 GRANT SELECT ON [TABLE] TO [USER_ID]; GRANT INSERT ON [TABLE] TO [USER_ID]; GRANT DELETE ON [TABLE] TO [USER_ID]; GRANT U..
-
DB/Oracle 2018.09.16[Oracle] 테이블 생성시 VARCHAR2형을 CHAR형으로 치환하기 VARCHAR2는 한글을 저장할 수 있는 크기와 영문을 저장할 수 있는 크기가 다릅니다. 영문은 1바이트고 한글은 2바이트이기 때문입니다. 이렇게 되면 나중에 여러가지 문제가 생길 수 있기에 가끔 테이블 생성 시 VARCHAR2타입을 CHAR형으로 바꿔서 생성시켜주곤 합니다. (자칫하면 공간낭비가 될 수 있기 때문에 자주쓰는 방법은 아닙니다.) 요새는 툴이 좋아 CREATE문을 따로 작성하지 않아도 알아서 작성해주는 툴이 많이 있습니다. 하지만 툴이 만들어준 Create문을 보면 VARCHAR2타입으로 되어있을겁니다. 여기서 테이블의 VARCHAR2형을 CHAR형으로 바꿔주려면 CREATE문 안에 있는 VARCHAR2을 전부 CHAR로 바꿔주어야 하는데 이것은 굉장히 귀찮은 일입니다. 이럴때 요긴하게 사..
-
DB/Oracle 2018.09.15[Oracle] 테이블 원하는 위치에 새로운 컬럼 추가하는 방법 아래와 같은 예제테이블의 ID밑에 PASSWORD라는 컬럼을 추가하고 싶다고 예를 들어보겠습니다. ALTER TABLE MEMBER ADD(PASSWORD VARCHAR(30)); 이렇게 컬럼을 추가한다고 하면 제가 원하는 ID밑에 컬럼이 추가되지 않고 제일 밑 TEL컬럼 밑에 PASSWORD가 추가됩니다. 이렇게 오라클에서는 가운데에 컬럼을 추가하기 굉장히 까다로운데 오라클 12C부터 사용할 수 있는 기능인 테이블의 컬럼을 숨기고 보이게 할 수 있는 기능인 INVISIBLE 과 VISIBLE을 활용하면 자신이 원하는 곳에 컬럼을 추가할 수 있습니다. 컬럼 숨기기 ALTER TABLE [테이블명] MODIFY [컬럼명] INVISIBLE; ALTER TABLE MEMBER MODIFY USERNAME I..
-
DB/Oracle 2018.09.14[Oracle] 새로운 테이블에 데이터 이관, 복사, 백업하기 테이블 백업은 굉장히 많이사용합니다. 예를들어 테이블의 구조를 바꿔야하는데 테이블안에 많은 데이터들이 있을때 필히 백업을 해주어야 혹시나 있을 문제에 대비할 수 있습니다. 복사 / 백업할 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX; --테이블 데이터 조회 SELECT * FROM [테이블명]; SELECT * FROM MEMBER_EX; 테이블 복사 CREATE TABLE [복사된 테이블 명]AS SELECT * FROM [복사할테이블] CREATE TABLE MEMBER_EX_20180914 AS SELECT * FROM MEMBER_EX 복사된 테이블 확인 --테이블 구조 조회 DESC [테이블명]; DESC MEMBER_EX_20180914; --테이블 데이..