문과생의 코딩노트
close
프로필 배경
프로필 로고

문과생의 코딩노트

    • 분류 전체보기 (115) N
      • DB (16)
        • Oracle (6)
        • MSSQL (9)
      • 코딩공부 (24)
        • JAVA (16)
        • HTML&CSS (2)
        • C# (1)
        • JS (1)
        • [국비지원] 토이프로젝트 (3)
      • AI에 대한 내 머릿속 (1)
      • 투자기록 (1) N
      • Computer (14)
      • IT issue (7)
      • 기타 (19)
      • 블로그 운영 (16)
      • Gemini (14)
  • mode_edit_outline글작성
  • settings환경설정
  • 홈
  • 코딩공부
  • 블로그운영
  • 방명록

MSSQL JOIN 잘못 써서 데이터 뻥튀기 되는 이유 (중복 문제)

운영에서 합계가 안 맞는다고 연락 온 적이 있다.금액 자체는 맞는데조회하면 합계가 계속 더 크게 나온다.처음엔 데이터 중복인 줄 알았는데원인은 쿼리였다.문제 쿼리는 이런 형태였다.※ 아래 쿼리는 실제 업무에서 사용하는 테이블과 다르며, 이해를 위해 단순화 및 각색한 예시입니다.SELECT A.OrderNo, SUM(A.Amount) AS TotalAmtFROM OrderMaster AJOIN OrderDetail B ON A.OrderNo = B.OrderNoGROUP BY A.OrderNo겉보기엔 문제 없어 보인다.근데 결과가 이상하게 나온다.원인핵심은 이거다.👉 JOIN하면서 데이터가 늘어난다예를 들어:OrderMasterOrderNoAmount100110000OrderDetailOrd..

  • format_list_bulleted DB/MSSQL
  • · 2026. 4. 10.
  • textsms

MSSQL 계산식 하나 때문에 쿼리 전체가 터진 이유 (0으로 나누기 오류)

실무에서 계산식 하나 때문에 쿼리가 아예 죽은 적이 있다.특별한 로직도 아니고 그냥 비율 계산이었다.SELECT (RealAccountAmt / TotalAmt) * 100 AS RateFROM SomeTable처음엔 데이터 문제인 줄 몰랐다.근데 실행할 때마다 쿼리가 터졌다.에러는 이거 하나였다.Divide by zero error encountered.원인원인은 단순했다.→ TotalAmt = 0인 데이터가 하나라도 있으면 전체 쿼리가 죽는다.이게 무서운게 뭐냐면한 건만 있어도 전체 결과가 안 나온다.특히 집계 데이터나 금액 계산에서는 이런 케이스 생각보다 자주 나온다.해결 방법이럴 때 제일 간단하게 처리하는 방법이 NULLIF다.SELECT (RealAccountAmt / NULLIF..

  • format_list_bulleted DB/MSSQL
  • · 2026. 4. 9.
  • textsms

MSSQL 트랜잭션 로그 축소

https://yongblog.tistory.com/72 MSSQL MDF, LDF SHRINK 파일 용량 줄이기일반적으로 MSSQL 은 데이터 파일 MDF / 로그 파일 ( 트랜잭션 ) LDF 로 나뉘어 집니다. ​ 간혹가다 LDF 파일의 용량이 너무 늘어나 디스크 용량을 다 사용하게되어 장애가 나는 상황이 발생합니다.yongblog.tistory.com 가끔 DB 로그가 꽉찼을때 확인하자..

  • format_list_bulleted DB/MSSQL
  • · 2025. 1. 13.
  • textsms

MSSQL 한글 포함 컬럼 값 WHERE 문

SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[가-힣]%' -- 한글 정규식 SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[A-Za-z]%' -- 영문 정규식 출처: MS SQL 영문 한글 구분하기 / 영어 한글 구분 (정규식) SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[가-힣]%' -- 한글 정규식 SELECT * FROM 테이블 WHERE 컬럼 LIKE '%[A-Za-z]%' -- 영문 정규식 데이터가 한글인지 영문인지 판별하고 싶다면, 정규식을 이용하여 LIKE 문으로 taewooblog.tistory.com

  • format_list_bulleted DB/MSSQL
  • · 2024. 1. 24.
  • textsms

MSSQL/SSMS 쿼리 정렬 사이트

https://poorsql.com/ Poor SQL - Instant Free and Open-Source T-SQL Formatting poorsql.com 쿼리문을 입력하면 자동으로 정렬을 해준다. 동적 쿼리를 사용하는 경우는 사용에 유의할 필요가 있어보인다

  • format_list_bulleted DB/MSSQL
  • · 2024. 1. 19.
  • textsms

mssql update select

https://ssuk0216.tistory.com/28 [MSSQL] select된 값으로 update하기 [MSSQL] select된 값으로 update하기 오늘 sql문을 작성하다가 select된 값으로 update를 해야할 일이 생겨서 update하는 방법과 select된 값으로 update하는 방법에 대하여 알려드리겠습니다. 우선, 1. 일반적인 ssuk0216.tistory.com update 할 때 다른 테이블에서 select한 값을 넣는 방법

  • format_list_bulleted DB/MSSQL
  • · 2024. 1. 9.
  • textsms

[DB] Nested loop join과 Index의 관계

Nested loop join과 Index의 관계 DB를 다루다 보면 필연적으로 테이블 간의 조인을 하게 된다. 이 과정에서 Nested loop join을 사용하게 되는데 두 테이블 중 하나의 테이블에만 인덱스가 존재하고 하나의 테이블에는 인덱스가 없다면 DB 옵티마이져는 어느 테이블로 드라이빙할까? 1. 인덱스가 있는 A 테이블에서 인덱스가 없는 B 테이블로? ( A -> B ) 2. 인덱스가 없는 B 테이블에서 인덱스가 있는 A 테이블로? ( B -> A ) 답은 2번 인덱스가 없는 B 테이블에서 인덱스가 있는 A 테이블 순서로 join 하게 된다. 이유는 다음과 같다고 생각하면 된다고 한다. DB 옵티마이저가 항상 가장 효율적으로 동작한다고 생각하게 되면 인덱스가 있는 A 테이블에서 인덱스로 검색..

  • format_list_bulleted DB
  • · 2023. 7. 7.
  • textsms
MSSQL 프로시저가 이유없이 느려졌을때

MSSQL 프로시저가 이유없이 느려졌을때

테이블과 프로시저를 수정하고 작성하는 와중에 정상적으로 작동하던 프로시저가 느리게 동작하는 현상이 발생했다. 만 건도 넘지 않는 적은 양의 데이터인데 조회하는데 3초에서 10초가량 시간이 소요됬다. 이런 현상을 해결하기 위해 검색을 하던도중 with recompile을 발견했다. 프로시저 실행시 생긴 인덱스와 테이블 데이터 변경에 따라 바뀐 테이블 인덱스를 따라오지 못해서 일어날 수 도 있는 현상이란다. 아무튼 with recompile을 사용해서 즉각적으로 프로시저 속도가 정상적으로 변했다. 사용방법은 간단하다 저장 프로시저에 들어가서 아래와 같이 with recompile을 넣고 프로시져를 실행하면된다 ALTER PROCEDURE [dbo].[WithRecompile_TEST] @Year Varcha..

  • format_list_bulleted DB/MSSQL
  • · 2023. 2. 6.
  • textsms
나만 보려고 메모하는 MSSQL 팁들

나만 보려고 메모하는 MSSQL 팁들

[혹시 업데이트 실수 했을 때] 이런일은 없어야... Mssql (업데이트한 데이터 백업, 로그파일 없이) 복구하기 어느날 잠깐 쉬러나왔다가 사무실로 돌아오니까 선배가 심각한표정으로 불렀다. 순간 '아 x됐다 뭐잘못했지?' 나보고 xx씨 이거 xx씨가 업데이트쳤어요? 보니까 내가한거였다. 실서버로 돌아가는 ajh322.tistory.com [Update, Delete 트랜젝션으로 실수 막기] BEGIN TRAN으로 큰일 치루는 상황은 막을 수 있음 [Trouble Shooting][DB][MSSQL] BEGIN TRAN 에 관한 삽질 이 글을 읽기 전에 트랜잭션에 관해 작성한 글을 읽는 것을 추천한다. 오늘 회사에서 운영 업무를 하며, 게시글 하나를 지워 달라는 요청이 들어왔다. 해당 게시글이 DB에서 ..

  • format_list_bulleted DB/MSSQL
  • · 2022. 12. 26.
  • textsms
엑셀을 이용한 Insert문 쉽게 만드는 방법

엑셀을 이용한 Insert문 쉽게 만드는 방법

구글링을 하다가 찾은 방법입니다. 많은 데이터를 한 번에 처리 하기 좋아보여 저장! 엑셀에서 INSERT 쿼리문 만들기 엑셀 데이터를 DB에 집어넣기 위한 자료 만들어보는 방법이다. 먼저 테이블 구조를 살펴보자.네이버지식인에서 문의한 테이블 구조를 가지고 작성한다.CREATE TABLE IF NOT EXISTS `test` ( `uid` int(11) NOT N link2me.tistory.com

  • format_list_bulleted DB/MSSQL
  • · 2022. 12. 20.
  • textsms
ORA-12899: value too large for column

ORA-12899: value too large for column

ORA-12899 에러 코드가 나타났습니다. ORA-12899: value too large for column "SCOTT"."MEMBER"."ADDRESS1" (actual: 55, maximum: 50) 해결책 컬럼의 크기와 입력한 데이터의 크기를 비교하고 필요에 따라 컬럼의 크기를 키우거나 입력할 데이터를 작게 만들면 해결됩니다 지금의 경우는 테이블을 만들때 정한 컬럼의 크기를 작게 설정한 탓이었습니다. 원래 varchar2(50)이였던 address1 컬럼을 varchar2(80)으로 늘려서 다시 데이터를 입력하니 오류가 사라졌습니다.

  • format_list_bulleted DB/Oracle
  • · 2022. 6. 30.
  • textsms
Oracle Error: ORA-00927: missing equal sign

Oracle Error: ORA-00927: missing equal sign

에러내용: ORA-00927: missing equal sign 에러 내역 그대로 equal 등호가 없어서 나타난 오류다. sql문 작성 시 오타가 있는지 항상 확인해보자. 빨간 박스 안에 = 기호를 빼먹었다. eqaul 기호를 삽입하고 실행하니 오류가 해결됬다.

  • format_list_bulleted DB/Oracle
  • · 2022. 6. 21.
  • textsms
  • 1
  • 2
전체 카테고리
  • 분류 전체보기 (115) N
    • DB (16)
      • Oracle (6)
      • MSSQL (9)
    • 코딩공부 (24)
      • JAVA (16)
      • HTML&CSS (2)
      • C# (1)
      • JS (1)
      • [국비지원] 토이프로젝트 (3)
    • AI에 대한 내 머릿속 (1)
    • 투자기록 (1) N
    • Computer (14)
    • IT issue (7)
    • 기타 (19)
    • 블로그 운영 (16)
    • Gemini (14)
250x250
인기 글
최근 글
태그
  • #자바
  • #CPU
  • #java
  • #Oracle
  • #코딩
  • #티스토리
  • #AMD
  • #자바공부
  • #라이젠
  • #코딩공부
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바