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();
}
});
728x90
'Nodejs' 카테고리의 다른 글
[NodeJs] MVC 모델을 활용한 간단한 로그인 기능 구현 (0) | 2023.05.22 |
---|---|
[NodeJs] MVC 디자인 패턴을 활용한 서버 만들기 (0) | 2023.05.22 |
[NodeJs] http, fs 내장 모듈을 활용한 html 불러오기 (0) | 2023.05.01 |
[NodeJs] TCP를 이용한 간단한 server - client 연결 테스트 (0) | 2023.04.28 |
[NodeJs] NodeJs 알아보기 (0) | 2023.04.27 |