NodeJS

[mysql] Node.js - MySQL Where (조건절)

3,126
목차
  1. WHERE 조건절 - 특정 조건의 데이터만 가져오기
  2. % 와일드카드 - 0개 이상의 임의의 문자 대응
  3. Query 값 회피 방법1 - mysql.escape() 메서드
  4. Query 값 회피 방법2 - ? 자리표시자
  5. ? 자리표시자가 여럿인 경우

 

WHERE 조건절 - 특정 조건의 데이터만 가져오기

1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var sql = "SELECT * FROM hz_member WHERE mb_name = 'homzzang'";

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

% 와일드카드 - 0개 이상의 임의의 문자 대응

 

주어진 문자나 구로 시작, 포함 또는 끝나는 레코드를 선택 가능.

0개, 1개 또는 여러 문자를 나타내려면 '%'와일드 카드를 사용.

 

(예) 이름이 h로 시작하는 레코드.


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');

 

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var sql = "SELECT * FROM hz_member WHERE mb_name LIKE 'h%'"; // 이름이 h로 시작하는 레코드.

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' },

  RowDataPacket { mb_id: 9, mb_name: 'HHH', mb_level: '4' }

]

 

 

Query 값 회피 방법1 - mysql.escape() 메서드

 

쿼리 값이 사용자가 제공한 변수인 경우 값을 회피 (=escape) 필요.

※ 회피 : 불량한 값을 거르기.

DB를 파괴/오용하는 웹 해킹 기술인 SQL 주입 방지.

※ mysql 모듈의 escape() 메서드 이용하면 해결 가능.

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');

 

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ' + mysql.escape(name);

  con.query(sql, function (err, result, fields) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

Query 값 회피 방법2 - ? 자리표시자

 

회피하려는 값에 대해 ? 자리표시 사용 가능.

이 경우,

변수는 query() 메서드의 두 번째 매개변수에 배열 형태로 전송됨.

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});


con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ?';

  con.query(sql, [name], function (err, result) {

    if (err) throw err;

    console.log(result);

  });

}); 

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[ RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' } ]

 

 

PS.

? 자리표시자가 여럿인 경우

 

자리 표시자가 여러 개인 경우 배열에는 다음 순서로 여러 값이 포함.

 


1. C:\User\사용자명\hz.js 생성.

 

var mysql = require('mysql');


var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "autoset",

  database: "hz"

});

 

con.connect(function(err) {

  if (err) throw err;

  var name = 'homzzang';

  var level = '1';

  var sql = 'SELECT * FROM hz_member WHERE mb_name = ? OR mb_level = ?';

  con.query(sql, [name, level], function (err, result) {

    if (err) throw err;

    console.log(result);

  });

});

 


2. CMD 모드에서 아래 명령어 입력해 시작 설정.

 

C:\User\사용자명>node hz.js

 


[반환값]

 

[

  RowDataPacket { mb_id: 1, mb_name: 'homzzang', mb_level: '10' },

  RowDataPacket { mb_id: 2, mb_name: 'AAA', mb_level: '1' }

]

 



분류 제목
basic Node.js - Home
basic Node.js - Intro (소개)
basic Node.js - Start (시작) - 사용 환경 구축
basic Node.js - Modules (모듈)
basic Node.js - HTTP Module (데이터 전송 모듈)
basic Node.js - File System Module (파일 시스템 모듈)
basic Node.js - URL Module (주소 처리 모듈)
basic Node.js - NPM (노드 패키지 관리자)
basic Node.js - Events (이벤트)
basic Node.js - Upload Files (파일 업로드) 2
basic Node.js - Email (이메일 보내기)
mysql Node.js - MySQL 설치・연결 + 쿼리 보내기
mysql Node.js - MySQL Create Database (DB 생성)
mysql Node.js - MySQL Create Table (테이블 생성) ※ Primary key 설정.
mysql Node.js - MySQL Insert Into (데이터 삽입)
1/5
목록
 홈  PC버전 로그인 일본어
웹디자인언어
서버관리언어
고급코딩언어
그누보드
제작의뢰 1
Q&A
커뮤니티 2
웹유틸
회원센터
홈짱 PC버전 로그인