데이터베이스

wltjd1688·2025년 2월 5일

풀사이클

목록 보기
9/74

데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체를 데이터베이스(DB)라고 한다. 데이터를 구조화하여 관리함으로써 데이터 중복을 막고, 효율적이고 빠른 데이터 연산을 가능하게 한다.
웹에서는 웹 어플리케이션에 의해 데이터가 삽입, 삭제, 수정되는 곳을 말한다. 이걸 도와주는게DBMS(DataBase Management System)로 데이터베이스의 운영 및 관리를 해줍니다. 대표적으로 ORACLE과 MYSQL이 있다.

SQL(Structured Query Language)

SQL은 데이터베이스에 연산을 요청하기 위해 사용되는 언어로, 데이터를 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)하는 기능을 수행할 수 있다. 해거의 모든 관계형 데이터베이스 관리 시스템(DBMS)에서 SQL을 지원하며, 데이터베이스를 효과적으로 관리하는 데 필수적인 기술다. 다만 NoSQL 데이터베이스(예: MongoDB, Cassandra)에서는 SQL을 사용하지 않는다.

SQL 주요 명령어

SQL 명령어 기능
INSERT 데이터를 삽입
SELECT 데이터를 조회
UPDATE 데이터를 수정
DELETE 데이터를 삭제

데이터베이스 및 테이블 관리

데이터베이스 목록 확인

SHOW DATABASES;

데이터베이스 생성

CREATE DATABASE [데이터베이스명];

특정 데이터베이스 사용

USE [데이터베이스명];

테이블 생성

테이블을 생성할 때, 각 컬럼의 데이터 타입을 지정해야 한다.

CREATE TABLE member (
    id INT, 
    name VARCHAR(30), 
    pwd VARCHAR(30)
);

테이블 삭제

DROP TABLE 테이블명;

전체 데이터 조회

SELECT * FROM 테이블명;

특정 컬럼만 조회

SELECT 컬럼명1, 컬럼명2 FROM 테이블명;

조건을 적용하여 조회

SELECT 컬럼명 FROM 테이블명 WHERE 조건;

정렬하여 조회

SELECT 컬럼명 FROM 테이블명 ORDER BY 컬럼명 [ASC | DESC];
  • ASC: 오름차순(기본값)
  • DESC: 내림차순

데이터 삽입

INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) 
VALUES (1,2, ...);

데이터 수정

UPDATE 테이블명 SET 컬럼명 = 새로 바꿀려는 값
WHERE 조건;

주의!!WHERE을 생략하면 모든 데이터가 변경되므로,명확히 해야함

데이터 삭제

DELETE FROM 테이블명 WHERE 조건;

주의!!WHERE을 생략하면 모든 데이터가 삭제되므로 주의해야함

내부 조인

  • INNER JOIN
SELECT a.column_1, b.*
FROM table_a AS a
INNER JOIN table_b AS b
ON a.column_1 = b.column_0;

외부 조인

  • LEFT JOIN
    table_a에서 table_b를 빼는 a-b차집합
SELECT a.column_1, b.*
FROM table_a AS a
LEFT JOIN table_b AS b
ON a.column_1 = b.column_0;
  • RIGHT JOIN
    table_b에서 table_a를 빼는 b-a차집합
SELECT a.column_1, b.*
FROM table_a AS a
RIGHT JOIN table_b AS b
ON a.column_1 = b.column_0;

Docker

애플리케이션을 컨테이너라는 독립적이고 격리된 환경에서 실행할 수 있도록 해주는 플랫폼이다.
컨테이너는 컴퓨터 한대에 OS전체를 설치하는게 아니라 소프트웨어를 실행하는데 필요한 만큼만 설치하여 리소스를 적게 사용하고, 특정 환경을 일관성 있게 유지해주기에 개발과 배포에서 많은 이점을 가질 수 있게 해주다.
설치는 Docker사이트에서 사양에 맞는 파일을 다운로드하여 설치하면 된다.

Docker컨테이너 관리

실행중인 컨테이너 목록 확인

# 실행 중인것만
docker ps
# 모든 컨테이너(중지된 컨테이너 포함)
docker ps -a

특정 컨테이너 로그 확인

docker logs [컨테이너 이름]

특정 컨테이너 중지

docker stop [컨테이너 이름]

특정 컨테이너 재시작

docker start [컨테이너 이름]

컨테이너 삭제

컨테이너 삭제 전에는 항상 중지한 후 삭제할 것

# 특정 컨테이너 삭제
docker rm [컨테이너 이름]
# 중지된 모든 컨테이너 삭제
docker container prune

사용하지 않는 이미지 삭제

docker image prune

모든 컨테이너 강제 종료 및 삭제

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

MariaDB

MariaDB는 MySQL과 호환되는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)이므로 데이터베이스로는 MariaDB를 사용할려고 한다.

MariaDB설치

Docker가 설치되어 있다면 터미널에서 아래 명령어를 실행해 MariaDB 이미지를 다운로드할 수 있다.

docker pull mariadb

MariaDB 컨테이너 실행

처음 실행할때 명령어는 다음과 같이 사용하면 좋다.

docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb
  • docker run: Docker에서 컨테이너를 생성하고 실행하는 기본 명령어입니다.
  • -name mariadb:실행될 컨테이너의 이름을 mariadb로 지정합니다.
    지정한 이름으로 컨테이너를 쉽게 식별하고 관리할 수 있습니다.
  • -d: 컨테이너를 백그라운드(Detached Mode)에서 실행합니다. 터미널에 출력되지 않고 백그라운드에서 실행되므로, 계속해서 다른 작업을 진행할 수 있습니다.
  • -p 3306:3306: 호스트(내 컴퓨터)의 포트 3306을 컨테이너 내부의 포트 3306에 매핑합니다. 이를 통해 호스트의 3306 포트를 통해 MariaDB 데이터베이스에 접근할 수 있습니다.
  • --restart=always: 컨테이너가 종료되었거나 Docker 데몬이 재시작될 경우 항상 컨테이너를 재시작하도록 설정합니다. 안정적인 서비스 운영을 위해 유용합니다.
    --e MYSQL_ROOT_PASSWORD=root: 환경 변수를 설정하는 옵션입니다. 여기서는 MariaDB의 루트 사용자 비밀번호를 root로 설정합니다. 데이터베이스 초기 설정에 필요한 중요한 옵션입니다.
  • mariadb: 사용할 Docker 이미지의 이름입니다. Docker Hub 등에서 해당 이름의 이미지를 다운로드하여 컨테이너를 실행합니다.

MariaDB컨테이너 접속

이후 컨테이너가 실행중이라면 다음 명령어로 접속할 수 있다.

docker exec -it mariadb /bin/bash
  • docker exec: 실행 중인 컨테이너에서 명령어를 실행할 때 사용합니다.
    --it: 컨테이너 내부에서 인터랙티브 모드로 접속할 수 있도록 합니다.
  • mariadb: 접속할 컨테이너의 이름입니다.
  • /bin/bash: 컨테이너 내부에서 Bash 쉘을 실행합니다.

컨테이너 접속 후 데이터베이스 관리

이후 컨테이너 안에서 MariaDB에 접속할려면 다음과 같다.

MraiaDB -u root -p
  • MraiaDB: MraiaDB(MySql)클라이언트를 실행
  • -u root: root 사용자로 로그인
  • -p: 비밀번호 입력을 요구, 위에서 부터 차례대로 입력했다면 MYSQL_ROOT_PASSWORD=root로 인해 비밀번호가 root가 된다.
profile
일단 해!!!!

0개의 댓글