Database/Oracle (15) 썸네일형 리스트형 [Oracle] 오라클 서브쿼리 종류 오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 익히면 쿼리문을 작성할 때 아주 유용하게 사용할 수 있다. 서브 쿼리는 메인 쿼리 내부에 작성하는 쿼리를 뜻하며, 주로 아래의 3가지 서브 쿼리로 분류한다. 오라클 서브쿼리 종류 서브 쿼리사용 위치설명 스칼라 서브 쿼리 SELECT 절 단일 칼럼, 단일 행을 반환 (1개의 값) 인라인 뷰 FROM 절 View와 사용적인 측면에서 동일함 (임시 뷰, 임시 테이블) 중첩 서브 쿼리 WHERE 절, HAVING 절 다중 칼럼 또는 다중 행을 반환 위의 3가지 분류 외에도 연관성 없는 서브 쿼리, 연관성 있는 서브 쿼리로 분류하기도 한다. 연관성 없는 서브 쿼리.. [Oracle] Partition by로 그룹별 순서기반으로 집계하기 아래와 같이 sales 로그 테이블이 있다. PROD_IDCUST_IDTIME_IDCHANNEL_IDPROMO_IDQUANTITY_SOLDAMOUNT_SOLD139871-10-1998399911232.161316601-10-1998399911232.161317621-10-1998399911232.161318431-10-1998399911232.161319481-10-1998399911232.161322731-10-1998399911232.161323801-10-1998399911232.161326831-10-1998399911232.161328651-10-1998399911232.161346631-10-1998399911232.161352031-10-1998399911232.161353211-10-199.. [Oracle] SQL Performance - View 사용 주의 View를 사용하면 코드 유지보수성은 좋아질 수 있으나 성능관점에서는 결과가 안좋을 수 있다. 아래 예시를 살펴보자. Employees 테이블 NOEMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILDEPARTMENT_ID1198DonaldOConnellDOCONNEL502199DouglasGrantDGRANT503200JenniferWhalenJWHALEN10 Departments 테이블NODEPARTMENT_IDDEPARTMENT_NAMEMANAGER_IDLOCATION_ID110Administration2001700220Marketing2011800330Purchasing1141700 Locations 테이블NOLOCATION_IDSTREET_ADDRESSPOSTAL_CODECITY110.. [Oracle] Oracle Join 종류 정리 #2 테이블 3개에 대해서 Join결과를 확인해 본다. 아래와 같이 테스트 테이블 3개가 존재한다. Employees 테이블 전체 행 (PK: EMPLOYEE_ID, FK: DEPARTMENT_ID) - 88번 row는 department_id가 nullNOEMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILDEPARTMENT_ID1198DonaldOConnellDOCONNEL502199DouglasGrantDGRANT503200JenniferWhalenJWHALEN104201MichaelHartsteinMHARTSTE205202PatFayPFAY206203SusanMavrisSMAVRIS407204HermannBaerHBAER708205ShelleyHigginsSHIGGINS1109206Willi.. [Oracle] and system_cd(+) = 'COM' 과 같이 상수값 비교 조건에도 (+)가 붙는 이유 Oracle의 옛날 조인 문법(= “오라클 전용 OUTER JOIN 문법”) 에서 (+)를 사용하는 경우,AND 절의 모든 조건이 "조인 대상 테이블" 기준으로 일관되게 처리되어야 하기 때문입니다.🔹배경 설명예를 들어 아래와 같은 쿼리가 있다고 합시다:SELECT a.user_id, b.system_cdFROM user_info a, system_info bWHERE a.user_id = b.user_id(+)AND b.system_cd(+) = 'COM'; 🔹 (+)의 의미(+)는 해당 테이블이 OUTER JOIN의 “부수적인 테이블” 이라는 뜻입니다.즉, b 테이블이 없어도 a의 데이터는 모두 나오게 하라는 의미죠.🔹 그런데 왜 상수 조건에도 (+)가 붙을까?Oracle의 구식 (+) 문법에서는.. [Oracle] Oracle Join 종류 정리 Oracle을 포함하여 DB마다 Join은 기본적인 연산 기능이다. ANSI로 표준화되어있지만 여전히 Oracle전용 문법을 많이 사용하고 있으므로 Oracle 문법도 같이 비교하면서 Join을 정리해 본다. Employees 테이블 전체 행 (PK: EMPLOYEE_ID, FK: DEPARTMENT_ID) - 88번 row는 department_id가 nullNOEMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILDEPARTMENT_ID1198DonaldOConnellDOCONNEL502199DouglasGrantDGRANT503200JenniferWhalenJWHALEN104201MichaelHartsteinMHARTSTE205202PatFayPFAY206203SusanMavrisSMAVR.. [DB] Oracle Docker 이미지로 CDB, PDB 기반 설치하기 오라클 12c버전부터 Container Database, Pluggable Database 개념이 도입되어 하나의 Oracle Databse Instance에서 여러개의 스키마를 격리하여 설치할수 있게 되었다. Oracle 공식 Repository에서는 Docker Image를 제공하고 있으므로 이를 이용해서 Oracle을 설치해 보도록 한다. https://container-registry.oracle.com 위 주소가 공식 Repository 주소이다. 접속을 한 후에 Oracle 계정으로 Sign in을 한다. (계정이 없으면 생성 필요) 계정으로 로그인 한 후에 Database -> enterprise를 선택한 후 우측에 약관 동의에 동의를 수행한다. 이를 안하면 docker login시에 계속 .. [Oracle] 오라클 기본 명령어 #1 데이터 베이스 내 모든 테이블 DELETE 명령어 추출 SELECT 'DELETE FROM "' || TABLE_NAME || '";' FROM user_tables; 데이터 베이스 내 모든 테이블 DROP 명령어 추출 SELECT 'DROP TABLE "' || TABLE_NAME || '" CASCADE CONSTRAINTS;' FROM user_tables; 전체 테이블 DROP 후 시퀀스 삭제 purge recyclebin; 이전 1 2 다음