npm install --save node-mysql
Javascript에서 MySQL을 제어하기 위해서는 node-mysql 이라고 하는 모듈을 설치해야한다.
그리고 database_mysql.js 라는 파일을 생성한다.
var mysql = require('mysql');
var conn = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '3816',
database : 'o2'
});
conn.connect();
require('mysql')의 mysql은 node-mysql의 모듈을 의미한다.
그리고 mysql의 데이터베이스에 대한 정보를 적어준다.
순서대로 호스트, 유저, 비밀번호, 데이터베이스 이름을 적어주면 된다.
(개념학습이기 때문에 개인정보에 대한 문제는 제외하고 실행했다. 실제로는 위와 같이 개인정보가 코드에 담겨서는 안된다.)
var sql = 'SELECT * FROM topic';
conn.query(sql, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log('rows', rows);
console.log('fields', fields);
}
});
그리고 sql이라는 변수를 따로 선언해서 인자로 전달했다.
err : 에러
rows : 행
fields : 열(column)
각각을 의미한다.
또한 에러메시지에 대한 예외처리를 하였고, 만약 에러가 없다면 데이터베이스에 대한 상제정보들이 출력되게된다.
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].title);
}
}
});
이번에는 for문을 row의 개수만큼 순회하면서, title을 출력해보았다.
해당하는 값이 정상적으로 출력되는 것을 확인할 수 있다.
var sql = 'INSERT INTO topic (title, description, author) VALUES("Nodejs", "Test description", "tester")';
conn.query(sql, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
title 값에는 Nodejs, description 값에는 Test description, author 값에는 tester의 값을 INSERT sql문을 통해 실행시켜보았다.
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 3,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0
}
위에 관한 출력결과이다.
총 1개의 row(행)에 영향을 주었고, insertId는 우리가 지금 추가한 행의 id값이 3임을 나타낸다. 그 외 기타 등등 여러가지 정보를 보여준다.
위에서 추가한 행에 대한 정보를 데이터베이스에서 직접 확인해보자.
SELECT id, title FROM topic;
SELECT를 이용해서 topic 테이블에 있는 id, title을 출력해보았다.
값들이 정상적으로 들어간 것을 확인할 수 있다.
var sql = 'INSERT INTO topic (title, description, author) VALUES("Nodejs", "Test description", "tester")';
conn.query(sql, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
위 코드에서
console.log(rows);
부분을 아래와 같이 바꾸면 id값이 몇으로 추가되는지 확인할 수 있다.
console.log(rows.insertId);
이는 auto_increment의 속성으로 인해 우리가 직접 지정하지 않아도 자동으로 1씩 증가하는 성질 때문이다.
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);
}
});
위와 같이 코드를 수정해도 정상적으로 데이터베이스 테이블에 데이터가 추가되는 것을 확인할 수 있다.
여기서 ?는 치환자이다.
치환자에 따라 params를 실제 값들을 배열로 생성한 다음, 이것을 쿼리문의 두번째 인자값으로 전달하고 내부적으로 node-mysql이 값들을 치환시켜 실행시킨다.
이번에는 UPDATE와 DELETE를 해볼 것이다.
var sql = 'UPDATE topic SET title=?, author=? WHERE id=?';
var params = ['NODEJS', 'TESTING', 3];
conn.query(sql, params, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
우선 UPDATE부터 보면 위와 같이 코드를 작성했다.
id값이 3인 행의 title을 NODEJS로, author를 TESTING으로 수정하고자한다.
데이터변경에 성공했음을 알 수 있다.
var sql = 'DELETE FROM topic WHERE id=?';
var params = [1];
conn.query(sql, params, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
DELETE문을 사용한 코드이다.
id값이 1인 데이터를 삭제하려고 한다.
위 코드를 실행해주고 정상적으로 삭제되었는지 확인해보자.
정상적으로 삭제되었음을 확인할 수 있다.
<database_mysql.js 전체코드>
var mysql = require('mysql');
var conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '3816',
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].title);
}
}
});*/
/*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);
}
});*/
/*var sql = 'UPDATE topic SET title=?, author=? WHERE id=?';
var params = ['NODEJS', 'TESTING', 3];
conn.query(sql, params, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});*/
var sql = 'DELETE FROM topic WHERE id=?';
var params = [1];
conn.query(sql, params, function (err, rows, fields) {
if (err) {
console.log(err);
} else {
console.log(rows);
}
});
conn.end();
'database > mysql' 카테고리의 다른 글
[MySQL] MySQL 사용하기 - UPDATE, DELETE (0) | 2024.07.13 |
---|---|
[MySQL] MySQL 사용하기 - INSERT, SELECT (0) | 2024.07.13 |
[MySQL] MySQL 다운로드 및 설치하기 (0) | 2024.07.11 |