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。 

推薦閱讀: