Node.js 操作 MySQL

golang 請參考 https://app.gitbook.com/@easonwang/s/golang/databasecao-zuo/mysql

1.npm 安裝 mysql

npm install mysql --save

2.測試連線

cosnt express = require('express');

const mysql      = require('mysql');

var connection = mysql.createConnection({
  host     : 'db4free.net',
  user     : 'forclass',
  password : 'test123',
  database : 'fruit'
});
connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }

  console.log('connected as id ' + connection.threadId);
});

const app = express();

app.use(express.static(__dirname + '/public'));/* 將預設路徑設在public*/


app.listen(8080);

3.成功連線後可插入資料或到下面網址管理資料庫 https://www.db4free.net/phpMyAdmin

操控資料庫

CREATE TABLE

記得每段分行要用+號,因為javascript分行要用字串聯接

或是

使用ES6 的新字元串` ,可跨行連接字段

如要使用變數記得用${}

insert column

insert row

另一種方式

Read data

完整版

或是使用??

UPDATE

加上where,限制要更新的row

使用?號

有關? 與??

範例1

範例2

使用escape,防止injection

可達到的效果

1.

escape()

?作用相同

如果要excape的是name

使用escapeId()

使用??一樣效果

(??是給mysql module 內的function解析的,所以他不是變數,不用字串包住前後)

insert資料時傳回該筆insert id(主鍵)

複習sql語法

  1. 資料表查詢

    SELECT 欄位 FROM 資料表;

    一般用法: SELECT * FROM table ;

    翻譯:選擇table這個資料表所有欄位的資料(就是全選啦!!)

    備註:星號代表所有欄位,在sql語法、指令中星號代表全部

  2. 資料表查詢 + 排序

    SELECT 欄位 FROM 資料表 ORDER BY 特定欄位 DESC ;

    一般用法: SELECT id,name FROM table ORDER BY 特定欄位 DESC ;

    翻譯: 選取table資料表內的 id 和 name 這兩個欄位,並根據id這欄位做降冪排序(由高而低、由大到小、由z到a)

    備註:ASC則是(由低而高、由小到大、由a到z),與DESC相反

  3. 資料表查詢 + 查詢條件

    SELECT 欄位 FROM 資料表 WHERE 特定欄位 = 數字 ;

    一般用法: SELECT * FROM table WHERE id = 363 ;

    翻譯: 在table資料表內的尋找 id 欄位的內容是 363 且將 所有欄位的資料都取出來

使用完記得關閉

參考至:

https://www.npmjs.com/package/mysql#getting-the-id-of-an-inserted-row

http://www.sitepoint.com/using-node-mysql-javascript-client/

Last updated

Was this helpful?