본문 바로가기
Spring

04 - 1 데이터베이스 작업

by hjwjddl 2023. 7. 14.

데이터베이스(DB)란?

데이터를 보관하기 위한 '상자' 

데이터베이스에서 규칙을 가지고 데이터를 정리해서 보관한다.

 

관계형 데이터베이스(RDB)란?

데이터를 표 형식으로 표현하고, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터베이스를 말한다.

표는 '테이블(Table)'이라 부르고 테이블과 테이블간의 관계를 '관계(Relationship)'라고 한다.

가장 일반적으로 사용되는 데이터베이스이다.

 

테이블이란?

데이터베이스 안에서 실제로 규칙을 가진 데이터가 저장되는 상자를 말한다.

테이블은 데이터를 항목으로 해서 이차원 표 형식으로 정리해서 저장한다.

 

레코드(redord) : 테이블의 가로 행(row)

칼럼(column) : 테이블의 세로 열(column)

 

 

 


 

 

 

SQL이란?

데이터베이스를 조작하기 위한 언어로 정식 명칭은 Structured Query Language이다.

 

데이터베이스를 조작하기 위한 언어인 SQL을 이용한 테이블 조작 방법을 알아보자

 

 

CRUD

 영속적으로 데이터를 취급하는 4개의 기본적인 기능인 생성(Create), 읽기(Read), 갱신(Update), 삭제(Delete)를 의미한다. SQL은 테이블 상의 레코드에 대해서 CRUD를 조작하는 구문을 제공한다.

  • SQL의 CRUD
CRUD 명령어 개요
생성(Create) INSERT 데이터를 등록
읽기(Read) SELECT 데이터를 참조
갱신(Update) UPDATE 데이터를 갱신
삭제(Delete) DELETE 데이터를 삭제
  • PostgreSQL에서의 CRUD 구문
CRUD 구문
생성(Create) INSERT INTO 테이블명 (칼럼명, 칼럼명, ...) VALUES(값, 값, ...);
읽기(Read) SELECT 칼럼명 FROM 테이블명;
갱신(Update) UPDATE 테이블명 SET 칼럼명 = 값 WHERE 갱신할_레코드를_특정하는_조건;
 ※ WHERE로 조건을 지정하지 않는 경우 모든 레코드가 대상이 된다.
삭제(Delete) DELETE FROM 테이블명 WHERE 삭제할_레코드를_특정하는_조건;
 ※ WHERE로 조건을 지정하지 않는 경우 모든 레코드가 대상이 된다.

 

 

테이블을 생성할 때 테이블에 저장하는 데이터의 종류를 데이터 타입으로 제한한다. 

하지만, 데이터 타입에서 제공하는 제약으로는 충분하지 않은 경우가 많다. 이 때 SQL에서는 칼럼 및 테이블에 대해서 

제약 조건을 정의할 수 있다. 제약 조건에 따라 테이블 내의 데이터를 자유롭게 제약하여 불일치 값이 저장되는 것을 막을 수 있다.

제약 조건의 예
NOT NULL NULL 입력을 허용하지 않습니다.(필수 입력)
UNIQUE 중복값 입력을 허용하지 않습니다.(고유한 값)
CHECK 지정한 조건을 만족하지 않는 값의 입력을 허용하지 않습니다.
PRIMARY KEY 테이블 안에서 레코드를 식별하는 기본키를 설정합니다.
기본키는 NOT NULL과 UNIQUE가 함께 적용됩니다.
FOREIGN KEY 관련된 테이블을 연결하는 설정입니다. 외부 키라고도 부릅니다.
DEFAULT 칼럼의 초깃값을 설정합니다.

 

 

 

 

 

프로그램에서 데이터 베이스를 조작할 때 사용하는 용어인 '엔티티(Entity)'와 '리포지토리(Repository)'에 대해 알아보자.

 

 

 

엔티티(Entity)란?

 '데이터를 담아두는 객체'이다. 데이터베이스 테이블의 한 행(레코드)에 대응하는 객체이다. 엔티티의 필드는 테이블의 칼럼값에 대응한다.

 엔티티는 실제 데이터를 담아두는 객체이다. 사용할 때는 다음 세 가지를 기억해두면 좋다.

  • 클래스명
    클래스명은 대응하는 데이터베이스의 테이블명으로 하는 경우가 많다.
  • 데이터베이스에 값 넘겨주기
    데이터베이스 값을 등록/갱신하는 경우에는 엔티티에 값을 넣어서 넘겨준다.
  • 데이터베이스에서 값 가져오기
    데이터베이스에서 값을 가져오는 경우에는 값을 엔티티에 넣어서 가져온다.
// Member 테이블: 엔티티

public class Member {

	/** id 칼럼 대응 */
    private int id;
    /** name 칼럼 대응 */
    private String name;
    
    
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    
    
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
}

 

 

리포지토리(Repository)란?

데이터베이스를 조작하는 클래스이다.

리포지토리를 생성하는 경우에는 반드시 인터페이스를 정의하고 구현해야한다. 그 이유는 리포지토리 인터페이스의 필드에 리포지토리 구현 클래스를 DI하여 특정 구현에 의존하는 것을 피할 수 있기 때문이다.

 

 

 

 

 

 

 

 

 

 

 

https://wikibook.co.kr/spring/

 

스프링 프레임워크 첫걸음: 그림과 실습으로 쉽게 배우는 스프링 프레임워크 완벽 입문서

세상에서 가장 친절한 스프링 프레임워크 입문서! 스프링 프레임워크는 전 세계적으로 가장 널리 사용되는 오픈소스 자바 애플리케이션 프레임워크입니다. 이 책에서는 스프링 프레임워크를

wikibook.co.kr