2023-05-01 22:21:50

MySQL 이란?

mysql은 가장 많이 쓰는 오픈 소스 관계형 데이터베이스 관리 시스템 중 하나입니다. SQL이라는 표준 질의 언어를 사용하여 데이터를 검색, 삽입, 수정, 삭제하고 데이터베이스 구조를 관리할 수 있습니다. MySQL은 성능, 안정성, 사용 편의성, 무료 사용 가능성 등의 이유로 많은 개발자와 기업들이 쓰고 있습니다.

mysql2를 사용하는 이유

mysql 모듈도 있지만 mysql2 모듈을 사용하는 이유는 다음과 같다.

  • 성능 : MySQL2가 최적화된 구문 분석 및 처리를 사용하고 더빠른 네이티브 바인딩을 제공
  • Promise 지원 : promise를 지원하여 비동기 작업을 수행할 때 더 간결하고 가독성 높은 코드 작성 가능
  • Prepared Statements : 이 기능은 SQL 쿼리에 값이 삽입될 때 발생 할 수 있는 SQL Injection 공격을 방지하는데 도움을 줌
  • Binary Protocol : 데이터베이스와 통신에 Binary Protocol을 사용하여 텍스트 프로토콜에 비해 효율적이고 빠르며 데이터 전송량을 줄여줌
  • MySQL 서버 측 커서 : 이 기능을 사용하면 대용량 데이터 집합을 처리할 때 메모리 사용량을 줄여줌

mysql2 설치

// npm을 통해 설치
// 둘 다 가능
npm install mysql2
npm i mysql2

 

mysql2 모듈 가져오기

// mysql2 모듈 가져오기
const mysql = require("mysql2");

 

createConnection 메소드

mysql에 연결하기 위한 메소드

  • host : 연결할 호스트를 나타냄. 자기 자신일 경우 localhost 또는 127.0.0.1을 입력
  • port : 연결할 포트 번호를 입력. 기본적으로 3306번 포트를 사용
  • user : 사용자의 이름 입력
  • password : 입력한 사용자의 비밀번호 입력
  • database : 어떤 데이터베이스를 사용할지 데이터베이스의 이름을 입력 
const mysql = require("mysql2");

// 매개변수로 연결할 mysql의 옵션을 전달
const temp = mysql.createConnection({
  host: "[데이터베이스가 있는 곳의 IP]",
  port: "[포트번호(기본 3306)]",
  user: "[사용자 이름]",
  password: "[입력한 사용자 비밀번호]",
  database: "[사용할 데이터베이스 이름]",
});

 

MySQL 연결 및 테이블 생성

// mysql2 모듈 가져오기
const mysql = require("mysql2");

// 데이터베이스 연결
const temp = mysql.createConnection({
  host: "127.0.0.1",
  port: "3306",
  user: "root",
  password: "root",
  database: "test1",
});

// temp에 연결한 mysql 객체 반환
// 객채안에서는 쿼리문을 작성해서 데이터 베이스 쿼리 작업을 시켜줄 수 있는 메소드가 있음
// query() : 쿼리문을 매개변수로 전달
// test1 데이터베이스에 products 테이블을 찾고 없을시 테이블 생성
temp.query("SELECT * FROM products", (err, res) => {
  if (err) {
    console.log("not found");
    // products 테이블이 없으면 만들어 주라는 쿼리문 작성
    // id 컬럼은 INT형
    // AUTO_INCREMENT : 자동으로 값이 증가하는 설정. PRIMARY KEY에 주로 사용(고유키)
    // PRIMARY KEY : 고유한 값을 가지고 있는 컬럼
    // name, number, series 컬럼은 VARCHAR 문자열이고 ()안에 글자 수를 정해 줄 수 있음
    const sql =
      "CREATE TABLE products(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20), number VARCHAR(20), series VARCHAR(20))";
    temp.query(sql, (err) => {
      if (err) {
        console.error(err);
      }
    });
    console.log("create table products");
  } else {
    console.log("found table");
    console.log(res);
    temp.end();
  }
});

products 테이블이 생성된것을 볼 수 있다.

 

mysql work bench에서 데이터 입력
vscode에서 js파일을 실행 시켰을때 work bench에서 입력했던 데이터들 잘 불러와지는 것을 볼 수 있다.

 

728x90