[SQL] ORACLE MERGE INTO 사용
개발/DB&SQL
/ 2024. 11. 7.
오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있습니다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있습니다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있습니다. 1. 동일한 테이블 구조를 가지고 있는 테이블로부터 데이터를 옮기는 쿼리MERGE INTO TABLE1 T1 USING TABLE2 T2 ON (T1.COLUMN1 = T2.COLUMN1 AND T1.COLUMN2 = T2.COLUMN2) WHEN MATCHED THEN UPDATE SET T1.COLUMN3 = T2.COLUMN3 WHEN NOT MATCHED THEN INSERT (T1.CO..
[Firebase] 데이터베이스 비교 (Realtime vs Cloud Firestore)
개발/DB&SQL
/ 2024. 10. 4.
최근에 Flutter 기반 1인 앱을 개발하면서 서버리스(Serverless)에 대해 알아보게 되었습니다. 보통은 서버를 직접 개발했기 때문에, 관련 플랫폼인 Firebase나 Supabase 등은 저의 관심 밖이었습니다. 하지만 혼자 개발을 하다보니 전체 영역을 다루는 것은 쉽지 않았습니다. 특히 Flutter의 빠른 개발을 특징으로, 프로토타입 단계를 목표할 때에는 서버를 직접 개발하는 것이 전략상 맞지 않음을 느꼈습니다.뿐만 아니라 Firebase의 다양한 서비스(Analysis, 보안, Database 등)를 실습해보니, 놀랍고 편리한 기능이 정말 많았습니다. 오늘은 Firebase에서 제공하는 2가지의 데이터베이스 솔루션에 대해서 알아보겠습니다.[Realtime Database(실시간 데이터베..
[SQL] 여러 개 데이터를 1개의 행(Row)으로 출력하기 (Oracle, Mysql, PostgreSQL)
개발/DB&SQL
/ 2024. 6. 29.
오늘은 여러 개의 데이터를 1개 행(Row)으로 출력하는 방법을 알아보겠습니다.최근 데이터를 집계 결과를 화면으로 뿌려주는 작업을 진행했는데요. 해당 화면에는 집계 대상 데이터의 시퀀스도 함께 노출해야 하는 요구사항이 있었습니다.따라서 요구사항은 위 예시처럼 A라는 컬럼을 기준으로 Group 하고, SEQ를 List 형태로 출력해야 하는 것이죠. 하지만 GROUP BY 절은 집계(합계, 평균, 연산 등) 외에는 공통된 기준이 아니면 값을 출력할 수 없습니다. 다시 말하면, 서로 다른 여러 개의 값을 한 행으로 나타낼 수 없습니다.하지만 다수의 데이터가 하나의 값이면 어떨까요? 위 예시에서 seq_a와 seq_b가 문자열로 묶인 "seq_a, seq_b" 형태로 나오는 것입니다. 이와 같은 기능을 수행하는..
[DB] 트랜잭션(Transaction)에 대해서 알아보기
개발/DB&SQL
/ 2023. 1. 23.
안녕하세요😎 백엔드 개발자 제임스입니다 :) 모두 새해 복 많이 받고, 하는 일 모두 잘되세요! 오늘은 트랜잭션에 대해서 정리하겠습니다. 트랜잭션은 데이터베이스를 다루기 위해 필수로 알아야 할 개념입니다. 기술면접에서도 이와 관련된 질문이 자주 나옵니다. 그만큼 기본적이면서 중요하죠. 이제 자세하게 알아보겠습니다. 트랜잭션(Transaction)이란? 간략한 표현 : Tx 1초당 처리할 수 있는 트랜잭션의 개수 : TPS 트랜잭션은 데이터베이스의 상태를 변경시키기 위해 수행하는 작업의 단위입니다. 또는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위입니다. 여기서 상태를 변경시킨다는 의미는 DML(Data Manipulation Language)에 해당하는 SELECT, INSERT, UPDATE, DEL..
[MySQL] MySQL CLI로 쉽게 다루기(+ MySQL Shell 명령어 정리)
개발/DB&SQL
/ 2022. 8. 13.
안녕하세요😎 백엔드 개발자 제임스입니다 :) SQL 기반의 관계형 데이터베이스 중 대표적으로 MySQL이 있습니다. 이러한 MySQL 데이터베이스를 다루기 위해선 다양한 방법이 있는데요. 그 중 CLI 환경과 GUI 환경을 기준으로 나눌 수 있습니다. 오늘 포스팅은 CLI 환경에서 MySQL을 다루는 방법에 대해서 정리할 것입니다. CLI는 Command-line interface의 약자입니다. 즉, 명령어 기반 환경인데요. 주로 터미널, shell 을 통해서 다룰 수 있습니다. 오늘 포스팅에서는 MySQL Shell에서 사용되는 명령어를 정리하려고 합니다. 추가로 GUI로는 보통 MySQL Workbench를 사용합니다. MySQL Shell 설치는 아래 링크에서 할 수 있습니다. https://www..
[데이터베이스] ORM(Object Relational Mapping)에 대해서 알아보기
개발/DB&SQL
/ 2022. 7. 20.
안녕하세요😎 백엔드 개발자 제임스입니다 :) 이번에 포스팅할 내용은 ORM입니다. 우리가 웹을 개발한다면 데이터베이스를 다루게 되는데, 이때 대부분 ORM이라는 용어를 접하게 됩니다. 그래서 이번 포스팅을 통해 이러한 ORM이 무엇이며, 어떠한 장단점이 있는지 알아보도록 하겠습니다. ORM (Object Relational Mapping) ORM은 Object Relational Mapping의 약자로, [객체-관계 매핑]을 의미합니다. 다시 말하면, OOP(Object Oriented Programming)에서 사용되는 객체라는 개념을 구현한 클래스와 관계형 데이터 베이스(RDBMS)에서 사용되는 테이블을 자동으로 연결하는 것을 말합니다. 위 그림에서 왼쪽은 Member 객체를 표현한 방식, 오른쪽은 ..