오라클 사용자(유저) 계정의 비밀번호를 변경하기 위해서는 ALTER USER 문을 사용하며 기존 비밀번호가 새로운 비밀번호로 초기화된다. 사용자의 분실한 비밀번호를 찾기 및 확인하는 방법은 없으며 새로운 비밀번호로 재설정해야 한다. 변경할 비밀번호에 특수문자가 포함되어 있으면 쌍따옴표로 비밀번호를 감싼 후 변경해야 한다. 사용자 비밀번호 변경 ALTER USER scott IDENTIFIED BY tiger123; ALTER USER [사용자명] IDENTIFIED BY [새로운 비밀번호] ALTER USER 문을 실행하면 해당 사용자는 새로운 비밀번호로 변경된다. 사용자 비밀번호에 특수문자가 있을 경우 쌍따옴표 사용 ALTER USER scott IDENTIFIED BY "tiger123!@#"; 비밀..
오라클에서 유저의 계정을 생성할 때는 CREATE USER 문을 사용한다. 사용자를 생성할 때 테이블스페이스, 사용자 최초 로그인 시 암호 변경 등을 설정할 수 있으며, 오라클 12c 버전부터 사용자를 생성할 때 ORA-65096 오류가 발생할 수 있는데 이럴 때는 사용자명 앞에 c##을 붙여주면 된다. 목차 사용자 생성 (CREATE USER) 사용자 생성 오류 처리 (오라클 12c 이상) 사용자 생성 상세 설정 (테이블스페이스 등) 사용자 삭제 (DROP USER) 사용자 생성 (CREATE USER) CREATE USER scott IDENTIFIED BY tiger; CREATE USER [사용자명] IDENTIFIED BY [암호] 오라클 12c 버전부터 사용자명에 c##을 붙이지 않으면 오류가..
오라클에서 동명이인을 찾기 위해서는 분석함수(OVER 절)를 사용하거나 GROUP BY ~ HAVING 절을 사용할 수 있다. 그 외에도 서브 쿼리 등을 활용할 수 있겠지만 분석함수를 사용하는 것이 가장 효율적인 듯하다. 동명이인은 동일한 이름이 여러 건 조회되었을 경우일 수도 있고, 동일한 이름이 여러 건 조회되고 동일한 이름 내에서 생년월일 등 추가로 식별할 수 있는 조건이 다를 경우 동명이인이라고 판단할 수 있다. 목차 이름만으로 동명이인 찾기 이름 + 생년월일로 동명이인 찾기 동명이인 여부를 Y, N으로 표시하기 GROUP BY ~ HAVING으로 동명이인 찾기 이름만으로 동명이인 찾기 WITH emp_t(ename, birthdate, job) AS ( SELECT '스미스', '1982-01-..
오라클에서 문자열 문자열을 나타낼 때 작은따옴표(홑 따옴표, 싱글 쿼터)를 사용하기 때문에 문자열 내부에 작은따옴표를 넣기 위해서는 추가적인 작업이 필요하다. 일반적인 프로그래밍 언어에서 이스케이프 문자를 표시할 때 백 슬래시(\)를 사용하여 작은따옴표를 ( \' ) 이렇게 처리하여 표시한다. 오라클에서는 백 슬래시 대신 작은따옴표를 한번 더 사용하여( '' ) 처리하면 된다. 이 방법 외에도 CHR() 함수를 사용하여 문자열을 합치는 방법도 있다. 목차 작은따옴표를 두 번 연속으로 입력하는 방법 CHR() 함수를 사용하는 방법 작은따옴표를 두 번 연속으로 입력 SELECT 'Oracle SQL Developer' AS str1 , 'Oracle ''SQL'' Developer' AS str2 FROM ..
오라클에서 쿼리문을 작성할 때 문자열의 마지막 콤마(쉼표)를 제거해야 하는 상황이 자주 발생한다. 문자열의 마지막 문자를 제거하는 방법은 딱 정해져 있지 않으며 상황에 따라서 다양한 방법을 사용할 수 있다. 아래는 마지막 문자를 조금 더 효율적으로 제거할 수 있는 방법이며, 아래의 기능을 이해한다면 다양하게 활용할 수 있을 것이다. 목차 RTRIM() 함수로 마지막 콤마 제거 REGEXP_REPLACE() 함수로 마지막 콤마 제거 SUBSTR() 함수로 마지막 콤마 제거 RTRIM() 함수로 마지막 콤마 제거 WITH emp_t(enames) AS ( SELECT 'BLAKE,CLARK,JONES,' FROM dual ) SELECT enames , RTRIM(enames, ',') AS enames2 ..
오라클에서 날짜의 월, 일 앞의 0을 제거하기 위해서는 TO_CHAR 함수와 "FM" 키워드를 사용하면 쉽게 해결할 수 있다. 날짜 포맷에 "FM" 키워드를 붙이면 해당 위치부터 수치 값의 앞에 0이 있을 경우 제거를 한다. 날짜뿐만 아니라 시간에서도 시, 분, 초 앞의 0을 제거할 수 있으니 아래를 참고하면 된다. 목차 날짜 0 제거 방법 "FM" 키워드 위치별 0 제거 다양한 날짜 포맷에서 0 제거 시간 0 제거 방법 날짜 0 제거 방법 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS date1 , TO_CHAR(SYSDATE, 'FMYYYY-MM-DD') AS date2 FROM dual 날짜 포맷에 "FM" 키워드를 붙이면 년, 월, 일 앞에 0이 있을 경우 제거하고 문자..
오라클에서 MINUS 연산자를 사용하면 서로 다른 쿼리문에서 차집합의 데이터를 구할 수 있다. MINUS 연산자는 다른 데이터베이스의 EXCEPT 연산자와 비슷한 기능을 하며, 중복 값이 제거된 차집합 데이터가 반환된다는 것을 숙지해야 한다. MINUS 연산자를 사용하여 쿼리문을 작성하면 직관성을 좋지만 성능에 이슈가 발생하는 경우가 많다. 성능 이슈가 발생하면 NOT EXISTS 연산자로 쿼리문을 변경하는 것도 성능 향상에 좋은 방법이다. 목차 MINUS 기본 사용법 MINUS를 여러 번 사용하는 방법 MINUS는 중복이 제거된 차집합을 반환 MINUS 기본 사용법 SELECT empno, ename, job, deptno FROM emp WHERE sal > 2500 MINUS SELECT empno..
오라클에서 서로 다른 쿼리문에서 중복 값이 제거된 교집합 데이터를 조회하기 위해서는 INTERSECT 연산자를 사용하면 된다. 자주 사용하는 UNION ALL과 사용법은 비슷하지만 UNION ALL은 합집합을 반환하는 반면 INTERSECT는 쿼리 문의 데이터가 서로 겹치는 교집합의 데이터가 반환된다. 목차 INTERSECT 기본 사용법 INTERSECT를 여러 번 사용하는 방법 INTERSECT는 중복이 제거된 교집합을 반환 INTERSECT 기본 사용법 SELECT empno, ename, job, deptno FROM emp WHERE sal > 2500 INTERSECT SELECT empno, ename, job, deptno FROM emp WHERE deptno = 20 INTERSECT 연..
오라클에서 시퀀스(Sequence)의 세부 정보 및 시퀀스 리스트를 조회하기 위해서는 시스템 테이블을 사용하면 쉽게 조회할 수 있다. 시퀀스 최댓값, 캐시 사용 여부, 마지막 채번 값 등을 확인할 수 있으며 아래의 3가지 시스템 테이블을 사용할 수 있다. all_sequences 사용자 계정이 접근 가능한 모든 시퀀스 조회 user_sequences 사용자 계정에 생성된 모든 시퀀스 조회 dba_sequences 관리자(DBA) 권한으로 모든 시퀀스 조회 시퀀스 조회 방법 시퀀스명으로 조회 (세부 정보) SELECT * FROM all_sequences WHERE sequence_name = 'EMP_SEQ' 시퀀스명으로 시퀀스의 세부 생성 정보 및 현재 마지막 채번 값을 확인할 수 있다. 유저명으로 조..
오라클에서 숫자, 금액 등 수치 값에 천 단위로 콤마(쉼표)를 추가하기 위해서는 TO_CHAR 함수를 많이 사용한다. TO_CHAR 함수는 수치 값의 최대 길이를 예측 가능한 경우 오류 없이 사용할 수 있으며, 수치 값의 최대 길이를 예측하기 힘든 경우 정규식 함수를 사용하여 천 단위로 콤마를 추가할 수 있다. 목차 TO_CHAR 함수를 사용하는 방법 정규식 함수를 사용하는 방법 TO_CHAR 함수를 사용하는 방법 SELECT TO_CHAR(1234567890, 'FM999,999,999,999') AS val FROM dual 수치 값에 천 단위 콤마를 추가하기 위해서는 TO_CHAR 함수를 많이 사용한다. TO_CHAR 함수를 사용할 때는 두 번째 인자에 수치 값의 길이에 맞게 패턴 값을 부여해야 한..