본문 바로가기

Database (84)

반응형
Database/Oracle

[Oracle] MOD() - 나머지를 구하는 방법

이번 글에서는 나머지를 구하는 방법에 대하여 알아보도록 하겠습니다.프로그래밍 언어에서는 주로 % 연산자로 구하는데요. 오라클에서는 어떻게 나머지를 구할까요?MOD() 함수를 이용하면 아주 간단하게 나머지를 구할 수 있습니다. MOD() 함수나누기 연산을 한 후에 구한 몫이 아닌 나머지를 결과로 되돌려주는 함수입니다.아래 예제를 통하여 자세히 살펴보도록 하겠습니다.나머지 값이 잘 출력된 것을 확인할 수 있습니다.이번에는 사번이 홀수인 사람들을 검색해보는 쿼리를 예로 들어보겠습니다.정수를 2로 나누어서 나머지가 0이면 짝수정수를 2로 나누어서 나머지가 1이면 홀수 실제로 나머지를 이용하여 값을 구하는 일이 많습니다. 이번 기회에 확실하게 MOD() 함수를 마스터해서 실무에서 시간을 단축하셨으면 좋겠습니다.

2020. 7. 6.
Database/Oracle

[Oracle] POWER() - 거듭제곱 구하는 방법

이번 시간에는 제곱값을 구하는 방법에 대하여 알아보겠습니다.제곱값을 구하는 방법은 POWER() 함수를 이용하면 아주아주 간단합니다.POWER 함수POWER(M, N) M의 N승을 구하는 함수입니다.이해를 돕기 위해 예제를 살펴 보도록 하겠습니다.아래 예제는 5의3승을 구하는 쿼리입니다.5^3은 5x5x5x = 125맞죠? 그러니까 125가 됐습니다.

2020. 7. 4.
Database/Oracle

[Oracle] FLOOR(), TRUNC() - 소수점 버리는 방법

이번 글에서는 소수점이하를 버리는 FLOOR()와 TRUNC() 함수에 대하여 다루어 보도록 하겠습니다.FLOOR 함수수점 아래를 버리는 함수입니다.아래 예제는 34.5678을 FLOOR 함수에 적용하면 34가 조회되는 쿼리입니다.TRUNC 함수지정한 자리 수 이하를 버린 결과를 출력해주는 함수두 번째 인자의 값이 2이면 소수점 이하 세 번째 자리에서 버림 연산을 하여 소수점 이하 두 번째 자리까지 표시합니다.아래 예제를 통하여 확인해 보도록 하겠습니다. 두 번째 인자 값이 0인 경우에는 소수점자리에서 버림 연산을 하고 -1인 경우는 일의 자리에서 버림 연산을 하며 두 번째 인자가 주어지지 않은 경우에는 0으로 간주되어 소수점자리에서 버림 연산을 수행합니다.

2020. 7. 3.
Database/Oracle

[Oracle] ROUND() - 반올림 하는 방법

이번 글에서는 반올림하는 방법에 대하여 알아보도록 하겠습니다.Oracle에서 제공하는 ROUND() 함수를 이용하면 아주 간단하게 할 수 있는데요.ROUND() 함수가 무엇인지 알아보겠습니다.ROUND 함수- 반올림 해주는 함수입니다.- 지정한 자릿수에서 반올림을 할 수 있습니다.- 자릿수에 음수를 지정할 수 있는데 이럴 경우 소수점 이하가 아니라 반대쪽인 일단위, 십단위, 백단위 순으로 거슬러 올라가게 되며, 인자 값이 양수일 때와는 달리 해당 자리에서 반올림이 일어나게 됩니다. 아래 예제를 통하여 이해를 돕도록 하겠습니다.인수에 반올림 대상인 값만 적으면 소수점 부분은 모두 제거돼서 34.5678을 반올림하면 35가 구해집니다. 인수에 반올림 대상과, 그 다음에 정수를 적어주면 정수자리까지 반올림한다..

2020. 7. 2.
Database/Debug Log

[Oracle - Error] ORA-12560: TNS:프로토콜 어댑터 오류 - "TNS:protocol adaptor error"

이번 글에서는 ORA-12560: TNS:프로토콜 어댑터 오류 에러에 대하여 알아보도록 하겠습니다. ORA-12560: TNS:프로토콜 어댑터 오류ORA-12560: "TNS:protocol adapter error" DB를 실행하려고 하는데 아래와 같은 에러가 발생하는 경우가 있습니다.ORA-12560: TNS:프로토콜 어댑터 오류에 대한 해결 방법으로는 Oracle Service를 실행하시면 됩니다.그럼 지금부터 Oracle Service를 확인하고 실행해보도록 하겠습니다.1. [ 시작 - 마우스 우클릭 ] → [ 컴퓨터 관리 ]에 들어갑니다.2. [ 서비스 및 응용 프로그램 - 서비스 ]를 클릭합니다.3. OracleService(Oracle 설치 시 등록한 명칭)을 시작저는 DB를 처음 만들 때 ..

2020. 6. 29.
Database/Oracle

[Oracle] SUBSTR() - 문자열의 일부분 추출하는 방법

이번 글에서는 문자열의 일부분을 잘라내어 그 부분을 추출하는 방법에 대하여 알아보도록 하겠습니다.SUBSTR() 함수를 이용하면 간단하게 추출할 수 있습니다.SUBSTR 함수- 대상 문자열이나 컬럼의 자료에서 시작위치부터 선택 개수만큼의 문자를 추출합니다. 예제를 통하여 자세히 확인해 보도록 하겠습니다. 아래 예제는 인덱스가 1부터 시작하니까 인덱스가 4인 c부터 3개 조회하는 쿼리입니다. 아래 그림에서 확인할 수 있듯이 com부분이 맞네요. 이번에는 다른 예제로 접근해보도록 하겠습니다.시작위치 인자 값을 음수 값으로 줄 수 있는데 이때는 문자열의 앞쪽이 아닌 뒤 쪽에서부터 세어서 시작위치를 잡습니다.

2020. 6. 26.
Database/Oracle

[Oracle] MODIFY - 테이블 컬럼(명, 크기, 타입 등) 변경하는 방법

이번 글에서는 테이블 컬럼을 변경하는 방법에 대해 알아보겠습니다. 컬럼의 이름, 타입, 크기, 기본값을 변경할 수 있습니다. MODIFY 명령어를 이용하면 어렵지 않으니 잘 따라와주세요!ALTER TABLE MODIFY- 테이블에 이미 존재하는 컬럼을 변경할 수 있습니다.- 컬럼을 변경한다는 것은 컬럼에 대해서 데이터 타입이나 크기, 기본값들을 변경한다는 의미입니다.ALTER TABLE MODIFY 문법문법으로 봐도 크게 어렵지 않습니다. ALTER TABLE table_nameMODIFY ( column_name, data type expr, ...); 예제를 통하여 확인해보도록 하겠습니다.아래 예제는 직급(JOB) 컬럼을 최대 30글자까지 저장할 수 있게 변경하는 쿼리입니다.직급 컬럼의 크기가 30글..

2020. 6. 25.
Database/Oracle

[Oracle] SET UNUSED - 컬럼 사용 제한하는 방법 (feat. ALTER TABLE DROP COLUMN)

이번 글에서는 컬럼 사용을 제한하는 방법에 대하여 알아보도록 하겠습니다.간혹 작업하다가 혹시 몰라서 컬럼 사용을 제한하고 작업을 하는 경우나 안쓰는 컬럼이 종종 있습니다.컬럼 사용을 제한하기 위해서는 SET UNUSED 명령어를 사용하면 아주 편리한데요. 지금 알아보겠습니다.SET UNUSED특정 테이블의 컬럼을 무조건 삭제하는 것은 위험합니다.테이블에 저장된 내용이 많을 경우 해당 테이블에서 컬럼을 삭제하는 데 꽤 오랜 시간이 걸리게 될 것입니다. 컬럼을 삭제하는 동안에 다른 사용자가 해당 컬럼을 사용하려고 접근하게 되면 지금 현재 테이블이 사용되고 있기 때문에 다른 사용자는 해당 테이블을 이용할 수 없게 됩니다. 이런 경우 작업이 원활하게 진행되지 않고 락(LOCK)이 발생하게 됩니다. ALTER T..

2020. 6. 22.
Database/Oracle

[Oracle] ROWID란?

ROWID- 테이블에서 행의 위치를 지정하는 논리적인 주소값입니다.- DB 전체에서 중복되지 않는 유일한 값으로 테이블에 새로운 행이 삽입되면 테이블 내부에서 의사 컬럼 형태로 자동적으로 생성됩니다.- 테이블의 특정 레코드를 랜덤하게 접근하기 위해서 주로 사용 됩니다.ROWID는 다음과 같은 형식으로 데이터를 저장합니다.- 데이터 객체번호는 테이블이나 인덱스와 같은 데이터 객체가 생성될 때 할당됩니다.- 상대적인 파일번호는 데이터가 저장되는 물리적인 데이터 파일 번호로서 유일한 값을 가집니다.- 블록번호는 데이터 파일 내에서 행을 포함한 블록 위치입니다.- 행 번호는 블록 내에서 행 위치를 나타내는 번호입니다.

2020. 5. 19.
Database/Oracle

[Oracle] INTERVAL DAY TO SECOND - 두 날짜 사이 기간 저장하기

INTERVAL DAY TO SECOND일, 시, 분, 초를 사용하여 두 날짜 사이의 기간을 저장하기 위한 데이터 형입니다.자릿수를 지정하지 않으면 기본적으로 2자리가 잡힙니다.INTERVAL DAY(일수에 대한 자릿수) TO SECOND(초에 대한 자릿수) EX) INTERVAL DAY TO SECOND 형으로 컬럼을 생성하여 100일이란 기간을 저장해 봅시다.다음은 SAM03이란 이름의 테이블을 새롭게 생성하는 명령어입니다.CREATE TABLE SAM03( DAY01 INTERVAL DAY(3) TO SECOND); 생성된 테이블에 기간을 100일 저장합니다.INSERT INTO SAM03VALUES( INTERVAL '100' DAY(3)); 오늘 날짜를 출력하고 테이블 SAM03의 DAY01 이..

2020. 5. 19.
Database/Oracle

[Oracle] ROLLBACK이란?

ROLLBACK이란?- 작업 중 문제가 발생되어서 트랜잭션의 처리 과정에서 발생한 발견사항을 취소하는 명령어입니다.- ROLLBACK 역시 하나의 트랜잭션 과정을 종료하게 됩니다.- 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌립니다.- Transaction(INSERT, UPDATE, DELETE) 작업 내용을 취소합니다.- 이전 COMMIT한 곳 까지만 복구합니다.COMMIT과 ROLLBACK의 장점- 데이터 무결성이 보장됩니다.- 영구적인 변경 전에 데이터의 변경 사항을 확인할 수 있습니다.- 논리적으로 연관된 작업을 그룹화 할 수 있습니다.자동 COMMIT, ROLLBACK 되는 경우- SQL*PLUS가 정상 종료되었다면 자동으로 COMMIT 되지만, 비정상 종료되었다면 자동으..

2020. 5. 18.
Database/Oracle

[Oracle] FOREIGN KEY(외래키) 제약 조건 설정

참조 무결성을 위한 FOREIGN KEY 제약 조건- 다음은 ERD(Entity Relation Diagram)로서 테이블을 생성하기에 앞서 데이터베이스 모델링 과정에서 업무를 분석한 후 얻어낸 개체와 관계를 다이어그램으로 나타낸 것입니다.- ERD 를 보고 데이터베이스를 구현할 때에는 부서나 사원과 같은 개체는 테이블로 정의하고 소속이란 관계는 참조의 무결성을 위한 특정 컬럼에 외래 키 제약 조건으로 정의합니다.참조 무결성은 두 테이블 사이(사원, 부서)의 주종관계에 의해서 결정되는데 주체가 되는 테이블은 부모 테이블이 되고 종속이 되는 테이블은 자식 테이블이 됩니다.사원은 회사 내에서 존재하는 부서에 소속되어야 합니다.위와 같이 표현하면 부서가 주체(부모 테이블) 사원이 종속(자식 테이블)이 됩니다...

2020. 5. 15.
Database/Oracle

[Oracle] INSERT ALL - 여러 테이블에 데이터 추가하는 방법

다중 테이블에 다중 행 입력하기- INSERT ALL 문을 사용하면 서브 쿼리의 결과를 조건 없이 여러 테이블에 동시에 입력할 수 있습니다.- INSERT ALL 문을 사용하면 두 번의 쿼리문을 실행하지 않고도 하나의 쿼리문으로 두 개의 테이블에 원하는 컬럼 값을 삽입할 수 있습니다.- 이때 주의할 점은 서브쿼리의 컬럼명과 데이터가 입력되는 테이블의 컬럼명이 동일해야 한다는 것입니다.INSERT ALLINTO EMP_HIR VALUES(EMPNO, ENAME, HIREDATE)INTO EMP_MGR VALUES(EMPNO, ENAME, MGR)SELECT (EMPNO, ENAME, HIREDATE, MGR) FROM EMP WHERE DEPTNO = 20;조건(WHEN)에 의해 다중 테이블에 다중 행 입..

2020. 5. 15.
Database/Debug Log

[Oracle - Error] ORA-00911: 문자가 부적합합니다. - "invalid character"

이번 글에서는 ORA-00911: 문자가 부적합합니다. 에러에 대하여 알아보도록 하겠습니다. ORA-00911: 문자가 부적합합니다ORA-00911: "invalid character"에러 배경위의 에러를 발생시킨 쿼리는 다음과 같습니다.하지만, 쿼리만 보면 DB툴에서도 정상적으로 실행이되고 이상이 없어보이는데 왜 Eclipse 혹은 InteliJ에서는 ORA-00911: "invalid character" 에러가 발생하는 것일까요? 그 이유는 세미콜론(;) 때문입니다. xml에서 쿼리를 작성할 때에는 세미콜론(;)을 제거하고 실행해야 합니다.왠지는 정확히 모르겠지만 인식을 못하는 것 같더라구요. 그래서 세미콜론(;)을 제거하고 실행하셔야 IDE에서도 잘 실행됩니다.해결 방법→ SQL 명령문이 잘못 표기..

2020. 5. 2.
Database/Debug Log

[Oracle - Error] ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. - "SQL command not properl

이번 글에서는 ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. 에러에 대하여 알아보도록 하겠습니다. ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다 ORA-00933: "SQL command not properly ended" 쿼리를 짤 때 다음과 같은 에러가 종종 발생합니다. 예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.아래의 쿼리는 소문자를 포함하는 text 컬럼을 조회하는 쿼리입니다. 위의 쿼리를 실행하니 ORA-00933: "SQL command not properly ended" 에러가 발생하였습니다.이 에러는 명령문을 올바르게 입력하지 않아서 발생한 에러입니다.즉, 위의 쿼리로만 본다면 SELECT ~ FROM ~ WHER ..

2020. 5. 1.
Database/Debug Log

[Oracle - Error] ORA-00905: 누락된 키워드 - "missing keyword"

이번 글에서는 ORA-00905: 누락된 키워드 에러에 대하여 알아보도록 하겠습니다. ORA-00905 : 누락된 키워드 ORA-00905 : "missing keyword" 간혹 쿼리를 짤 때 다음과 같은 에러가 발생합니다. 예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.아래의 쿼리는 SAL의 값에 따라 LEVEL을 정하는 쿼리입니다. 위의 쿼리를 실행하니 ORA-00905 : "missing keyword" 에러가 발생하네요.이 에러가 발생하는 이유는 주로 오타 혹은 키워드를 작성하지 않아서 발생한 에러입니다.쿼리를 보시면 WHEN ~ THEN 절인데 6행은 WHEN은 있지만 THEN이 빠져있습니다.필수로 지정해야하는 키워드 값이 빠진 셈이죠. 그래서 이러한 에러가 나..

2020. 5. 1.
Database/Debug Log

[Oracle - Error] ORA-00923: FROM 키워드가 필요한 위치에 없습니다. - "FROM keyword not found where expected"

이번 글에서는 ORA-00923: FROM 키워드가 필요한 위치에 없습니다. 에러에 대하여 알아보도록 하겠습니다. ORA-00923: FROM 키워드가 필요한 위치에 없습니다. ORA-00923: "FROM keyword not found where expected" 쿼리를 짜다가 이런 에러가 발생한 경험이 있으실 겁니다. 예제를 통하여 에러가 발생한 이유와 해결방법에 대하여 알아보도록 하겠습니다.아래 쿼리는 간단하게 사원번호와 사원명, 사원의 수를 조회하는 예제입니다. 위의 쿼리를 실행하니 ORA-00923: "FROM keyword not found where expected" 에러가 발생하였습니다. 그 이유는 무엇일까요?이 에러는 쿼리에서 오타가 발생하였을 때 주로 발생합니다. 주로 오타, 세미콜..

2020. 5. 1.
Database/Debug Log

[Oracle - Error] ORA-00904: 부적합한 식별자 - "%s: invalid identifier"

이번 글에서는 ORA-00904: 부적합한 식별자 에러에 대하여 알아보도록 하겠습니다.ORA-00904: 부적합한 식별자 | ORA-00904: "%s: invalid identifier"간혹 쿼리를 짤 때 다음과 같은 에러가 발생합니다. 예제를 통하여 에러가 발생한 이유와 해결 방법에 대하여 알아보도록 하겠습니다.아래의 쿼리는 emp 테이블에서 부서 번호, 사원명, 급여, 부서별 급여 합계를 조회하는 쿼리입니다. 위 쿼리를 실행하니 "ORA-00904: "A"."DEPTNO": 부적합한 식별자" 라는 에러가 나타납니다.이 에러는 테이블에서 컬럼명을 찾을 수 없을 때 발생하는 에러입니다.쿼리를 보시면 emp 테이블에는 아무 별칭이 없습니다. 그런데 조회하는 부분에는 a라는 별칭을 붙여서 조회하네요.a라..

2020. 5. 1.
반응형