Node.js - MySQL에서 데이터 선택하기

안녕하세요, 프로그래밍에 도전하는 여러분! 오늘 우리는 Node.js와 MySQL의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 저는 Node.js를 사용하여 MySQL 데이터베이스에서 데이터를 검색하는 과정을 안내해 드리겠습니다. 프로그래밍 초보자라도 걱정 마세요 - 우리는 기초부터 차근차근 진행하겠습니다. 그럼 커피 한 잔 (또는 여러분의 좋아하는 음료)을 손에 쥐고, 함께 빠져들어 보겠습니다!

Node.js - MySQL Select From

Node.js와 MySQL은 무엇인가요?

코드로 들어가기 전에, Node.js와 MySQL에 대해 간단히 이해해 보겠습니다:

  1. Node.js: JavaScript 실행 환경으로, 웹 브라우저뿐만 아니라 컴퓨터에서도 JavaScript를 실행할 수 있게 해줍니다.
  2. MySQL: 여러분의 애플리케이션에 데이터를 저장하고 관리하는 인기 있는 데이터베이스 시스템입니다.

Node.js를 능숙한 요리사로, MySQL을 잘 정리된 냉장고로 생각해 보세요. 우리 요리사(Node.js)는 냉장고(MySQL)에서 재료(데이터)를 꺼내어 맛있는 요리(웹 애플리케이션)를 만듭니다. 오늘 우리는 요리사가 이 재료를 효율적으로 가져오는 방법을 배우겠습니다!

개발 환경 설정

가장 먼저, 우리는 요리를 위한 주방(개발 환경)을 설정해야 합니다. 다음과 같이 하세요:

  1. 공식 웹사이트에서 Node.js를 설치하세요 (https://nodejs.org).
  2. 공식 웹사이트에서 MySQL을 설치하세요 (https://www.mysql.com).
  3. 프로젝트를 위한 새로운 디렉토리를 생성하세요.
  4. 해당 디렉토리에서 터미널이나 명령 프롬프트를 엽니다.
  5. npm init -y 명령어를 실행하여 package.json 파일을 생성합니다.
  6. npm install mysql 명령어를 실행하여 MySQL 패키지를 설치합니다.

훌륭합니다! 이제 우리의 주방은 코딩 마법을 위한 준비가 끝났습니다!

MySQL에 연결하기

먼저 MySQL 데이터베이스에 연결을 설정해 보겠습니다. 다음은 예제입니다:

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});

connection.connect((err) => {
if (err) {
console.error('데이터베이스 연결 오류: ' + err.stack);
return;
}
console.log('데이터베이스에 연결되었습니다.');
});

이를 나누어 설명하자면:

  1. MySQL 패키지를 import합니다.
  2. 데이터베이스 세부 정보로 연결 객체를 생성합니다.
  3. connect() 메서드를 사용하여 연결을 설정합니다.
  4. 오류가 발생하면 로그를 남깁니다. 그렇지 않으면 연결을 확인합니다.

'your_username', 'your_password', 'your_database_name'을 여러분의 실제 MySQL 인증 정보로 대체하세요.

기본 SELECT 쿼리

이제 연결이 되었으므로, 데이터를 가져보겠습니다! 간단한 SELECT 쿼리를 보여드리겠습니다:

connection.query('SELECT * FROM users', (error, results, fields) => {
if (error) throw error;
console.log('사용자 목록: ', results);
});

이 쿼리는 'users' 테이블의 모든 열(*)를 선택합니다. 결과는 콜백 함수에서 반환됩니다. 오류가 발생하면 던집니다. 그렇지 않으면 결과를 로그합니다.

WHERE 절을 사용한 SELECT

종종 특정 데이터를 검색하고 싶을 때가 있습니다. WHERE 절을 사용해 보겠습니다:

const userId = 1;
connection.query('SELECT * FROM users WHERE id = ?', [userId], (error, results) => {
if (error) throw error;
console.log('찾은 사용자: ', results[0]);
});

여기서 우리는 특정 ID를 가진 사용자를 선택합니다. '?'는 占位자이며, [userId]는 그를 대체할 값입니다. 이렇게 하면 SQL 인젝션 공격을 방지할 수 있습니다 - 사용자 입력에 대해 항상 占位자를 사용하세요!

ORDER BY를 사용한 SELECT

결과를 정렬하고 싶다면 ORDER BY를 사용하세요:

connection.query('SELECT * FROM users ORDER BY name ASC', (error, results) => {
if (error) throw error;
console.log('이름으로 정렬된 사용자: ', results);
});

이 쿼리는 사용자의 이름을 오름차순으로 정렬합니다. ASC를 DESC로 변경하면 내림차순으로 정렬할 수 있습니다.

LIMIT를 사용한 SELECT

결과 수를 제한하고 싶다면 LIMIT를 사용하세요:

connection.query('SELECT * FROM users LIMIT 5', (error, results) => {
if (error) throw error;
console.log('첫 5명의 사용자: ', results);
});

이 쿼리는 테이블에서最初的 5명의 사용자만 반환합니다.

여러 가지 절을 결합하기

우리가 배운 것을 결합해 보겠습니다:

const searchName = 'John';
const limit = 10;

connection.query(
'SELECT * FROM users WHERE name LIKE ? ORDER BY created_at DESC LIMIT ?',
['%' + searchName + '%', limit],
(error, results) => {
if (error) throw error;
console.log('검색 결과: ', results);
}
);

이 복잡한 쿼리는 다음을 수행합니다:

  1. 이름에 'John'이 포함된 사용자를 검색합니다.
  2. 생성 날짜로 내림차순으로 정렬합니다.
  3. 결과를 10개로 제한합니다.

연결 닫기

작업이 완료되면 항상 연결을 닫아야 합니다:

connection.end((err) => {
if (err) {
console.error('연결 닫기 오류: ' + err.stack);
return;
}
console.log('연결이 성공적으로 닫혔습니다.');
});

이렇게 하면 열려 있는 연결을 남기지 않아 성능 문제를 피할 수 있습니다.

메서드 요약

여기서 우리가 다룰 메서드를 요약한 표입니다:

메서드 설명
createConnection() MySQL 데이터베이스에 연결을 만듭니다
connect() 데이터베이스 연결을 설정합니다
query() SQL 쿼리를 실행합니다
end() 데이터베이스 연결을 닫습니다

결론

축하합니다! 지금 여러분은 Node.js와 MySQL을 사용하여 SELECT 쿼리를 수행하는 방법을 배웠습니다. 연습이 완벽을 만듭니다. 다양한 쿼리를 만들어 보고, 다양한 절을 실험해 보세요. 그러면 곧 데이터베이스 마법사가 될 것입니다!

마무리로, 조금의 프로그래밍 유머를 준비했습니다: 왜 프로그래머는 다크 모드를 좋아할까요? 빛이 벌레를吸引了! ?

코딩을 계속하고, 호기심을 유지하며, 과정에서 즐겁게 보내세요. 다음 시간까지, 행복한 쿼리 작성을 기원합니다!

Credits: Image by storyset