Language/SQL(27)
-
[SQL] Query 안의 Query - SubQuery
지금까지는 SELETE 절이나 WHERE 절을 사용해 필요한 데이터만을 추리거나 필요에 따라 데이터를 가공하는 과정을 거치도록 쿼리를 작성했다. 이는 당장 작성에는 괜찮을지 몰라도 추후에 다시 보거나 다른 이가 봤을 땐 한 번에 이해하기 어렵다는 문제를 갖는다. 그래서 SQL 에는 좀 더 보기 편한 쿼리를 작성할 수 있게 'SubQuery' 라는 것이 있다. 개인적으로 학습하고 느낀점은 SQL 만을 사용해서 데이터에 접근하지 않을 나로써는 딱히 마음에 드는 방식은 아니었다. 아무튼 'SubQuery' 에 대해 알아보자. 1. 기본 문법SELECT 컬럼명3, 컬럼명4 // A QueryFROM(SELECT 컬럼명1, 컬럼명2 // B QueryFROM 테이블명) AS 별명 기본 구조를 통해 파악해보면 'A..
2024.08.18 -
[SQL] 조건별 데이터 연산 - IF, CASE
Java 의 'if 문' 처럼 조건에 따라 다른 연산을 지정할 수 있는 방법이 SQL 에도 존재한다. 이번에는 조건을 지정하고 조건에 따라 다른 연산을 하는 방법에 대해 알아보자. 1. 기본 문법SELECT IF(조건식, 조건충족시, 조건불충족시) 별명, CASE WHEN 조건1 then 값1 WHEN 조건2 then 값2 ELSE 값3 ENDFROM 테이블명IF : 조건식을 지정하고, 해당 조건을 만족하는 참(true)일 경우의 값과 만족하지 않는 거짓(false)일 경우의 값을 지정해 참/거짓 여부에 따라 다른 연산을 할 수 있다.CASE : 다수의 조건을 지정하고 조건별로 만족시 수행되는 수식 또는 값을 지정할 수 있다. 지정 조건외의 모..
2024.08.16 -
[SQL] 문자 데이터 가공 - REPLACE, SUBSTRING, CONCAT
데이터 가공이라 해서 기존의 문자 데이터를 변경하는 의미가 아니다. 출력 결과를 내가 원하는 형태로 수정하는 느낌에 가깝다. 예를 들어 현재 내가 필요한 문자 데이터가 어떠한 형식을 요구 받는다면 해당 형식에 맞게 기존 문자 데이터를 가공한 결과를 출력 하는 것이다. 가공에는 특정 문자를 변경 또는 남길 수 있고, 문자를 합칠 수도 있다. 1. 기본 문법SELECT 원본 컬럼명, // 해당 컬럼은 가공 컬럼과 비교하기 위해 사용됨 REPLACE(대상 컬럼명, 현재문자, 바꿀문자) 별명, SUBSTRING(대상 컬럼명, 시작인덱스, 글자 수) 별명, CONCAT(붙일 문자1, 붙일 문자2, ..., 붙일 문자n) 별명FROM 테이블명REPLACE : 대상 컬럼에 있는 문자 ..
2024.08.16 -
[SQL] 카테고리별 필터링 - HAVING
이전에 배운 집계함수(SUM, AVG, COUNT 등)는 'WHERE' 문과 사용할 수 없기에, 'SELECT' 문과 함께 사용하였다. 그러면 'GROUP BY' 를 통해 그룹화(카테고리화)된 데이터에 그룹별로 조건을 적용해 결과를 얻는 방법은 없을까? 질문에 대한 해답을 찾기 위해 검색을 해보니 'HAVING' 이란 것이 있었고 의문을 해소 할 수 있었다. '아 이런게 있구나' 하고 넘기기엔 아쉬워 좀 더 알아보고 이렇게 게시글에 내용을 정리하게 되었다. 1. 기본 문법SELECT 그룹화 컬럼명, 집계함수(컬럼명) 별명FROM 테이블명GROUP BY 그룹화 컬럼명HAVING 집계함수(컬럼명) 조건식 기본적으로 'HAVING' 은 'WHERE' 과 같이 데이터를 필터링하는 조건절의 역할을 한다. 하지만..
2024.08.14 -
[SQL] 데이터 정렬 - ORDER BY
지금까지 출력된 결과 데이터를 보면 아마 데이터가 DB 에 저장된 순서로 출력 되었을 것이다. 하지만 실무에서는 필요에 따라 특정 조건 순서에 따라 출력된 결과를 보는 것이 업무에 더 효율적인 경우가 더러 있을 것이다. 이번에는 출력 결과를 Query 작성자가 원하는 순서대로 출력하는 방법에 대해 알아보자. 1. 기본 문법SELECT 컬럼명FROM 테이블명ORDER BY 정렬 대상 컬럼명 ASC // 'ASC' 는 생략 가능 'ORDER BY' 문에는 정렬을 원하는 컬럼명을 작성하면 된다. 'ASC' 는오름차순(점점 값이 커지는 순서)을 의미하며 생략이 가능하다(아마 기본 값이 'ASC' 인 것 같다). 반대 개념의 내림차순(점점 값이 작아지는 순서)은 'DESC' 를 사용하면 된다 2. 사용 예시2-..
2024.08.14 -
[SQL] 카테고리별 연산 - GROUP BY
지금까지 학습한 내용으로 음식점의 음식 종류(한식, 일식 등) 별로 음식 가격의 평균을 구하면 어떨까?SELECT cuisine_type, AVG(price)FROM food_ordersWHERE cuisine_type = 'Korean' 이런식의 쿼리를 'cuisine_type' 값의 가짓수 만큼 반복해야 할 것 이다. 이는 너무 비효율적인 작업이 될 것 이다. 개발자는 어떻게든 최소한의 쿼리로 원하는 결과를 얻기 위해 노력해야 하므로 우리는 'GROUP BY' 를 알아야 한다. 1. 기본 문법SELECT 카테고리화 할 컬럼명, 집계함수(계산 대상 컬럼명)FROM 테이블명GROUP BY 카테고리화 할 컬럼명 위에서 든 예시처럼 음식 종류마다 가격 평균을 구한다고 하면, '카테고리화 할 컬럼명' 에는 '..
2024.08.14