nodejs中關於mysql數據庫的操作
基本概念
為什麼要有數據庫
沒有數據庫,我們的數據都是存儲在文件當中的,那麼文件存儲數據的缺點有:
- 文件的安全性問題。
- 文件不利於查詢和對數據的管理。
- 文件不利於存放海量數據
- 文件在程序中控制不方便
什麼是數據庫
數據庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行增加、刪除、修改、查詢等操作。
前端程序員隻需要對數據庫有一定瞭解即可。
瀏覽器—->服務器—->數據庫
數據庫的分類
關系型數據庫:
MySQL
、Oracle
、SQL Server
SQLite
(安卓)
非關系型數據庫
mongodb
redis
BigTable
DBA
數據庫中基本術語
- 數據庫database:存放數據的倉庫,一般一個項目中的數據會存儲到一個數據庫中
- 表table: 一個表對應一類數據,比如學生表,老師表
- 列columns:一張表由多列組成,也叫一個字段,比如學生的姓名,成績,年齡等
- 行rows: 一個學生信息對應一行,一行也叫一條記錄。
數據庫的可視化操作(創建數據庫、創建表)
數據類型(部分)
int
: 整數類型varchar
: 字符類型datetime
: 日期類型
數據庫的常見命令
SQL: 結構化查詢語言(Structured Query Language)簡稱SQL 。用於數據庫的增刪改查以及管理等功能。
數據庫相關
–SQL中的註釋
SHOW DATABASES
; 查看所有的數據CREATE DATABASE mydb;
創建數據庫DROP DATABASE mydb
;刪除數據庫USE mydb
; 使用數據庫
表相關
SHOW TABLES
;查看當前數據庫中所有的表
創建表
CREATE TABLE user( id INT auto_increment PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT , gender VARCHAR(4), content VARCHAR(255) )
DROP TABLE user
;刪除表
插入數據
INSERT INTO user (name, age, gender, content) VALUES ('胡聰聰', 18, '男', '哈哈哈,哈哈哈') -- 如果省略列名,那麼必須要和字段一一對應 INSERT INTO user VALUES (null, '胡聰聰', 18, '男', '哈哈哈,哈哈哈') INSERT INTO user SET name='hcc', age=18, gender='男', content='嘻嘻嘻'
修改數據
// 修改所有的數據 UPDATE USER SET name='胡西西' // 根據條件修改 UPDATE USER set name='胡聰聰', content="這是內容" WHERE id = 2
刪除數據
// 刪除所有的數據 DELETE FROM USER // 刪除id為5的數據 DELETE FROM USER WHERE id = 5
查詢數據
-- 查詢所有數據 SELECT * FROM user -- 查詢指定列 SELECT id, name,age from user
條件查詢
--- 並且 SELECT * from user where name='胡聰聰' AND age=21 --- 或者 SELECT * from user where name='胡聰聰' or age=21 -- 范圍查詢 -- 模糊查詢 %表示通配 _表示單個字符 SELECT * from user where name LIKE '胡%' -- in語句 SELECT * from user where name in ('胡聰聰', 'hcc') -- order by -- 排序需要寫在最後面,,asc升序 desc:降序 SELECT * from user ORDER BY id desc -- limit分頁 SELECT * from user ORDER BY id desc limit 3 SELECT * from user ORDER BY id desc limit 3,3 -- 獲取總條數 SELECT count(*) as total FROM user
導入和導出數據庫腳本
node操作mysql
基本使用
安裝
npm install mysql
基本使用
// 導入第三方包 const mysql = require('mysql') // 創建連接 var connection = mysql.createConnection({ // 本地 host: 'localhost', user: 'root', password: 'root', // 數據庫名稱 database: 'mydb', port: 3306 }) // 連接數據庫 connection.connect() // 執行sql語句 connection.query('select * from user where id = 8', (err, result) => { if (err) return console.log('查詢失敗', err) // result返回的是數組, 數組中是一個對象 console.log(result) }) // 關閉連接 connection.end()
查詢語句
var name = '胡聰聰' // 使用?表示占位,可以防止sql註入 connect.query(`select * from user where name=?`, name, (err, result) => { if (err) return console.log('錯誤瞭', err) console.log(result) })
插入語句
connect.query( 'insert into user (name, age, gender, content) values (?, ?, ?, ?)', ['胡嘻嘻', 18, '男', '哈哈哈哈'], err => { if (err) return console.log('錯誤', err) console.log('添加成功瞭') } ) // 方式2 connect.query( 'insert into user set ?', { name: '胡洗洗', age: 30, gender: '男', content: '哈哈哈' }, (err, result) => { if (err) return console.log('錯誤', err) console.log('添加成功瞭', result) } )
修改語句
connect.query( 'update user set ? where id = ?', [ { name: '胡洗洗', age: 30, gender: '男', content: '哈哈哈' }, 10 ], (err, result) => { if (err) return console.log('錯誤', err) console.log('添加成功瞭', result) } )
刪除語句
connect.query('delete from user where id = ?', [10], (err, result) => { if (err) return console.log('失敗', err) console.log(result) })
db模塊封裝
// 導入mysql const mysql = require('mysql') // 創建連接對象 const connect = mysql.createConnection({ host: 'localhost', port: 3306, user: 'root', password: 'root', database: 'mydb' }) exports.query = function(sql, params, callback) { connect.connect() connect.query(sql, params, (err, data) => { callback && callback(err, data) }) connect.end() }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Node連接MySQL並封裝其增刪改查的實現代碼
- MySQL中order by的使用詳情
- mysql查詢優化之100萬條數據的一張表優化方案
- mysql語法之DQL操作詳解
- nginx 集成lua操作mysql的過程解析