▣ SQL : Database/Oracle SQL🏮
[Oracle] RECURSIVE와 WITH, 재귀적으로 데이터 조회하기 [재귀 쿼리의 활용과 이해]
- RECURSIVE와 WITH, 재귀적으로 데이터 조회하기 Oracle에서도 MySQL과 같이 재귀 쿼리가 존재한다. Oracle에서의 재귀 쿼리는 다음과 같다. [MySQL] RECURSIVE, 재귀적으로 데이터 조회하기 [재귀 쿼리의 활용과 이해] - RECURSIVE, 재귀적으로 데이터 조회하기 1. RECURSIVE 쿼리란? RECURSIVE 쿼리는 데이터베이스에서 재귀적으로 데이터를 조회하거나 처리하는 데 사용되는 쿼리다. 주로 계층적 데이터 모델이나 트리 yermi.tistory.com WITH -- Anchor Member: 초기 쿼리 부분, 재귀를 시작하는 지점 OrgChart (employee_id, name, manager_id, level) AS ( SELECT employee_id..
[Oracle] 데이터 무결성 제약 조건의 종류 [primary key, unique key, foreign key, NOT NULL, CHECK]
- 데이터 무결성 제약 조건의 종류 무결성 제약 조건 설명 NOT NULL 열이 NULL을 포함할 수 없음 고유 키(unique key) 테이블의 모든 행에서 고유한 값을 갖는 열 또는 열 조합을 지정 기본 키(primary key) 해당 컬럼 값은 반드시 존재해야 하며 유일해야 함 (UNIQUE, NOT NULL 제약조건을 결합한 형태) 참조 키(foreign key) 한 열과 참조된 테이블의 열 간에 외래 키 관계를 설정하고 시행 CHECK 해당 칼럼에 저장 가능한 데이터 값의 범위나 조건 지정 1. NOT NULL 무결성 제약 조건 해당 컬럼의 값이 NULL을 가질 수 없다는 것을 정의하는 제약 조건 테이블 레벨이 아닌 열 레벨로만 지정 가능하다. NOT NULL 무결성 제약조건이 지정된 칼럼은 반..
[Oracle] 실무에서 서브쿼리 사용 시 주의사항 [ORA-01427, ORA-00913, ORA-00907 해결방법]
- 실무에서 서브쿼리 사용 시 주의사항 1. 단일 행 서브쿼리에서 오류가 발생하는 경우 2. 메인쿼리와 서브쿼리 컬럼의 수가 일치하지 않는 경우 3. 서브쿼리 내에서 ORDER BY 절 사용 4. 서브쿼리의 결과가 NULL인 경우
[Oracle] SYSDATE와 CURRENT_DATE 차이 [데이터 서버 시간과 사용자 세션 시간의 차이]
- SYSDATE와 CURRENT_DATE 차이 오라클에서는 SYSDATE와 CURRENT_DATE로 현재 시간을 제공한다. 두 시간의 차이는 무엇일까? SYSDATE : 데이터 서버 시간 CURRENT_DATE : 사용자 세션 시간 일반적으로는 접속하는 사용자와 데이터 서버가 동일한 국가에 있어 두 시간의 차이를 느끼지 못한다. 그러나, 데이터 서버는 영국(UTC+0)에 있고 사용자가 한국(UTC+9)에서 접속한다면 아래와 같이 SYSDATE와 CURRENT_DATE는 +9시간의 차이가 발생한다. --데이터 서버, 사용자 모두 한국일 때 SELECT SYSDATE, CURRENT_DATE FROM DUAL; SYSDATE |CURRENT_DATE | -----------------------+-----..
[Oracle] SYS 계정과 SYSTEM 계정의 차이 [SYSOPER 권한과 SYSDBA 권한의 차이]
- SYS 계정과 SYSTEM 계정의 차이 오라클을 설치하면 기본적으로 제공되는 계정으로 SYS와 SYSTEM이 있다. 이 두 계정은 이름도 비슷한데, 어떤 차이가 있을까? 갖고 있는 권한이 다르다. SYS 계정과 SYSTEM 계정의 차이는 DB 생성과 삭제를 할 수 있냐 없느냐이다. SYS 계정은 DB 생성과 삭제도 가능하지만, SYSTEM 계정은 불가능하다. SYSTEM 계정은 왜 불가능할까? SYS 계정과 SYSTEM 계정에게 부여된 권한이 달라서 그렇다. SYSTEM 계정에는 SYSOPER라는 권한이 주어지고, SYS 계정에는 SYSDBA라는 권한이 주어진다. - SYSOPER 아래 권한 외에 DB 자체를 생성·삭제하거나, 다른 유저 소유의 데이터에는 접근할 수 없다. 인스턴스와 데이터베이스에 대..