DB(28)
-
[SQL] 채번 쿼리 작성 & COALESCE 사용 주의할 점
만약, 특정 테이블 기준으로 max+1을 수행하는 SQL을 작성하고자 한다.다만, 최초 생성 테이블의 경우는 row데이터가 미존재하므로 null을 고려한 쿼리를 작성하고자 한다.row데이터가 미존재시 1을 반환하고 , 존재한다면 그 값을 기준으로 +1을 출력하고자 한다고 가정하였을 때실수할만한 예시 SQL과 잘 작성된 SQL 예시를 기록해 두고자 한다. [실수예시]select max(COALESCE(no,0)) + 1from student;// row데이터 미존재시 출력결과 : null// row데이터 존재시 출력결과 : 1row데이터 미존재시 출력결과 null인 이유 :1) COALESCE(no,0) 은 row데이터존재&& 'no'컬럼이 null일 경우 0으로 치환 하지만, 위의 경우 row데이터가 아..
2025.05.24 -
[MySQL기동오류]MySQL서버가 기동은 되있지만 포트를 찾지 못하는 오류 해결
상황 (전날)스프링부트 기동 정상 실행 & MySQLWorkbench도 정상 작동 (당일) 아무것도 건들지 않고 스프링부트 기동시 오류 발생 & MySQLWorkbench에서도 서버상태 멈춰있는 상태로 실행안됨아무설정도 건든게 없고 MySQLWorkbench 도 동작을 안하는 거 보니, MySQL 서버 상태가 의심됨 - 오류내용(일부) : Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implem..
2025.05.18 -
[SQL] MySQL 날짜관련 함수 사용시 주의할 점
MySQL 에서 지원하는 DATE_ADD / DATE_SUB 사용시 INTERVAL 을 선언하여 시간 유형의 조합으로 많이 쓰이는데, 아무 생각 없이 INTERVAL 을 사용할 경우 주의가 필요한 사항이 있어 기록. [문제상황] 2월 같은 윤달의 경우 2월이 28일까지 있으면, 1월은 31일까지 존재하는데, 1월에 한 달을 더 할 경우 문제 발생 문제상황 : '2019-01-30 12:00:00' 와 '2019-01-31 11:00:00'의 경우 시간의 순서 상으로 전자 ('2019-01-30 12:00:00')가 먼저 발생하게 되는데, 두 날짜에 아래와 같이 1달을 더하는 함수를 적용할 경우 출력 값을 확인해보면 동일하게 1달을 더했지만 후자('2019-01-31 11:00:00') 의 출력값이 시간 ..
2023.12.13 -
[SQL] MySQL DATE_ADD(날짜 더하기) & DATE_SUB(날짜 빼기)
DATE_ADD (날짜 더하기), DATE_SUB(날짜 빼기) -- 날짜더하기 DATE_ADD([DATE 타입 대상컬럼] , INTERVAL [시간 유형]) -- 날짜빼기 DATE_SUB([DATE 타입 대상컬럼] , INTERVAL [시간 유형]) 기본 시간유형 - MICROSECOND(마이크로 초/백만분의 1초) - SECOND (초) - MINUTE (분) - HOUR (시) - DAY (일) - WEEK (주) - MONTH (달) - QUARTER (분기) - YEAR (년도) /* 기본 시간유형 사용 예제 */ -- 한 달 더하기 select DATE_ADD(NOW() , INTERVAL 1 MONTH) ; -- 한 달 빼기 DATE_SUB([DATE 타입 대상컬럼] , INTERVAL [시간..
2023.12.13 -
[SQL] SQL WITH RECURSIVE 사용
WITH 구문 WITH 구분 이후에 오는 쿼리에서 임시 테이블의 테이블명을 사용하여 값을 참조할 수 있음 WITH TABLE명 AS ( SELECT - ) WITH RECURSIVE 문 (재귀 쿼리) 프로그래밍에서 재귀 함수가 있듯이, SQL에서 사용하는 재귀쿼리 기법 WITH RECURSIVE 구분은 가상 테이블을 생성하면서 가상 테이블 자신의 값을 참조하여 재귀적으로 호출하는 방식 WITH [RECURSIVE] TABLE명 AS ( SELECT - # RECURSIVE 사용 시 필수. Non-Recursive 문장 :: 첫번째 루프에서만 실행됨 (초기값 세팅) [UNION ALL] SELECT - # Recursive 문장:: 읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동..
2023.12.12 -
[설치] h2 데이터베이스 설치방법
1. 사이트( https://www.h2database.com ) 접속 2. 원하는 버전 선택하여 다운로드 3. 다운로드된 h2-2019-10-14.zip 파일 압축풀기 4. ~/bin/h2.bat 실행하여 웹사이트실행확인 >h2.bat 만약 실행이 되지 않는다면, 사이트 URL(빨간색 밑줄) 'localhost' 변경 후 실행 확인 '연결' 5. '연결' 후 window 홈 경로 이동후 'test.mv.db' 생성 확인 >cd %userprofile% >dir 6. 최초접속 이후 시점 부터 접속 안될경우 'JDBC URL ' 변경 후 '연결' JDBC URL : jdbc:h2:tcp://localhost/~/test
2023.03.09