case when 함수

SELECT CASE WHEN 조건1 THEN 결과값1

                  WHEN 조건2 THEN 결과값2

                  ELSE 결과값3

                  END

FROM 테이블명

함수들 정리

함수 설명
sum
count 행 개수
min 최소값
max 최대값
avg 평균
truncate( , n ) 소수점 n자리까지 표시
round( , n ) 소수점 n 자리 지정 반올림
ceil 올림
floor 내림
abs 절대값
sign 양수는 1, 음수는 -1, 0은 0
length 문자열 길이
trim 앞뒤 공백 제거
upper 모두 대문자로
lower 모두 소문자로
left( , n) 왼쪽 n번째까지
right( , n) 오른쪽 n번째까지
replace 대체
lpad, rpad 특정 글자 반복
substring 문자열 자르기
concat 문자열 붙이기
concat_ws 문자열 사이에 값 넣기
curdate 현재 날짜 반환
curtime 현재 시각 반환
now 현재 날짜와 시각 반환
year 연도 반환
month 월 반환
day 일 반환
last_day 해당 월의 마지막 일 반환
weekday 요일 반환 월~일=0~6으로
dayname 요일 이름 반환
adddate 시간/날짜 덧셈
subdate 시간/날짜 뺄셈
datediff 두 시간/날짜 일 차이
timediff  두 시간/날짜 시간 차이
   

 

 

오름차순 데이터 조회

SELECT *

FROM 테이블명

ORDER BY 컬럼명 (ASC)

 

내림차순 데이터 조회

SELECT *

FROM 테이블명

ORDER BY 컬럼명 DESC

1. 비교연산자

비교연산자 기능
= 같다
!=, <> 다르다
< 보다 작다
<= 같거나 작다
> 크다
>= 같거나 크다
between 두 값 사이에 있다
is null null이다

 

2. 문법

숫자 데이터 필터링

SELECT *

FROM 테이블명

WHERE 컬럼명= 숫자

 

문자 데이터 필터링

SELECT *

FROM 테이블명

WHERE 비교컬럼명= ‘문자’

 

다조건 교집합 필터링

SELECT *

FROM 테이블명

WHERE 조건1 AND 조건2

 

다조건 합집합 필터링

SELECT *

FROM 테이블명

WHERE 조건1 OR 조건2

 

다조건 하나 이상 만족 데이터 필터링

SELECT *

FROM 테이블명

WHERE 비교컬럼명(NOT) IN (조건1, 조건2)

 

정규화 패턴 데이터 필터링

정규화 패턴 설명
'a%' a로 시작
'%z' z로 끝난다
'%def%' def 포함
'_b%' 2번 째 글자가 b
'a%z' a로 시작 z로 끝난다
'a_%_%' a로 시작하고 3글자 이상
SELECT *

FROM 테이블명

WHERE 컬럼명 LIKE 정규화 패턴

 

 

 

 

테이블의 모든 칼럼 조회

SELECT *

FROM 테이블명

 

테이블의 특정 칼럼 조회

SELECT 컬럼명1, 컬럼명2, 컬럼명3

FROM 테이블명

 

중복 제거된 컬럼 조회

SELECT DISTICNT 컬럼명1, 컬럼명2

FROM 테이블명

 

컬럼에 새로운 컬럼명으로 이름 바꿔 조회

SELECT 컬럼명 (AS) 새로운 컬럼명

FROM 테이블명

 

행 개수 제한해서 조회

SELECT 컬럼명

FROM 테이블명

LIMIT N

 

 

 

 

SQL이란?

Structured Query Language, 구조화 질의어

RDBMS의 데이터 관리를 위해 설계된 특수 목적의 프로그래밍 언어

RDBMS 데이터의 검색과 관리, 스키마 생성과 수정, 객체 접근 조정 등의 기능 수행

 

데이터베이스 용어

스키마(schema)

:엑셀의 문서와 같은 개념

테이블(table)

:엑셀의 시트와 같은 개념

로우(row)

:엑셀의 행과 같은 개념

칼럼(column)

:엑셀의 열과 같은 개념

스프링 부트 data jpa를 활용해 게시물 단건 조회 API를 만들던 중 발생한 에러다.

에러 메세지를 살펴보니 무한 재귀 문제임을 알 수 있었다.

양방향 다대다 관계를 일대다 다대일로 찢어서 연관관계 매핑을 한 칼럼이 있었는데 해당 객체를 response로 반환할 시

서로를 참조하며 무한 재귀 함수가 실행되는 문제였다.

 

@ManyToOne 칼럼에 @JsonIgnore 애노테이션을 추가해서 해결했다.

예시 코드는 아래와 같다.

    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "board_idx")
    private Board board;

   
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "stack_idx")
    private TechStack techStack;

 

참고사이트 

https://thalals.tistory.com/227

https://cupeanimus.tistory.com/57

 

+ Recent posts