본문 바로가기
반응형

Database37

[MySQL]서브쿼리보다 가독성 좋은 WITH 구문 SQL을 다루다 보면 복잡한 쿼리를 작성할 일이 많다. 특히 서브쿼리를 여러 번 중첩해서 쓰면 가독성이 떨어지고, 유지보수도 어렵다. 이럴 때 유용한 기능이 바로 CTE(Common Table Expression), 즉 WITH 구문이다. ◾ 참고 ◾ CTE(Common Table Expression)는 쿼리 안에서 일시적으로 이름 붙인 결과 집합을 뜻하는 개념이고,우리가 흔히 사용하는 WITH 구문은 바로 이 CTE를 정의할 때 사용하는 SQL 문법이다. 🤷‍♀️WITH 구문이란?WITH 구문은 일시적인 테이블(임시 결과 집합)을 만들어 쿼리에서 재사용할 수 있도록 해준다. 보통 서브쿼리를 대체하는 용도로 사용하며, 가독성을 높이고 성능 최적화에도 도움이 될 수 있다. 🔸기본 문법WITH 임시_.. 2025. 5. 22.
[MySQL]GROUP_CONCAT()과 FIND_IN_SET() 👨‍💻 MySQL에서 GROUP_CONCAT과 FIND_IN_SET 활용하기개발을 하다 보면 하나의 컬럼에 여러 개의 값을 저장하는 경우가 생긴다.예를 들어, 실무에서 논문의 페이지 정보를 한 컬럼에 파이프(|)로 구분한 문자열로 저장해야` 했었다.이때 유용하게 사용할 수 있는 SQL 함수가 GROUP_CONCAT()과 FIND_IN_SET()이다. 1️⃣ GROUP_CONCAT() 함수GROUP_CONCAT()은 여러 행의 값을 하나의 문자열로 합치는 함수이다.기본적으로 각 행의 값을 콤마(,)로 연결해서 하나의 문자열로 만든다.SELECT GROUP_CONCAT(column_name ORDER BY column_name SEPARATOR ', ') FROM table_name;ORDER BY co.. 2025. 5. 20.
[MySQL]중복 제거 시 사용하는 DISTINCT 🤔 DISTINCT란?DISTINCT는 중복된 행을 제거하여 유일한 결과만 반환한다.기본 문법은 아래와 같음.SELECT DISTINCT 컬럼1, 컬럼2, ...FROM 테이블명;  👨‍💻 DISTINCT 예시SELECT DISTINCT o.customer_id, o.order_id, o.delivery_status, COUNT(o.product_id) OVER ( PARTITION BY o.customer_id, o.order_id, o.delivery_status ) AS product_countFROM orders oWHERE o.is_cancelled = 'N'; DISTINCT를 활용해, 고객 ID, 주문 ID, 배송 상태가 동일한 경우 중복을 .. 2025. 4. 3.
[ERD Tool]DA#Modeler로 논리/물리ERD 생성하기 (DB리버스 활용-MySQL) DA#Modeler의 기업용 라이선스가 있어, 해당 툴로 논리/물리 ERD를 생성해보아서 정리해보려고 한다.처음에 파일 리버스를 활용해 그리려고 했는데, 테이블 정의서와 컬럼 정의서가 각각 따로 필요했다.테이블 정의서는 있었지만 컬럼 정의서가 없어, 이걸 새로 만들어서 해야하나 고민하던 찰나 옆에 DB리버스라는 버튼이 보였다. DB리버스는 DB만 ODBC를 이용해 연결하면 다른 어떤 설정도 필요없이 바로 ERD 초안을 그려준다.  💡DB리버스 활용법 1. DB리버스를 클릭하면 아래와 같은 창이 뜬다.   1-1. ODBC가 세팅되어 있다면, 아래 입력 칸들을 채우면 된다.          내가 쓰는 DBMS인 MySQL 선택해주고, Data Source 에는 접속 IP 주소 입력해주고, DB사용자명과 .. 2025. 3. 20.
[MySQL]DATE_FORMAT 함수 🔅DATE_FORMAT 함수MySQL에서 날짜와 시간을 포맷할 때 사용하는 DATE_FORMAT 함수에서는 대소문자에 따라 다음과 같은 차이가 있음%Y: 4자리 연도 (예: 2024)%y: 2자리 연도 (예: 24)%m: 2자리 월 (01부터 12까지)%M: 월 이름 (예: January, February)%d: 2자리 일 (01부터 31까지)%D: 일에 붙는 접미사 (1st, 2nd, 3rd, ...)%c : 한 자리 또는 두 자리 월을 표시합니다. (예: 1부터 12까지)   %e : 한 자리 또는 두 자리 일을 표시합니다. (예: 1부터 31까지) SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date; -- 2024-06-28SELECT DATE_FO.. 2024. 8. 30.
[MySQL] IFNULL 함수 (Oracle의 NVL과 같은 역할) MySQL에서는 NULL 값을 대체할 때, IFNULL이라는 함수를 사용할 수 있음.IFNULL(컬럼명, '대체값');  예시를 들어보면, INCOME(월급)이라는 컬럼에 값이 없으면 NULL이 아닌 0이 들어가게 하고 싶다?! 아래와 같이 쓰면 된다. 그러면 INCOME에 들어갈 값이 없으면 무조건 0이 들어가게 된다.수입 0...이 되고 싶지 않으면 일하자 😂IFNULL(INCOME, 0);   +참고) 이와 같은 함수가 오라클에도 있음! 오라클에서는 null값을 대체 할 때, NVL 함수를 쓸 수 있음. 이건 이전에 공부했었으니 아래 포스팅을 보자 !  아래 참조!🔽🔽2023.11.29 - [Database/Oracle SQL] - [SQL-Oracle]함수(Function) - 일반함수 -N.. 2024. 6. 4.
반응형