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
'프로그래밍 > 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 |