본문 바로가기

전체 글

(10)
[Oracle] 오라클 ANSI JOIN vs Oracle JOIN JOIN이란? 두 개의 연관이 있는 테이블을 연결하여 새로운 행 집합 즉, 새로운 테이블 형태의 데이터를 추출하는 기능 ANSI SQL이란? 모든 DB에 공용으로 사용할 수 있는 SQL 표준으로 테이블 조인관계는 FROM ~ ON ~ 에서 기술하고 WHERE절에서는 데이터를 필터링 하는 조건만 기술하므로 Oracle JOIN 방식보다 가독성이 좋고 SQL 표준 방식이기 때문에 Oracle에서 뿐만 아니라 모든 DB에서 사용이 가능하다. ※ Oracle 10g부터 ANSI JOIN 사용이 가능하다. Oracle JOIN이란? Oracle에서만 제공하는 JOIN방식으로 테이블 조인관계를 FROM절과 WHERE절에서 기술한다. 사용자마다 다르지만 웬만하면 ANSI SQL보다 쓰기 편하다. ※ Oracle 9i..
[Oracle] Oracle LISTAGG 함수 (List Aggregate) LISTAGG()란? 그룹으로 묶여있는 데이터를 한 줄에 나타내는 함수 (그룹함수) 예를 들어 회사 직원을 부서별로 묶어 그 부서의 직원 이름을 홍길동 - 김길동 - 박길동 - 서길동 이런 식으로 한 줄에 나타낼 수도 있다. 오라클 11gR2 버전 이전에는 WM_CONCAT이라는 함수를 사용하였지만 11gR2 버전 이후부터 WM_CONCAT 기능은 사라졌고 LISTAGG 함수를 사용할 수 있다. 샘플 데이터 CREATE TABLE product( product_code VARCHAR2(100) NOT NULL, name VARCHAR2(100) NOT NULL, category VARCHAR2(100) NOT NULL, PRIMARY KEY(product_code) ) INSERT INTO product..
[Oracle] Analytic Functions 3 (분석 · 집계 함수) 분석함수 실습 지금까지 배워왔던 분석함수로 간단한 예제를 만들어 풀어보려고 한다. 간단한 회사 사원들의 실적 데이터를 만들어 보았다. 샘플 데이터 CREATE TABLE employee( emp_id NUMBER NOT NULL, -- 사원번호 emp_name VARCHAR2(10) NOT NULL, -- 사원이름 dep_name VARCHAR2(100) NOT NULL, -- 부서명 score NUMBER NOT NULL, -- 실적점수 PRIMARY KEY(emp_id) ); INSERT INTO employee VALUES(101, '이태영', '사업부', 820); INSERT INTO employee VALUES(102, '신지은', '사업부', 682); INSERT INTO employee ..
[Oracle] Analytic Functions 2 (분석 · 집계 함수) Analytic Functions 데이터의 통계적인 자료를 분석하고 집계하는 기능이다. 실무에서도 많이 사용되어지고 있다. 1. ROWNUM vs ROW_NUMBER() 2. RANK() vs DENSE_RANK() 3. LAG() vs LEAD() 4. FIRST_VALUE() vs LAST_VALUE() 샘플 데이터 CREATE TABLE school( student_id NUMBER NOT NULL, -- 학번 dep_name VARCHAR2(100) NOT NULL, -- 학과명 grade NUMBER NOT NULL, -- 학년 score NUMBER NOT NULL, -- 성적 PRIMARY KEY(student_id) ); INSERT INTO school VALUES(101, '컴퓨터공학과..
[Oracle] Analytic Functions 1 (분석 · 집계 함수) Analytic Functions 데이터의 통계적인 자료를 분석하고 집계하는 기능이다. 실무에서도 많이 사용되어지고 있다. COUNT(), OVER(), OVER( PARTITION BY ), OVER( ORDER BY ) 샘플 데이터 CREATE TABLE school( student_id NUMBER NOT NULL, -- 학번 dep_name VARCHAR2(100) NOT NULL, -- 학과명 grade NUMBER NOT NULL, -- 학년 score NUMBER NOT NULL, -- 성적 PRIMARY KEY(student_id) ); INSERT INTO school VALUES(101, '컴퓨터공학과', 2, 2); INSERT INTO school VALUES(102, '컴퓨터공학과..
[Oracle] Oracle 계층형 쿼리(Hierarchical Query) - START WITH, CONNECT BY Oracle 계층형 쿼리란? 계층형 구조는 상하 수직관계의 트리형태의 구조로 이루어진 형태를 말한다. 예를 들어 특정회사의 개발부서가 나열되어 있을 시 테이블에 저장된 데이터를 계층형 구조로 반환하는 쿼리를 말한다. 오라클에서의 계층형 쿼리는 START WITH ... CONNECT BY 절로 생성할 수 있으며 계층형 정보를 표현하기 위한 목적으로 오라클 8부터 지원된다. 샘플데이터 생성 개발부 - 모바일 개발팀 - 쇼핑몰(모바일) - 전산지원팀 - 웹 개발팀 - 외주SI - 구축 1팀 - 구축 2팀 - 쇼핑몰 - 시스템 개발팀 - ERP시스템 위와같은 구조로 부서 테이블을 생성 한다. CREATE TABLE dep ( dep_no NUMBER NOT NULL, // 부서코드 parent_no NUMBE..
Spring Boot 외부 경로 매핑하기 (File.getRealPath()가 안될 때) Spring Boot 외부에 있는 파일에 접근할 때 ChaOreum 웹프로젝트를 배포하니 이런 에러가 생겼다. 게시글에 이미지를 올리거나 파일을 업로드 시 500에러가 난 것을 확인했다. 삽질 시작! 1. 로컬 서버 테스트 localhost 환경에서는 정상 작동한다. 2. 배포 서버로 들어가 오류를 확인한다. 오류 내용을 보니 2022-11-08 16:49:50.995 ERROR 39681 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed..
Functional Interface(함수형 인터페이스)와 Lambda Expressions(람다 표현식) 2 Java가 기본으로 제공하는 함수형 인터페이스 java.util.function 패키지 Function BiFunction Consumer Supplier Predicate UnaryOperator BinaryOperator Function 1. T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스 1-1. R apply(T t) 이 맥락에선 Integer를 받아서 Integer로 리턴한다. import java.util.function.Function; public class Plus10 implements Function { @Override public Integer apply(Integer integer) { return integer + 10; } } 람다 표현식을 쓰지 않은 기본적인 구현 방법..