오라클에서 테이블 칼럼 설명(COMMENT)을 추가하거나 수정할 때는 COMMENT ON COLUMN 명령을 사용하면 된다. 추가하거나 수정할 때는 동일한 명령어를 사용하면 된다. 칼럼 코멘트 추가 방법 COMMENT ON COLUMN emp.empno IS '사원번호' COMMENT ON COLUMN 스키마명.테이블명.칼럼명 IS '칼럼 코멘트' 스키마명은 생략할 수 있으며, 아래와 같이 스키마명을 붙여서 사용할 수도 있다. COMMENT ON COLUMN scott.emp.empno IS '사원번호' --스키마명을 붙여서 사용할 경우 칼럼 코멘트 조회 SELECT * FROM all_col_comments WHERE table_name = 'EMP' empno 칼럼의 코멘트가 추가된 것을 확인할 수 ..
오라클에서 NULL을 치환하기 위해서 NVL 함수를 자주 사용한다. NVL 함수와 유사한 NVL2 함수가 존재하며, NVL2 함수의 사용법이 익숙하지 않아서 헷갈리는 경우가 많다. 아래는 2개의 함수를 비교하고, 각각 함수를 사용하는 예시이니 참고하기 바란다. NVL 함수와 NVL2 함수 비교 SELECT ename , comm , NVL(comm, 0) AS nvl_comm , NVL2(comm, 'Y', 'N') AS nvl2_comm FROM emp WHERE job IN ('MANAGER', 'SALESMAN') NVL 함수는 칼럼의 값이 NULL인 경우 특정 값으로 치환하기 위해서 사용한다. NVL2 함수는 칼럼의 값이 NULL인 경우와 NULL이 아닌 경우 두 가지 케이스 모두 특정 값을 반환..
오라클의 WHERE 절에서 날짜 조건을 검색하기 위해서는 BETWEEN 연산자와 부등호 연산자를 사용한다. 조회할 날짜 칼럼에 시간이 포함되어 있다면 조건 값에 시간까지 포함해야 누락된 데이터가 없이 조회된다. 아래는 실무에서 날짜를 조회할 때 자주 사용하는 방법이니 참고해서 사용하면 된다. 목차 BETWEEN 연산자를 사용하여 날짜 조회 방법 부등호(=, >, , = TO_DATE('2023-11-01', 'YYYY-MM-DD') AND hiredate = 시작일자 AND 칼럼 = TO_DATE('2023-11-01', 'YYYY-MM-DD') AND hiredate < TO_DATE('2023-11-30', 'YYYY-MM-DD') 이퀄(=) 연산자 없이 부등호 연산자만 사용하여 날짜를 검색할 수 있..
오라클의 WHERE 절에 if 문을 사용하기 위해서는 동적 쿼리문을 사용하거나 Procedure를 만들면 내부에서 if 문을 사용할 수 있다. 순수 SQL 문에서는 if 문을 사용할 수 없으나, WHERE 절에 CASE WHEN, OR, UNION ALL을 사용하면 if 문과 유사한 효과를 낼 수 있다. 아래는 자주 사용하는 if 문과 유사한 효과를 낼 수 있는 3가지 방법이다. 목차 OR 연산자를 사용하여 if 문 효과 내기 CASE WHEN을 사용하여 if 문 효과 내기 UNION ALL을 사용하여 if 문 효과 내기 ※ 아래는 SQL Developer 쿼리툴을 사용하여 실행한 결과이다. 쿼리툴의 종류에 따라서 define 입력 변수를 사용하는 방법이 조금씩 다를 수 있으니 이점을 유의하여 참고하면 ..
오라클에서 현재 날짜 및 시간을 조회할 때 SYSDATE 함수를 사용한다. SYSDATE를 조회하면 오라클에 설정된 날짜 포맷으로 조회된다. 원하는 포맷(YYYY-MM-DD)으로 변경해서 조회하기 위해서는 TO_CHAR 함수를 사용하여 포맷을 변경하는 방법과 오라클의 NLS 설정 자체를 변경하는 방법이 있다. 목차 TO_CHAR 함수를 사용하여 포맷 변경 NLS 설정을 변경하여 포맷 변경 TO_CHAR 함수를 사용하여 포맷 변경 SELECT SYSDATE , TO_CHAR(SYSDATE, 'YYYY-MM-DD') , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual 위의 예제를 보면 SYSDATE가 RR/MM/DD(23/11/30) 포맷으로 조회된 것을 확인할 ..
오라클에서 조회된 데이터에서 중앙값(중간값)을 구하기 위해서는 MEDIAN 함수를 사용한다. 데이터의 중앙값이라고 생각해서 평균(AVG) 함수와 유사하다고 생각할 수 있지만, AVG 함수는 데이터 값의 평균값이고 MEDIAN 함수는 조회된 데이터의 값을 크기로 정렬 후 데이터 행의 중앙값이다. MEDAN 함수는 수치값과 날짜 형식에 사용할 수 있다. WITH temp AS ( SELECT 1 num FROM dual UNION ALL SELECT 2 num FROM dual UNION ALL SELECT 3 num FROM dual ) SELECT MEDIAN(num) FROM temp 위의 예제는 3개의 행이 조회되었고, 데이터 행의 중앙값은 2이다. WITH temp AS ( SELECT 1 num ..
오라클에서 XMLAGG 함수를 사용하여 여러 행의 칼럼을 하나의 문자열로 합칠 수 있다. XMLAGG 함수에서는 DISTINCT 연산자를 사용하여 중복을 제거할 수 없다. 합쳐진 문자열에서 중복된 값을 제거하기 위해서는 정규식 함수(REGEXP_REPLACE)를 사용하여 중복을 제거하면 된다. XMLAGG 함수 중복제거 방법 SELECT REGEXP_REPLACE( SUBSTR(XMLAGG(XMLELEMENT(job , ',' , job) ORDER BY job).EXTRACT('//text()').GETSTRINGVAL(), 2) , '([^,]+)(,\1)+', '\1') FROM emp WHERE deptno = 20 쉼표를 구분자로 사용하여 문자열을 합친다. 반드시 ORDER BY를 사용하여 합칠..
오라클에서 UNION, UNION ALL을 사용할 때 ORDER BY 절을 사용할 경우 정확한 방법을 숙지하지 않으면 오류가 발생할 수 있다. UNION 쿼리문이 모두 끝나고 마지막에 ORDER BY 절을 선언해야 하며, ORDER BY 절에 사용할 수 있는 칼럼은 UNION의 첫 번째 쿼리문의 별칭 또는 칼럼의 순번이다. ORDER BY 절을 잘못 사용했을 경우 아래와 같은 오류가 발생할 수 있다. ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다 00933. 00000 - "SQL command not properly ended" 목차 별칭(칼럼명)으로 정렬하는 방법 칼럼 순번으로 정렬하는 방법 서브쿼리를 사용하여 정렬하는 방법 별칭(칼럼명)으로 정렬하는 방법 SELECT empno A..
오라클 쿼리문에서 엔터 값(줄 바꿈)을 넣기 위해서는 CHR(13) || CHR(10)을 문자열 사이에 붙여주면 된다. 엔터 값을 제거하기 위해서는 REPLACE 함수를 사용하여 CHR(13)와 CHR(10)을 각각 공백으로 치환해 주면 된다. 엔터 값을 태그로 변환하기 위해서도 REPLACE 함수를 사용하여 치환해 주면 된다. 목차 엔터 값 넣는 방법 엔터 값 제거 방법 엔터 값 태그로 치환 방법 엔터 값 넣는 방법 SELECT 'Oracle Database' , 'Oracle' || CHR(13) || CHR(10) || 'Database' FROM dual 파이프 문자열 두 개를 사용하여 문자열 사이에 엔터 값을 붙여준다. 윈도우에서는 CHR(13) + CHR(10)을 엔터 값으로 사용한다. 특정 ..
오라클 SQL 쿼리툴 중에서 가장 많이 사용하는 무료툴 중 하나는 DBeaver이다. DBeaver는 오라클 외에도 PostgreSQL, MySQL, MongoDB 등 다양한 데이터베이스에서 사용할 수 있다. DBeaver를 무료로 사용하기 위해서는 Community 버전을 사용해야 하며, Pro 버전은 유료로 구매해야 사용할 수 있다. 오라클은 Community 버전만으로 충분히 사용할 수 있으며, Apache-2.0 라이선스가 적용되어 있어서 회사에서 설치 해도 문제가 되지 않는다. 목차 DBeaver 설치 파일 다운로드 DBeaver 오라클 연결 설정 DBeaver 설치 파일 다운로드 DBeaver Community 다운로드 Download DBeaver Community 23.1.5 Release..