DML(Data Manipulation Language)데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE), 병합(MERGE)을 할 수 있는 SQL 언어입니다. 저장(COMMIT) 혹은 롤백(ROLLBACK)이 반드시 필요하며 이를 통해 트랜잭션을 제어할 수 있습니다.INSERT테이블에 행을 삽입할 때 사용하는 명령어로 한 번에 한 행만 입력이 가능합니다.(SQL Server는 여러 행을 동시에 삽입할 수 있습니다.)하나의 컬럼에는 한 값만 삽입 가능하며, 컬럼별 데이터 타입과 사이즈에 맞게 삽입해야 합니다.INTO 절에 컬럼명을 명시하여 일부 컬럼만 입력할 수 있으며, 작성하지 않은 컬럼은 NULL이 입력됩니다.전체 컬럼에 대해서는 데이터 입력 시 테이블 뒤에 컬럼명을 생략할 수 있습..
전체 글
서브쿼리(Subqueries)서브쿼리란, 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문입니다. 반드시 괄호로 묶어서 표현해야 합니다.서브쿼리를 사용할 수 있는 절SELECTFROMWHEREHAVINGORDER BY기타 DML서브쿼리 주의사항GROUP BY 절은 사용할 수 없습니다.특별한 경우(TOP-N 분석 등)을 제외하고 서브쿼리 절에 ORDER BY 절을 사용할 수 없습니다.서브쿼리의 종류동작하는 방식에 따른 종류UN-CORRELATED(비연관) 서브쿼리서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태입니다.메인쿼리에 서브쿼리가 실행된 결과 값을 제공하기 위해 사용합니다.CORRELATED(연관) 서브쿼리서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태입니다.메인쿼리가 먼저 수행된 후 서브쿼리 조건..
데이터베이스와 관계형 데이터베이스 개요데이터베이스와 DBMS(Database Management System)데이터베이스 : 특정 목적에 맞게 데이터를 저장하고 관리하는 집합입니다.DBMS : 데이터를 효과적으로 관리하기 위한 시스템으로, 대량의 데이터를 쉽게 저장하고 검색할 수 있도록 도와줍니다.관계형 데이터베이스관계형 데이터베이스는 데이터를 테이블 형태로 저장하여 테이블 간의 관계를 통해 효율적으로 데이터를 관리합니다. 관계형 데이터베이스는 SQL을 통해 데이터를 조회하고 관리하며, 데이터의 무결성과 일관성을 보장하기 위해 정규화 및 다양한 무결성 제약 조건을 적용합니다.특징데이터의 분류, 정렬, 탐색하는 속도가 빠릅니다.신뢰성이 높으며, 데이터 무결성을 보장합니다.기존의 작성된 스키마를 수정하기 어..
정규화의 개념정규화는 최소한의 데이터만을 하나의 엔터티에 가지는 방식으로 데이터를 분해하는 과정입니다. 데이터의 일관성, 중복을 줄이고 최대한의 데이터 유연성을 가지는데 초점을 둡니다. 그리고 데이터의 중복을 제거하고 데이터 모델의 독립성을 확보하고 데이터의 이상현상을 줄이기 위한 DB 설계 기법입니다.정규화는 엔터티를 상세화하는 과정으로 논리 데이터 모델링 수행 시점에서 고려하게 됩니다.이상현상(Abnormality)정규화를 하지 않아 발생하는 현상입니다.삽입이상 : 데이터를 삽입하는 과정에서 발생하는 비효율 또는 오류가 발생할 수 있습니다.갱신이상 : 데이터를 수정할 때 중복 데이터로 인해 일관성 문제가 발생할 수 있습니다.삭제이상 : 데이터를 삭제할 때 함께 의도치 않은 데이터가 손실될 수 있는 현..
데이터 모델링이란?데이터 모델링 정의데이터 모델링은 현실 세계의 복잡한 문제를 데이터베이스(DB)로 표현하기 위해 추상화하는 과정입니다. 고객의 비즈니스 프로세스를 분석하고 규칙을 정의하여 데이터를 효과적으로 모델링하고 분석 및 설계를 수행할 수 있도록 도와줍니다. 이를 통해 이해 관계자들과의 원활한 소통을 가능하게 하며, 이 과정을 단계별로 구체화하여, 데이터를 효과적으로 모델링하여 분석 및 설계 작업을 수행합니다.데이터 모델링의 주요 특징추상화 : 현실 세계의 데이터를 단순화하여 중요한 부분의 공통적인 특징을 찾고 단순하게 표현합니다.단순화 : 현실을 단순화하여 핵심 요소에 집중하고, 복잡한 문제를 단순화하여 표현합니다.명확화 : 데이터 모델이 모호하지 않도록 명확한 의미를 가지며, 하나의 의미를 전..
빈 등록과 관리 방법의 다양한 패턴스프링에서는 빈을 등록하고 관리하는 다양한 방법을 제공하고, 개발자가 애플리케이션 요구사항에 맞는 방식을 선택할 수 있습니다. 수동 등록과 자동 등록의 차이, 조건부 빈 등록, 여러 빈 중 우선순위를 설정하는 방법 등 다양한 패턴을 사용하면 더욱 유연한 애플리케이션 구성이 가능합니다.수동 빈 등록스프링에서는 @Bean 애노테이션을 사용해서 수동으로 빈을 등록할 수 있습니다. 이 방법은 주로 외부 라이브러리나 복잡한 초기화 로직을 가진 객체를 빈으로 등록할 때 사용합니다. @Bean 애노테이션은 @Configuration 클래스 내부에서 사용되며, 스프링이 이 메서드를 호출해서 반환된 객체를 빈으로 등록하게 됩니다.@Configurationpublic class AppCo..
스프링 빈 스코프 개요스프링에서 빈 스코프는 빈의 생명주기를 정의하는 중요한 개념입니다. 즉, 스프링 IoC 컨테이너가 빈을 언제 생성하고 어떻게 관리하고, 어떻게 주입할지 결정하는 설정입니다. 스프링은 다양한 스코프를 지원하고, 각각의 스코프는 특정 시점에서 빈을 어떻게 주입할지를 정의합니다. 스프링에서 지원하는 대표적인 빈 스코프에는 아래와 같은 방법이 있습니다.싱글톤(Singleton) : 기본 스코프로, 애플리케이션 전체에서 하나의 빈 인스턴스만 생성하고 공유합니다.프로토타입(Prototype) : 요청할 때마다 새로운 빈 인스턴스를 생성합니다.Request : 웹 애플리케이션의 HTTP 요청 시마다 새로운 빈을 생성합니다.Session : HTTP 세션당 하나의 빈 인스턴스를 생성하고, 세션이 ..
IoC 컨테이너의 동작 방식스프링 IoC 컨테이너는 애플리케이션 내에서 사용되는 빈을 생성하고 관리하며, 의존성을 자동으로 주입해 모듈 간 결합을 최소화합니다. 빈의 생명주기는 빈이 생성되고 의존성이 주입된 후, 애플리케이션에서 사용되고 소멸되는 일련의 과정을 의미합니다. 이 모든 과정은 IoC 컨테이너에 의해 자동으로 처리됩니다. 빈의 생성 및 의존성 주입 과정은 아래와 같은 단계로 이루어집니다.빈 생성 및 의존성 주입 과정 흐름 빈 정의 로딩 : 먼저, XML 파일이나 Java Config 등에서 빈을 정의합니다. 이 정의에는 클래스, 초기화 메서드, 의존성 주입 방식 등이 포함됩니다.빈 인스턴스 생성 : 컨테이너는 빈 정의를 바탕으로 빈 인스턴스를 생성합니다. 생성자나 팩토리 메서드를 통해 객체가 ..
스프링 IoC 컨테이너 계층 구조스프링 프레임워크에서 IoC(제어의 역전) 컨테이너는 애플리케이션 구성 요소의 생성과 의존성 주입을 관리하는 중요한 역할을 합니다. 특히 대규모 애플리케이션에서는 다양한 빈을 효율적으로 관리하기 위해 IoC 컨테이너의 계층 구조가 필수적입니다. IoC 컨테이너는 부모-자식 관계의 계층 구조를 가지고 있으며, 이를 통해 애플리케이션을 모듈화 하고 빈 관리를 체계적으로 할 수 있습니다. 이러한 구조는 웹 애플리케이션에서 루트 컨텍스트와 서블릿 컨텍스트로 나뉘며, 각 컨텍스트가 서로 다른 역할을 담당합니다.IoC 컨테이너 계층 구조의 개요스프링 IoC 컨테이너는 빈(Bean)의 생성, 관리, 의존성 주입을 담당하는 핵심 모듈입니다. 스프링 애플리케이션은 주로 루트 컨텍스트와 서..
DI(Dependency Injection, 의존성 주입) 가이드DI는 객체가 직접 자신의 의존성을 관리하지 않고, 외부에서 필요한 의존성을 주입받는 설계 패턴을 의미합니다. 이는 객체 간의 결합도를 낮추어 코드의 유지보수성과 확장성을 높여주며, IoC의 핵심적인 구현 방식 중 하나입니다. 스프링 프레임워크에서는 IoC 컨테이너가 객체를 생성하고 의존성을 주입해 주며, 이를 통해 객체 간의 강한 결합을 피할 수 있습니다.IoC와 DI의 관계 : IoC는 객체의 제어권을 외부로 넘김으로써 객체 간의 결합도를 낮추는 원리를 의미합니다. DI는 이 IoC의 구체적인 구현 방법으로, 객체가 직접 의존성을 생성하지 않고 스프링 IoC 컨테이너가 대신 객체를 생성하고 주입해 주는 방식입니다.DI 방식의 차이점과 성..