์๋ฐ์คํฌ๋ฆฝํธ๋ก MySQL ์ ์ดํ๊ธฐ : Node-MySQL
๋จผ์ node-mysql ์ค์น!
https://github.com/mysqljs/mysql
๊นํ์ ๋ฐฉ๋ฌธ์ ํ๋ฉด 'MySQL ํ๋กํ ์ฝ์ ๊ตฌํํ๋ ์์ํ node.js JavaScript ํด๋ผ์ด์ธํธ.' ๋ผ๋ ๋ป์ด๋ผ๋ ๊ฑธ ์ ์ ์๋ค
let mysql = require('mysql'); // node-mysql(๊ฐ์ฒด)์ mysql(๋ณ์)์ ๋ด๊ธฐ let connection = mysql.createConnection({ // node-mysql(๊ฐ์ฒด)์ ํจ์ ํธ์ถ, connection์์ connection ์ ๋ณด๋ด๊ณ ์์ host : 'localhost', // DB๊ฐ ์๋ ์ฃผ์ user : 'me', // root password : 'secret', // ์์ ์ด ์ง์ ํ ๋น๋ฐ๋ฒํธ database : 'my_db' // DB ์ด๋ฆ(o2) }); // ์ด ๊ฐ์ฒด๋ฅผ ์ ๋ฌ connection.connect(); // connect connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) { // connection ์๋ฒ๋ฅผ ๋์์ผ๋ก sql๋ฌธ์ ์๋ฒ์๊ฒ ์ ์ก if (error) throw error; console.log('The solution is: ', results[0].solution); // results = rows }); // ๋ชจ๋ ์์
์ด ๋๋๋ฉด ๋ชจ๋์ด ํจ์ ํธ์ถ connection.end(); // ์ฐ๊ฒฐ ๋๊ธฐ
์... ๋ ์ง์ง ์ด๋ฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์คํํ๋๋ฐ,,, ๊ณ์ ์ค๋ฅ ๋ ์,,, 3์๊ฐ ๋์ ๊ตฌ๊ธ๋ง ๊ฒ๋ ํ๋ค..
๊ทผ๋ฐ ์๊ณ ๋ณด๋๊น MySQL์ด 2๊ฐ๊ฐ ๊น๋ ค์์ด์ ์๊ธด ๋ฌธ์ ์๋คใ ใ ใ ใ ใ
์ฌ๊ฑด์ ๋ฐ๋จ
1. 1์์ ์ํ์ฝ๋ฉ์ผ๋ก ๊ณต๋ถํ๋ ค๊ณ bitnami๋ฅผ ๊น๊ณ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ํ๋ค
2. 5์์ ํ๊ต ๋์๋ฆฌ์์ MySQL ๊ณต๋ถํ๋ ค๊ณ MySQL์ ๋ฐ๋ก ๊น์๋ค
์ด๋๋ (์ด๋๋ ๋ชฐ๋์ง๋ง) ์๊พธ ํฌํธ ๋ฒํธ๊ฐ 3306์ผ๋ก ์ค์ ์ด ์ ๋ผ์ ์ญ์ ํ๊ณ ๋ค์ ๊น๊ณ ์์ฒญ ๋ฐ๋ณตํด์ ์ ๋๋ก ์ค์นํ๋๋ฐ ์ง์ง ์ค๋ ๊ฑธ๋ ธ๋๋ฐ ์ด๋ ์๋ก์ด (new!!) ๋น๋ฐ๋ฒํธ๋ฅผ ์ ํ๋ค.. (๊ตฌ๊ธ๋ง ํด์ ๊ฐ์ ๋ก ํฌํธ๋ฒํธ 3306 ์ฌ์ฉํ๋๋ก ์ค์ ํจ)
3. ๊ทธ๋ฌ๋ค๊ฐ ์ด์ ์ํ์ฝ๋ฉ ๊ฐ์๋ฅผ ๋ฃ๋ค๊ฐ ์ ์ bitnami๋ฅผ ๊น์์ผ๋ฉด ์ ๊น์๋ ๋๋ค๊ณ ํด์ (MySQL 2๋ฒ ๊น๋ฉด ๋ฌธ์ ์๊ธธ ์ ์๋ค๊ณ ํ์ฌ) ์~~ ๊ทธ๋ bitnami ๊น์์ MySQL๋ ์๋์ผ๋ก ๊น๋ฆฐ ๊ฑฐ์๊ตฌ๋!! ํ๊ณ ์๊ฒ ๋๋ค..
4. 1๋ฒ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ง๋ค์๋ค๋ ๊ฑธ ์์๋ ๋ชป ํ๋ค... ๊ทธ๋๋ ์ด๋๊น์ง mysql -uroot -p ํ๊ณ ๋น๋ฐ๋ฒํธ ์ ๋ ฅํ ๋ 2๋ฒ์์ ๋ง๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋๋ ๋๋ค -> ๊ทธ๋์ ๋ฌธ์ ์๋ค๊ณ ์๊ฐํ๋ค..
5. ๊ทธ๋ฐ๋ฐ.... ์ฌ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค์ด์ ์ฝ๋์ ๋น๋ฐ๋ฒํธ(2๋ฒ)๊น์ง ์ ๋ ฅํ๊ณ node database_mysql.js๋ฅผ ํ๋๋ฐ?!?! ์๊พธ๋ง,... error: er_access_denied_error: access denied for user 'root'@'localhost' (using password: yes) ์ด ์ค๋ฅ๊ฐ ๋จ๊ธฐ ์์... ๊ทธ๋ฐ๋ฐ ์๋ฌด๋ฆฌ ๊ตฌ๊ธ๋งํด๋ ๋น๋ฐ๋ฒํธ ๋ฌธ์ ๋ผ๋ ๋ง๋ง ๋์ค๊ณ ๋ ์ผ๋จ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋ค ์๋ํด๋ดค๋ค,.. ๋น๋ฐ๋ฒํธ ๋ฐ๊พธ๊ธฐ, UPDATE ๋ญ ์ด์ฉ๊ณ ์ง์ง ์๋ํด๋ณธ ๋ฐฉ๋ฒ๋ง ์ต์ 10๊ฐ... ์ง์ง ๋ต๋ตํ๊ณ ๋จธ๋ฆฌ ๋๊น์ง ํ๊ฐ ๋ฌ๋ค...
6. ์ ๊ทธ๋ฌ๋ค๊ฐ MySQL installer์ ๋ค์ด๊ฐ์ ๋ฌด์จ ์ค์ ์ ๋ณ๊ฒฝํ๋ฉด ๋๋ค๊ธธ๋ ๊ทธ๊ฑธ ๋ฐ๋ผ ํ๋ค๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋๋ฐ ๊ฐ์๊ธฐ!?!? ๋น๋ฐ๋ฒํธ๊ฐ ํ๋ ธ๋ค๊ณ ํ๋ค.. ๋ ์ด๊ฒ ๋ฌด์จ ์ผ์ธ๊ฐ ์ถ์ด์ ๋ 20๋ถ ๊ฐ๊น์ด ๋จธ๋ฆฌ๋ฅผ ๊ตด๋ ธ๋ค... ๊ทธ๋ฌ๋ค๊ฐ ๊ทธ๋ฅ 2๋ฒ์์ ์ค์นํ MySQL์ ์ญ์ ํ๊ธฐ๋ก ํ๋ค(์์ ํ ์ญ์ ํ๋ ค๋ฉด ์ญ์ ํ๋๋ฐ๋ ์๊ฐ ๊ฒ๋ ์ค๋ ๊ฑธ๋ฆผ ;ใ ;)
7. ๊ทธ๋ฌ๊ณ ๋์ mysql -uroot -p๋ฅผ ์๋ํ๋๋ฐ ๋น๋ฐ๋ฒํธ๊ฐ ํ๋ ธ๋ค๊ณ ํ๋ค.... ํธ์ฅ์๋.. ํ๊ณ ๋ฉ๋ชจ(๋ด ๊ณ์ ๋ค์ด๋ ๋น๋ฐ๋ฒํธ ์ ์ด๋์ ๋ฉ๋ชจ)๋ฅผ ํ์ธํ๋๋ฐ..? bitnami ๋น๋ฐ๋ฒํธ..๋ผ๋ ๊ฒ ์ฐ์ฌ์๊ธธ๋.. ใ ์ฅ..? ์ค๋ง,... ํ๊ณ ์ ๋ ฅํด๋ดค๋๋!??!?! ์ค์ ์ฅ.... 1๋ฒ ๋น๋ฐ๋ฒํธ๊ฐ ์์๋ ๊ฒ์ด๋ค.... ๊ทธ๊ฑธ ์ ๋ ฅํ๋๋ ํด๊ฒฐ... ์ด๊ฒ ๋ฌด์จ ์ผ์ด์ง ์ ๋ง,..??
๋๋ ๋ฉ์ฒญ์ดใ ใ ใ ใ ๊ทธ๋๋ ๋คํ์ด๋ค ํด๊ฒฐํด์... ํฌ๊ธฐํ์ง ์์ ๋ ์นญ์ฐฌํด...
๋ด์ผ ๊ตฐ๋ ํด๊ฐ ๋์ค๋ ์น๊ตฌ๋ ์์นจ~์ ์ฌ์ ์ ๊น ๋ณด๊ธฐ๋ก ํด์ 10์์ ์ผ์ด๋์ผ ํ๋๋ฐ ๋ฒ์จ 4์ ๋ฐ... ๊ทธ๋... ๊ทธ๋ด ์ ์์ด... ๋ด์ผ ์นดํ ๊ฐ์ ๋ง์ ๊ณต๋ถํ๊ณ ์ฌ๋ ค์ผ๊ฒ ๋คใ ใ
๊ทธ๋๋ ์ด๋ ์ ๋ ๋ฌธ์ ๋ ํด๊ฒฐํด์ ๋คํ์ด๋คใ ใ ใ
์์ ์ฝ๋๋ฅผ ์ด๋ ์ ๋ ์ ๋ฆฌํ๋ฉด์ ์ฐ๋ฉด?!
let mysql = require('mysql'); let conn = mysql.createConnection({ host : 'localhost', user : 'root', password : '๋น๋ฐ๋ฒํธ', database : 'o2' }); conn.connect(); let 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); } }); conn.end();
์ด๋ ๊ฒ ์ธ ์ ์๋ค!!
์๋ฌ๊ฐ ์๋ค๋ฉด rows์ fields๋ฅผ ์ฝ์ ์ฐฝ์ ์ถ๋ ฅ!
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉ : SELECT
let sql = 'SELECT * FROM topic'; conn.query(sql, function(err, rows, fields){ if(err){ console.log(err); } else{ for(let i=0;i<rows.length; i++){ console.log(rows[i].title); } } });
์ด๋ ๊ฒ SELECT๋ฅผ ์ด์ฉํด์ TABLE์์ data๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉ : INSERT
let sql = 'INSERT INTO topic (title, description, author) VALUES("Nodejs","Nodejs is...","name3")'; conn.query(sql, function(err, rows, fields){ if(err){ console.log(err); } else{ console.log(rows); } });
INSERT๋ฅผ ์ด์ฉํด์ TABLE์ data๋ฅผ ๋ฃ์ด์ค๋ค
let sql = 'INSERT INTO topic (title, description, author) VALUES("Express","Express is...","name4")'; conn.query(sql, function(err, rows, fields){ if(err){ console.log(err); } else{ console.log(rows.insertId); } });
์๋ก์ด data๋ฅผ ๋ฃ์ด์ฃผ๊ณ insertId๋ฅผ ๋ฐ๋ก ์ถ๋ ฅํด์ id ๊ฐ์ ์ ์๋ ์๋ค
let sql = 'INSERT INTO topic (title, description, author) VALUES(?, ?, ?)'; let params =['Supervisor', 'Supervisor is...', 'name5']; conn.query(sql,params, function(err, rows, fields){ if(err){ console.log(err); } else{ console.log(rows.insertId); } });
INSERT๋ฅผ ํ ๋ ๋ชจ๋ ๊ฐ์ ์ง์ ์
๋ ฅํ์ง ์๊ณ ๋ฐฐ์ด์ ๋ง๋ค์ด query์ 2๋ฒ์งธ ์ธ์๋ก ๋ฃ์ด์ฃผ๋ฉด ์๋์ผ๋ก ํ ๋น๋๋ค!!
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉ : UPDATE
let sql ='UPDATE topic SET title=?, author=? WHERE id=?'; let params = ['NPM', 'new name1',1]; conn.query(sql, params, function(err, rows, fields){ if(err){ console.log(err); } else{ console.log(rows); } })
UPDATE๋ฅผ ์ด์ฉํด์ topic ์ค ํด๋น id ๊ฐ์ ๊ฐ์ง data์ title, author๋ฅผ ์์ ํ๋ค
์๋ฐ์คํฌ๋ฆฝํธ ์ด์ฉ : DELETE
let sql ='DELETE FROM topic WHERE id=?'; let params = [1]; conn.query(sql, params, function(err, rows, fields){ if(err){ console.log(err); } else{ console.log(rows); } })
DELETE๋ฅผ ์ด์ฉํด ์ญ์ ํ๋ ค๋ data์ id ๊ฐ์ ๋ฐ์ ์
๋ ฅํ๋ฉด ์ญ์ ํ ์ ์๋ค!
MySQL ๋๊ฐ ๋ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ์๋ ๋ถ๋ช cntl + C ํ๋ฉด ๋๊ฐ์ง๋ ์ค ์์๋๋ฐ ์๋์ด์ ์์ฒญ ์๋ํ๋ค๊ฐ.... exit ์ ๋ ฅํ๋ฉด ์ข ๋ฃ๋๋ ๊ฑฐ์์ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ
exit๋ quit ์ ๋ ฅํ๊ธฐ!!
์ ๋ค ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ ์ฐ๋ฆฌ ์ง ๊ตฌ๊ฒฝ์์ผ์ฃผ๊ณ ์ค๋ฒ ์์ ๋ฏผ์ด๋ ๋ธ๋ฃจ๋ฒ ๋ฆฌ ์น์ฆ ์ด์ฉ๊ตฌ ๋จน์๋ค ^.^
๊ทํ์ด๋ ๋ค๋ฅธ ๋๊ธฐ๋ค์ด๋ ์ ์ฌ ๋จน์ผ๋ฌ ๊ฐ๊ณ ์ฑํ์ด๋ ๋ณต๊ทํ๋ฌ ๊ฐ๋ค
๋๋ ๊ณต๋ถ... ใ
๊ทธ๋๋ ๋ค์ ์คํฐ๋ ๋๊น์ง ํด์ค๊ธฐ๋ก ํ ๊ฑฐ ๋ค ํด์ ๋ค์ ๊ฐ์๋ฅผ ๋ค์์ง ๋ณต์ต์ ํ ์ง ๊ณ ๋ฏผ ์ค์ด๋ค... ๐๐
์ผ๋จ ์ด๋ฒ ๋ฐฉํ + ํดํ ๊ณํ ์ข ์จ๋ด์ผ์ง
'c o d i n g . . ๐ > MySQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํ์ฝ๋ฉ] ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2021.09.25 |
---|---|
[์ํ์ฝ๋ฉ] Nodejs๋ก Database ๋ค๋ฃจ๊ธฐ(3) (0) | 2021.07.30 |
[์ํ์ฝ๋ฉ] Nodejs๋ก Database ๋ค๋ฃจ๊ธฐ(1) (0) | 2021.07.19 |