2023.11.25 TIL

Oneik·2023년 11월 24일
0
post-thumbnail

📕오늘 학습한 내용

  • 데이터베이스(Database)
  • SQL(Structured Query Language)
  • MariaDB에서 대표적인 SQL언어 사용해보기
  • Node.js 서버와 DB 연결하기

💾데이터베이스(Database)

데이터베이스(Database)란?

  • 데이터를 정보 저장소로 통합하여 효율적으로 관리하기 위한 데이터 집합체(모음집)
  • 데이터를 구조화하여 관리함으로써 데이터의텍스트 중복을 막고, 효율적이고 빠른 데이터 연산을 가능하게 한다
  • 예를 들어, 필기도구들을 필통에 모아두면 필요한 볼펜을 빠르게 찾을 수 있는 것과 같다
  • 즉, 종류별로 모아둘 수 있기 때문에, 빠르게 찾을 수 있다

DBMS(Database Management System)이란?

  • 데이터베이스를 운영하고 관리하는 소프트웨어
  • 여러 사용자나 응용 프로그램이 동시에 데이터베이스에 접근하고 작업할 수 있도록 지원한다
  • 결국 우리는 DBMS를 통해 데이터베이스와 소통한다
  • DBMS는 대표적으로 Oracle, MySQL, MariaDB가 있다

💬SQL(Structured Query Language)

  • 질의어, 명령어라고 한다
  • 데이터베이스에 연산을 요청하기 위해 사용 되는 언어로 생성, 삽입, 조회, 수정, 삭제 등과 같은 기능을 수행할 수 있다
  • DBMS는 SQL이라는 언어를 통해 데이터베이스와 상호작용한다

대표적인 SQL문법

  • CREATE : 데이터 저장소를 만들어주는 명령어
  • INSERT : 데이터를 삽입하는 명령어
  • SELECT : 데이터를 조회하는 명령어
  • UPDATE : 데이터를 수정하는 명령어
  • DELETE : 데이터를 삭제하는 명령어

MariaDB에서 대표적인 SQL언어 사용해보기

데이터베이스 생성

SHOW DATABASE; : 모든 데이터베이스를 보여준다

// SHOW DATABASE;의 출력값
+--------------------+
| Database           |
+--------------------+
| Tennis             |
+--------------------+

CREATE DATABASE db_name; : 데이터베이스를 생성한다

USE db_name : 데이터베이스를 사용한다

// Tennis라는 데이터베이스를 사용한 모습
MariaDB [Tennis]>

테이블의 형태 및 생성

+------+--------------+-------------+--------+
| id   | name         | description | price  |
+------+--------------+-------------+--------+
|    1 | Red Racket   | Hot Red!    | 300000 |
|    2 | Blue Racket  | Cool Blue!  | 350000 |
|    3 | Black Racket | Chic Black! | 500000 |
+------+--------------+-------------+--------+
  • 데이터는 데이터베이스 안에 Table(표) 형태로 저장된다
  • Column(열)은 데이터의 속성이다
  • Row(행)은 속성들을 가진 데이터 하나를 의미한다

테이블 생성

product라는 테이블을 만들어보자

CREATE TABLE product
(
	id INT,
    name VARCHAR(30),
    description VARCHAR(30),
    price VARCHAR INT
)

정수 타입의 id, price
문자열 타입의 name, description 속성을 가진
product 테이블을 만들었다

데이터 삽입

product 테이블에 데이터를 삽입해보자

INSERT INTO product VALUES
(
	1, 'Red Racket', 'Hot Red!', 300000,
	2, 'Blue Racket', 'Cool Blue!', 350000,
   3, 'Black Racket', 'Chic Black!', 500000
)

product 테이블에 데이터(row) 3개를 삽입하였다

데이터 조회

product 테이블을 조회해보자

SELECT * FROM product;

----------------------------------------------

+------+--------------+-------------+--------+
| id   | name         | description | price  |
+------+--------------+-------------+--------+
|    1 | Red Racket   | Hot Red!    | 300000 |
|    2 | Blue Racket  | Cool Blue!  | 350000 |
|    3 | Black Racket | Chic Black! | 500000 |
+------+--------------+-------------+--------+

SELECT를 이용하여 product 테이블을 조회하면
위 테이블(표)처럼 3개의 데이터가 들어간 것을 확인할 수 있다

데이터 수정

product 테이블의 Black Racket의 price를 400000으로 수정해보자

UPDATE product SET price = 400000
WHERE name = 'Black Racket';

name이 Black Racket이어야 한다는 조건을 설정해줘야 한다
조건을 설정해주지 않으면, 테이블의 모든 price가 400000으로 수정된다

데이터 삭제

product 테이블의 Black Racket를 삭제하자

DELETE * FROM product 
WHERE name = 'Black Racket';

마찬가지로 name = 'Black Racket'이라는 조건을 설정해주지 않으면 모든 데이터가 삭제된다


Node.js 서버와 데이터베이스 연결하기

1. Npm을 활용하여 Mysql 모듈을 다운받기

  • npm을 활용하여 mysql 모듈을 설치하기 npm mysql --save
  • mysql 모듈을 설치하고 각종 필요한 파일들이 다운된다
  • npm(Node Packaged Manager)이란?
    Node.js로 만들어진 특정 기능을 수행하는 모듈을 관리해주는 프로그램
    전세계의 개발자들이 npm을 사용하여 자신들이 만든 패키지를 공유한다
    즉, 우리는 필요한 부품을 쉽게 찾아서 가져오고 그 부품을 사용하여 프로그램을 빠르게 만들 수 있다

2. MariaDB와 연결 통로 만들기

// mariadb.js
const mariadb = require('mysql')

const conn = mariadb.createConnection( // 연결 통로 만들어준다
    {
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: 'root', // 여기까지 mariadb에 접속하고
        database: 'Tennis' // Tennis라는 database와 연결 통로 만들기
    }
); 

module.exports = conn;
  • 모듈을 소환하고 가동시키는 index.js로 보내기 위해 모듈을 exports로 내보낸다

3. MariaDB와 연결하기

// index.js
let server = require('./server');
let router = require('./router');
let requestHandler = require('./requestHandler');

const mariadb = require('./database/connect/mariadb')
mariadb.connect(); //연결 통로를 만들어 뒀으니, 진짜 연결을 한다

server.start(router.route, requestHandler.handle);
  • mariadb.js라는 mariadb와의 연결 통로를 index.js로 가져와서
    연결해준다
profile
초보 개발자의 블로그입니다

0개의 댓글

관련 채용 정보