Language(36)
-
[SQL] 테이블 합치기 - JOIN
테이블은 목적에 따라 여러 속성을 가지고 있다. 하지만 현재 필요로 하는 속성이 다른 테이블에 있는 경우가 더러 있다. 이럴 때 두 테이블의 공통 속성을 기준으로 테이블의 데이터를 합친 결과 데이터를 조회할 수 있다. 0. JOIN 의 종류 나의 경우 JOIN 에 대해 이해할 떄 위와 같은 그림을 통해 이해하였다. 그저 외우기보다 그림을 보면 각 상황에 결과 테이블이 어떻게 생성될지 생각을 반복했다. 종류가 굉장히 많아 보이지만 일단 'LEFT JOIN' 과 'RIGHT JOIN' 중에 하나만 이해하면 반대되는 개념도 쉽게 이해 가능했다(나의 경우에는 LEFT JOIN 을 기준으로 학습했다). 그림을 통해 자주 사용하는 2가지 JOIN 을 정리했다.(INNER) JOIN : 'JOIN' 또는 INNER..
2024.08.19 -
[SQL] 날짜/시간 데이터 다루기 - YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, NOW, CURRENT_DATE, CURRENT_TIME
SQL 에서는 날짜 데이터를 어떻게 다룰까? 지금까지 학습을 하면서, 분명 보이는 것은 문자열 보이지만 실제로 'datetime' 타입인 경우를 많이 접할 수 있었다. 자연스레 'datetime' 에서 '원하는 값만 뽑아 쓸 수 없을까?' 라는 생각이 들었고 해당 내용을 따로 찾아 이렇게 정리하게 되었다. 날짜 및 시간 데이터를 다루는 함수들은 많지만 가장 기본적인 함수들에 대해서 다루었다. 0. 데이터 타입(자료형) 날짜 및 시간을 표현하는 데이터 타입에는 여러가지가 있지만 그 중 가장 기본적이고 보편적으로 사용하는 타입들에 대해 이야기 해보자.DATE : 날짜 정보를 갖는 타입이다. 'YYYY-MM-DD' 형식을 사용한다.TIME : 시간 정보를 갖는 타입이다. 'HH:MM:SS' 형식을 사용한다.D..
2024.08.18 -
[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