Node.js - MySQL WHERE
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 Node.js와 MySQL의 흥미로운 세상으로 뛰어들어 WHERE 절의 강력한 기능에 대해 집중적으로 배우겠습니다. 여러분의 친구 겸 컴퓨터 과학 교사로서, 이 여정을 단계별로 안내해 드리겠습니다. 프로그래밍에 새로운 분이라면 걱정하지 마세요 - 기본부터 차근차근 설명해 나갈 테니까요. 그럼 좋아하는 음료를 골라, 편안하게 앉아 주세요. 시작해 보겠습니다!
WHERE 절 소개
WHERE 절에 대해 구체적으로 다루기 전에, WHERE 절이 무엇인지 이해해 보겠습니다. 대규모 도서관(우리의 데이터베이스)을 가지고 있고, 특정 유형의 책(우리의 데이터)을 찾고 있다고 상상해 보세요. WHERE 절은 마치 개인 도서관리자처럼, 정확히 필요한 것을 찾아주는 역할을 합니다.
MySQL에서 WHERE 절은 레코드를 필터링하고 테이블에서 필요한 데이터만을 가져오는 데 사용됩니다. 마치 데이터베이스에게 "이 정보만 보고 싶다!"라고 말하는 것과 같습니다.
간단한 예제를 시작해 보겠습니다:
const mysql = require('mysql');
// 연결 생성
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
// 데이터베이스에 연결
connection.connect((err) => {
if (err) throw err;
console.log('데이터베이스에 연결되었습니다!');
// WHERE 절을 포함한 SQL 쿼리
const sql = "SELECT * FROM customers WHERE country='USA'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("USA의 고객:", result);
});
});
이 예제에서 우리는 미국의 모든 고객을 선택하고 있습니다. WHERE 절 country='USA'
는 결과를 미국 고객으로 필터링합니다. 마치 도서관리자에게 미국 작가의 책만을 요청하는 것과 같습니다.
논리 연산자
이제 논리 연산자를 도입하여 것을 좀 더 흥미롭게 만들어 보겠습니다. 이는 도서관리자에게 더 구체적인 지시를 주는 것과 같습니다.
AND 연산자
AND 연산자는 여러 조건을 결합할 수 있습니다. 마치 "미국 작가의 책이고 2000년 이후에 출판된 책을 원한다"고 말하는 것과 같습니다.
const sql = "SELECT * FROM customers WHERE country='USA' AND city='New York'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("USA와 New York의 고객:", result);
});
이 쿼리는 미국과 특히 뉴욕시의 고객을 반환합니다.
OR 연산자
OR 연산자는 더 많은 유연성을 제공합니다. 마치 "미국 작가의 책이나 2000년 이후에 출판된 책을 원한다"고 말하는 것과 같습니다.
const sql = "SELECT * FROM products WHERE price < 20 OR category='Electronics'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("저렴하거나 전자 제품:", result);
});
이 쿼리는 $20 이하의 가격이거나 전자 제품 카테고리에 속하는 제품을 검색합니다.
NOT 연산자
NOT 연산자는 배제를 위한 것입니다. 마치 "특정 작가의 책을 제외한 모든 책을 원한다"고 말하는 것과 같습니다.
const sql = "SELECT * FROM employees WHERE NOT department='HR'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("HR 부서가 아닌 직원:", result);
});
이 쿼리는 HR 부서에 속하지 않은 모든 직원을 검색합니다.
BETWEEN 연산자
BETWEEN 연산자는 범위 쿼리에 완벽합니다. 마치 "1990년과 2000년 사이에 출판된 책을 원한다"고 말하는 것과 같습니다.
const sql = "SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("2023년에 주문된 주문:", result);
});
이 쿼리는 2023년에 주문된 모든 주문을 검색합니다.
LIKE 연산자
LIKE 연산자는 패턴 일치의 슈퍼 헴으로, 정확한 값을 모르지만 일부를 알 때 유용합니다. 마치 책 제목에 특정 단어가 포함된 책을 요청하는 것과 같습니다.
const sql = "SELECT * FROM products WHERE product_name LIKE '%phone%'";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("휴대폰과 관련된 제품:", result);
});
이 쿼리는 'phone'이 포함된 모든 제품을 검색합니다. '%'는 어떤 문자의 수를 나타내는 와일드카드입니다.
IN 연산자
IN 연산자는 목록의 값을 확인하는 데 유용합니다. 마치 특정 작가 목록의 책을 요청하는 것과 같습니다.
const sql = "SELECT * FROM customers WHERE country IN ('USA', 'Canada', 'Mexico')";
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("북미 고객:", result);
});
이 쿼리는 USA, Canada, 또는 Mexico의 고객을 검색합니다.
여러 연산자 결합
이제 모든 것을 하나로 결합해 보겠습니다! 이 연산자들을 조합하여 복잡한 쿼리를 만들 수 있습니다. 마치 도서관리자에게 매우 구체적인 지시를 주는 것과 같습니다.
const sql = `
SELECT * FROM products
WHERE (category = 'Electronics' OR category = 'Computers')
AND price BETWEEN 100 AND 1000
AND product_name LIKE '%Pro%'
AND brand IN ('Apple', 'Samsung', 'Dell')
`;
connection.query(sql, (err, result) => {
if (err) throw err;
console.log("특정 고급 제품:", result);
});
이 복잡한 쿼리는 다음과 같은 제품을 찾습니다:
- 전자 제품 또는 컴퓨터 카테고리에 속하는 제품
- 가격이 $100에서 $1000 사이인 제품
- 'Pro'가 포함된 제품 이름
- Apple, Samsung, 또는 Dell 브랜드의 제품
WHERE 절 메서드 요약
여기서 배운 메서드를 요약한 표를 제공합니다:
메서드 | 설명 | 예제 |
---|---|---|
기본 WHERE | 간단한 조건 | WHERE country='USA' |
AND | 조건 결합 | WHERE country='USA' AND city='New York' |
OR | 둘 중 하나의 조건 | WHERE price < 20 OR category='Electronics' |
NOT | 조건 배제 | WHERE NOT department='HR' |
BETWEEN | 값 범위 | WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31' |
LIKE | 패턴 일치 | WHERE product_name LIKE '%phone%' |
IN | 값 목록 | WHERE country IN ('USA', 'Canada', 'Mexico') |
기억하시라, 실습이 완벽을 만듭니다! 이 메서드들을 다양한 방법으로 조합하여 자신만의 복잡한 쿼리를 만들어 보세요. 마치 데이터베이스의 대규모 도서관에서 어떤 책을 찾을 수 있는 마스터 도서관리자가 되는 것과 같습니다!
이 튜토리얼이 유용하고 즐거웠기를 바랍니다. 계속 코딩하고, 배우며, 과정을 즐기세요. 당신이 프로처럼 데이터베이스를 쿼리하는 것을 알게 되는 데 까지 시간이 오래 걸리지 않을 것입니다!
Credits: Image by storyset