본문 바로가기

블록체인 sw개발자

[MySQL] DB, 서버통신

데이터베이스란?

 

데이터베이스는 관련성을 가지며 중복이 없는 데이터들의 집합입니다. 이러한 데이터베이스를 관리하는 시스템을 DBMS(DataBase Management System)(데이터베이스 관리 시스템)라고 합니다.

보통 서버의 하드 디스크나 SSD 등의 저장 매체에 데이터를 저장합니다. 저장 매체가 고장 나거나 사용자가 직접 데이터를 지우지 않는 이상 계속 데이터가 보존되므로 서버 종료 여부와 상관없이 데이터를 계속 사용할 수 있습니다.

또한, 서버에 데이터베이스를 올리면 여러 사람이 동시에 사용할 수 있습니다. 사람들에게 각각 다른 권한을 줘서 어떤 사람은 읽기만 가능하고, 어떤 사람은 모든 작업을 가능하게 할 수 있습니다. 데이터베이스를 관리하는 DBMS 중에는 RDBMS(Relational DBMS) 라고 부르는 관계형 DBMS가 많이 사용됩니다. 대표적인 RDBMS로 Oracle, MySQL, MSSQL 등이 있스빈다 이들은 SQL이라는 언어를 사용해 데이터를 관리합니다. 

 

간단한 환경설정 명령어

$ mysql -h localhost -u root -p
Enter password: [비밀번호 입력]
mysql>

mysql -h 뒤에는 접속할 주소를, -u 뒤에는 사용자 이름을 입력합니다. 각각 localhost와 root를 넣습니다. -p는 비밀번호를 사용하겠다는 뜻입니다. 이렇게 명령어를 입력하면 비밀번호 입력창이 나타나는데, 여기에 MySQL을 설치할 때 설정했던 비밀번호를 입력하면 됩니다.

 

mysql> exit
Bye
// 리눅스(우분투)

$ sudo mysql_secure_installation

sudo mysql_secure_installation을 입력하면 'root' 사용자의 비밀번호를 입력하라(Enter password for user root)' 라고 뜹니다. 조금 전에 설정한 비밀번호를 입력합니다.

 

 

mysql.createConnection()

 

Node.js에서 MySQL 서버에 연결하려면 mysql.createConnection() 함수를 사용합니다. 이 함수는 MySQL 서버에 연결하는 데 필요한 정보를 인자로 사용합니다.

 

mysql.createConnection() 함수의 인자는 다음과 같습니다.

  • host: MySQL 서버의 호스트 이름 또는 IP 주소입니다.
  • port: MySQL 서버의 포트 번호입니다.
  • user: MySQL 사용자 이름입니다.
  • password: MySQL 사용자 암호입니다.
  • database: 연결할 데이터베이스 이름입니다.
  • ssl: SSL을 사용하려면 true, 사용하지 않으려면 false를 지정합니다.
  • ssl_ca: SSL 인증서를 지정합니다.
  • ssl_cert: SSL 인증서를 지정합니다.
  • ssl_key: SSL 키를 지정합니다.

예를 들어, 다음과 같이 mysql.createConnection() 함수를 사용하여 MySQL 서버에 연결할 수 있습니다.

// connection.js

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  user: 'root',
  password: 'password',
  database: 'my_database',
});

 

이 코드는 MySQL 서버의 localhost에 포트 3306으로 연결하고, 사용자 이름은 root, 암호는 password, 데이터베이스 이름은 my_database로 설정합니다.

mysql.createConnection() 함수는 Connection 객체를 반환합니다. 이 객체를 사용하여 MySQL 서버에 연결하고, SQL 쿼리를 실행하고, 결과를 처리할 수 있습니다.

Connection 객체의 주요 메서드는 다음과 같습니다.

  • connect(): MySQL 서버에 연결합니다.
  • query(): SQL 쿼리를 실행합니다.
  • escape(): 문자열을 MySQL에서 안전한 문자열로 변환합니다.
  • end(): MySQL 연결을 종료합니다.

다음은 Connection 객체를 사용하여 SQL 쿼리를 실행하는 예입니다.

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  port: 3306,
  user: 'root',
  password: 'password',
  database: 'my_database',
});

connection.connect();

const results = connection.query('SELECT * FROM users');

console.log(results);

connection.end();

이 코드는 users 테이블의 모든 레코드를 조회하는 SQL 쿼리를 실행합니다. query() 메서드는 results 변수에 결과를 반환합니다.

results 변수는 ResultSet 객체입니다. 이 객체는 결과의 행과 열을 탐색할 수 있는 메서드를 제공합니다.

다음은 ResultSet 객체를 사용하여 결과를 탐색하는 예입니다.

 

connection.query()

 

connection.query() 메서드는 MySQL 서버에 SQL 쿼리를 실행하는 데 사용되는 메서드입니다. 이 메서드는 다음과 같은 두 가지 인자를 사용합니다.

 

  • SQL 쿼리: 실행할 SQL 쿼리입니다.
  • 콜백 함수: 쿼리의 결과를 처리하는 콜백 함수입니다.

콜백 함수는 다음과 같은 두 가지 인자를 사용합니다.

  • 에러: 쿼리 실행 중에 발생한 에러입니다.
  • 결과: 쿼리의 결과입니다.
// connectionPool.js

pool.getConnection((error, connection) => {
  if (error) {
    console.log(`error: ${error}`);
    return;
  }
  console.log(`Connection to MYSQL`);
  const sql = `SELECT * FROM people`;
  connection.query(sql, (error, result) => {
    connection.release();
    if (error) return;
    console.log(result);
  });
});

connection.query() 메서드는 MySQL 서버에 SQL 쿼리를 실행하는 데 사용되는 메서드입니다. 이 메서드는 다음과 같은 두 가지 인자를 사용합니다.

  • SQL 쿼리: 실행할 SQL 쿼리입니다.
  • 콜백 함수: 쿼리의 결과를 처리하는 콜백 함수입니다.

콜백 함수는 다음과 같은 두 가지 인자를 사용합니다.

  • 에러: 쿼리 실행 중에 발생한 에러입니다.
  • 결과: 쿼리의 결과입니다.

connection.query() 메서드의 문법은 다음과 같습니다.

JavaScri
connection.query(sql, callback);

 

sql 인자에 SQL 쿼리를 지정합니다. sql 인자에 지정할 수 있는 SQL 쿼리의 종류는 다음과 같습니다.

  • SELECT: 데이터를 조회하는 쿼리
  • INSERT: 데이터를 추가하는 쿼리
  • UPDATE: 데이터를 수정하는 쿼리
  • DELETE: 데이터를 삭제하는 쿼리

callback 인자에 쿼리의 결과를 처리하는 콜백 함수를 지정합니다. 콜백 함수의 err 인자에 쿼리 실행 중에 발생한 에러가 저장됩니다. 콜백 함수의 results 인자에 쿼리의 결과가 저장됩니다.

results 인자는 ResultSet 객체입니다. ResultSet 객체는 쿼리의 결과를 나타냅니다. ResultSet 객체에는 다음과 같은 속성이 있습니다.

  • fields: 쿼리의 결과에 포함된 필드 목록
  • rows: 쿼리의 결과 행 목록

fields 속성은 쿼리의 결과에 포함된 필드 목록을 반환합니다. rows 속성은 쿼리의 결과 행 목록을 반환합니다.

ResultSet 객체의 rows 속성은 Array 객체입니다. Array 객체의 각 요소는 쿼리의 결과 행을 나타냅니다. Array 객체의 각 요소는 다음과 같은 속성을 가지고 있습니다.

  • id: 행의 ID
  • fields: 행의 필드 값 목록

fields 속성은 행의 필드 값 목록을 반환합니다. fields 속성의 각 요소는 행의 필드 값입니다.

connection.query() 메서드를 사용하여 MySQL 서버에 SQL 쿼리를 실행하는 예는 다음과 같습니다.

'블록체인 sw개발자' 카테고리의 다른 글

클래스형 컴포넌트( comment 기능)  (0) 2023.10.16
crypto 모듈 단방향&양방향 암호화  (0) 2023.09.23
URI, URL 와 RESTful API  (0) 2023.09.11
Git Error, 해결  (0) 2023.08.24
Git Branch, Restore  (0) 2023.08.21