node.js 에서 MySQL을 연결하여 DML을 실행해보자. 

 

SELECT 컬럼명 FROM 테이블명 

INSERT INTO 테이블명 (컬럼명) VALUES(값)

DELETE FROM 테이블명 WHERE문

UPDATE 테이블명 SET 컬럼명=값, 컬럼명=값, ... WHERE문

참고) INSERT INTO 할 때, 컬럼명을 생략할 수 있긴 하다.

하지만, 테이블 구조가 변경되었을 경우를 대비하여 컬럼명을 생략하지 말고 명시를 꼭 하는게 좋다. 

 

DELETE와 UPDATE 할 때는 반드시 WHERE 조건문을 써야 함을 기억하자!


SELECT 

 

쿼리는 select*  from topic 이지만, 두개의 컬럼만 출력한다. 

 

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();

var sql = 'select * from topic';

conn.query(sql, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    for(var i=0; i<rows.length; i++){
      console.log(rows[i].author +": "+ rows[i].title)
    }

  }
});

conn.end();

for문을 이용하여 출력한다. 

 

 

 

INSERT 

 

행 하나를 추가해보자. 

쿼리에서 개행할 때는 \ (역슬래시) 해주면 에러가 안난다. 

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();

var sql = 'INSERT INTO topic (title, description, author) \
VALUES("Node.js_02", "Server Side javascript", "coco")';

conn.query(sql, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    console.log(rows);
  }
})

conn.end();

 

id와 title 만 조회하여 방금 INSERT 한 결과를 확인한다. 

 

console.log() 에 rows.insertId 를 출력해보자. 

 

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();

var sql = 'INSERT INTO topic (title, description, author) \
VALUES("Node.js_03", "Server Side js", "lululala")';

conn.query(sql, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    console.log(rows.insertId);
  }
})

conn.end();

 node database.js 명령으로 실행 하면,

삽입한 행의 id가 출력된다. (insertId : 추가한 데이터의 고유한 식별자를 알아낸다.)

 

데이터베이스 select 해보면, id 값이 확인된다. 

  

 


사용자가 입력한 파라미터로 쿼리를 만들자. 

 

쿼리에 넣을 값을 ? 퀘스쳔 마크로 변경한다. 

params 라는 배열에 실제 값들을 넣는다. 

conn.query()함수의 두 번째 인자값으로 준다. 

node.js가 params를 sql에 주입해준다. (-> SQL injection 을 방지하는 효과가 있다.)

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();

var sql = 'INSERT INTO topic (title, description, author) \
VALUES(?, ?, ?)';

var params = ['Supervisor', 'watcher', 'graphittie'];

conn.query(sql, params, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    console.log(rows.insertId);
  }
})

conn.end();

node database.js 실행하면  insertId가 출력되고, 

select 해보면 정상적으로 insert  된 결과를 확인할 수 있다. 


UPDATE

 

3이라는 id의 행을 대상으로, 타이틀과 저자를 수정한다. 

sql과 params를 변경한다.

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();


var sql = 'UPDATE topic SET title=?, author=? WHERE id=?';

var params = ['npm', 'itzy', 3];

conn.query(sql, params, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    console.log(rows.insertId);
  }
})

conn.end();

3번 id 의 행이 변경된 것을 확인할 수  있다. 

 

 

delete 

 

3번 행을 지워본다. 

var mysql      = require('mysql');

var conn = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'o2'
});

conn.connect();


var sql = 'DELETE FROM topic WHERE id=?';

var params = [3];

conn.query(sql, params, function(err, rows, fields){
  if(err){
    console.log(err);
  }else{
    console.log(rows);
  }
})

conn.end();

 

정상 처리가 되면 console.log(rows)에 OkPacket이 온다. 

SELECT 해보면 정상적으로 삭제된 것을 확인할 수 있다. 

 


SQL에 대한 내용이 더 필요하다면 w3school 에서 참고하자. 

https://www.w3schools.com/sql/sql_select.asp

 

SQL SELECT Statement

SQL SELECT Statement The SQL SELECT Statement The SELECT statement is used to select data from a database. The data returned is stored in a result table, called the result-set. SELECT Syntax SELECT column1, column2, ... FROM table_name; Here, column1, colu

www.w3schools.com

 

728x90

'프로그래밍 > Node.js' 카테고리의 다른 글

MySQL 명명 규칙  (0) 2020.03.23
MySQL 웹앱 - 글목록  (0) 2020.03.21
MySQL 사용  (0) 2020.03.18
MySQL 설치  (0) 2020.03.16
코드 개선  (0) 2020.03.16

+ Recent posts