반응형
개발을 하다 SQL의 새로운 기능들 알게되어 정리해봅니다.
서브쿼리
mysql 에서는 쿼리 내부에 또 다른 쿼리를 포함시켜 사용하여 기능을 확장할 수 있습니다.
EX) select cst_code, (select * from pet B where A.cst_code = B.cst_code) from reserve A
GROUP_CONCAT
mysql 에서는 데이터베이스에서 가져온 결과가 여러 행일 때, 이 행들을 합쳐서 하나의 필드로 만드는 기능이 있습니다.
아래 예시의 pet_type1, pet_type2 처럼 가져오기를 원하는 컬럼을 적고, 쉼표 뒤에 "원하는 문자" 에서 처럼 원하는 문자를 넣어 하나의 필드로 데이터를 합칠 수 있습니다.
select group_concat(pet_type1, "원하는 문자", pet_type2, "원하는 문자") from reserve
조건문
IFNULL
mysql 에서는 데이터베이스에서 가져온 결과가 null일 때 다른 데이터로 치환할 수 있는 기능을 제공합니다.
select cst_code, IFNULL((select * from pet B where A.cst_code = B.cst_code), "noValue") from reserve A
CASE
mysql에서는 복잡한 조건 구조를 구현하기 위해 CASE를 사용합니다.
case 선언문 오른쪽에 비교할 값(cst_code)를 할당하면, WHEN 절의 값(codevalue,codevalue2)과 비교하여 동등하면 THEN 절이 실행되고, 그렇지 않다면 ELSE 절이 실행됩니다.
마지막으로, END 선언문을 통해 CASE 선언문을 종료할 수 있습니다.
select cst_code,
CASE cst_code
WHEN 'codeValue' THEN "test1"
WHEN 'codeValue2' THEN "test2"
ELSE "test3"
END AS case_test
from reserve A
출처
반응형
'데이터베이스 > Mysql' 카테고리의 다른 글
[MySQL] 데이터 형식 (0) | 2021.11.11 |
---|---|
[MySQL] AUTO_INCREMENT 값 초기화하기 (0) | 2021.06.09 |
[MySQL] comments & show, 테이블과 컬럼에 주석 달고 조회하기 (0) | 2020.12.11 |
[MySQL] SUBSTR(), DAYOFWEEK() 날짜 데이터에서 요일 출력하기 (0) | 2020.03.23 |
댓글