본문 바로가기

DB

(7)
MariaDB 모든 날짜 생성하기 - 삽질중인 개발자 - WITH RECURSIVE 구문을 사용하여 모든 날짜 데이터를 생성하는 방법 - MariaDB에서 더미용 모든 날짜를 생성하는 방법에 대해서 포스팅한다. WITH RECURSIVE 구문을 사용하여 데이터를 생성하는 건데 MariaDB 10.2.1 부터 WITH RECURSIVE 구문을 사용 할 수 있다 더미 데이터를 생성하는 SQL은 아래와 같은 형태이다. WITH RECURSIVE DT_TABLE AS ( SELECT ${시작일} dt, 1 lv FROM dual UNION all SELECT DATE_ADD('2020-09-12 00:00:00', INTERVAL DT_TABLE.lv ${시간/일 단위}) dt, DT_TABLE.lv+1 AS lv FROM DT_TABLE WHERE DT_TABL..
MySQL (MariaDB) 두 날짜 사이 일수, 주말(평일) 일수 구하기 - 삽질중인 개발자 - 두 날짜 사이 차이, 주말, 평일 일 수 구하기 - mariaDB에서 두 날짜 사이의 차이와 주말, 평일 일수를 구하는 방법입니다. 1. 두 날짜 사이 일수 구하기 SELECT ABS(DATEDIFF('2020-01-01','2020-02-01'))+1 2. 두 날짜 사이 주말 일수 구하는 함수 CREATE FUNCTION F_TOTAL_WEEKDAYS(date1 DATE, date2 DATE) RETURNS INT RETURN ABS(DATEDIFF(date2, date1)) + 1 - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY), ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 ..
오라클 한글 초성 검색 방법 , DB 초중종성 검색 방법 - 삽질중인 개발자 - 오라클에서 한글 초중종성 검색 방법 - 오라클에서 한글 초중종성 검색을 구현하는 방법이다. 함수를 사용한 방법으로 초성, 중성, 종성의 문자를 추출하여 비교하는 방식이다. 가장 베스트 방법은 처음부터 검색될 단어의 초성을 저장하고 있는 것이지만 DB 구조가 그렇지 않다면 아래와 같은 방식으로 구현한다. 아래의 함수에서 약간 수정하면 초성용 함수도 만들 수 있다. 1. 한글을 초중종성으로 나눠주는 FUNCTION 생성 아래의 초성을 나누는 함수를 살짝 수정해서 원하는 방식으로 구현하면 됩니다. CREATE OR REPLACE FUNCTION FN_GET_KOREA_SYLLABLE ( i_p1 IN VARCHAR2 ) RETURN VARCHAR2 AS l_rt VARCHAR2 (4000); FUNCTIO..
오라클 11g xe 다운로드 사이트, oracle 11g xe 다운로드 사이트 - 삽질중인 개발자 오라클 11g xe 다운로드 사이트 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html Database Software Downloads | Oracle Oracle Database 11g Release 2 Standard Edition, Standard Edition One, and Enterprise Edition 7/13: Patch Set 11.2.0.4 for Linux and Solaris is now available on support.oracle.com. Note: it is a full installation (you do not need to download 11.2.0.1 first)..
SELECT 쿼리 실행 순서 - 삽질중인 개발자 SQL을 다루기 위해서는 SQL의 실행순서를 알고 있는게 가장 중요하다. SQL의 실행 순서에 맞게 쿼리를 짜야지 불필요한 과정이 없어지므로 쿼리 실행 속도가 빨라진다. SELECT 컬럼2 FROM 테이블1 WHERE 컬럼1 = 조건 GROUP BY 컬럼2 HAVING COUNT(*) > 1 ORDER BY 컬럼2 ORDER BY 컬럼2 DESC 위와 같은 SELECT문이 있을 때 1. FROM 절이 가장 먼저 실행 된다. 2. WHERE 절로 조건에 맞게 걸러낸다. 3. GROUP BY 구문에 맞게 그룹화를 한다. 4. HAVING 그룹화된 것 중에 조건에 맞게 걸러낸다. 5. SELECT 위에 과정을 거치고 남은 데이터를 출력한다. 6. ORDER BY 출력된 데이터를 정렬한다. FROM -> WHE..
오라클 컬럼 합치기 ( 오라클 listagg ) - 삽질중인 개발자 - 오라클 컬럼 합치는 방법 - 프로그램을 짜다보면 DB에서 조회시 특정 컬럼만 합쳐서 나오게 하고 싶은 경우가 있다. 여러개의 행으로 된 값을 한개의 행으로 합쳐서 가지고 와야하는 경우. 이런경우 오라클에서는 listagg 를 사용하면 편하다. ​ 단 listagg 는 오라클 11g 이상 부터 지원하는 기능이다. 이전 버전에서는 wm_concat 을 사용해야 한다. 우선 사용된 테이블 입니다. -- oracle 11g 기준입니다. -- 부서 테이블(tbl_department), 사원 테이블(tbl_employee_info) 이 있습니다. -- 부서 테이블의 departmentSeq는 사원 테이블의 departmentSeq 참조 되어 있습니다. create table tbl_department( depa..
오라클 페이징 쿼리, 오라클 paging 방법 - 삽질중인 개발자 - 오라클 페이징 쿼리 정리 - 쿼리를 작성하다 보면 SELECT 된 결과에서 순번을 매겨야 하는 경우가 있다. ex) paging 이러한 경우 오라클에서는 ROWNUM , ROW_NUMBER() OVER() , RANK OVER(), DENSE_RANK() OVER 등을 지원하고 있다. 1. 테이블 생성 정보와 데이터 --사용 중인 DB는 oracle 11g -- 테스트용 쿼리 문 create table tbl_student_info( seq number primary key, height number, weight number, name varchar2(30), etc varchar2(500) ); --인서트문 insert into tbl_student_info(seq, height,weight, n..