nodejs中關(guān)于mysql數(shù)據(jù)庫(kù)的操作
基本概念
為什么要有數(shù)據(jù)庫(kù)
沒(méi)有數(shù)據(jù)庫(kù),我們的數(shù)據(jù)都是存儲(chǔ)在文件當(dāng)中的,那么文件存儲(chǔ)數(shù)據(jù)的缺點(diǎn)有:
- 文件的安全性問(wèn)題。
- 文件不利于查詢(xún)和對(duì)數(shù)據(jù)的管理。
- 文件不利于存放海量數(shù)據(jù)
- 文件在程序中控制不方便
什么是數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù),簡(jiǎn)而言之可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶(hù)可以對(duì)文件中的數(shù)據(jù)運(yùn)行增加、刪除、修改、查詢(xún)等操作。
前端程序員只需要對(duì)數(shù)據(jù)庫(kù)有一定了解即可。
瀏覽器---->服務(wù)器---->數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)的分類(lèi)
關(guān)系型數(shù)據(jù)庫(kù):
MySQL、Oracle、SQL ServerSQLite(安卓)
非關(guān)系型數(shù)據(jù)庫(kù)
mongodbredisBigTableDBA
數(shù)據(jù)庫(kù)中基本術(shù)語(yǔ)
- 數(shù)據(jù)庫(kù)database:存放數(shù)據(jù)的倉(cāng)庫(kù),一般一個(gè)項(xiàng)目中的數(shù)據(jù)會(huì)存儲(chǔ)到一個(gè)數(shù)據(jù)庫(kù)中
- 表table: 一個(gè)表對(duì)應(yīng)一類(lèi)數(shù)據(jù),比如學(xué)生表,老師表
- 列columns:一張表由多列組成,也叫一個(gè)字段,比如學(xué)生的姓名,成績(jī),年齡等
- 行rows: 一個(gè)學(xué)生信息對(duì)應(yīng)一行,一行也叫一條記錄。
數(shù)據(jù)庫(kù)的可視化操作(創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表)
數(shù)據(jù)類(lèi)型(部分)
int: 整數(shù)類(lèi)型varchar: 字符類(lèi)型datetime: 日期類(lèi)型
數(shù)據(jù)庫(kù)的常見(jiàn)命令
SQL: 結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language)簡(jiǎn)稱(chēng)SQL 。用于數(shù)據(jù)庫(kù)的增刪改查以及管理等功能。
數(shù)據(jù)庫(kù)相關(guān)
--SQL中的注釋
SHOW DATABASES; 查看所有的數(shù)據(jù)CREATE DATABASE mydb;創(chuàng)建數(shù)據(jù)庫(kù)DROP DATABASE mydb;刪除數(shù)據(jù)庫(kù)USE mydb; 使用數(shù)據(jù)庫(kù)
表相關(guān)
SHOW TABLES;查看當(dāng)前數(shù)據(jù)庫(kù)中所有的表
創(chuàng)建表
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;刪除表
插入數(shù)據(jù)
INSERT INTO user (name, age, gender, content) VALUES ('胡聰聰', 18, '男', '哈哈哈,哈哈哈')
-- 如果省略列名,那么必須要和字段一一對(duì)應(yīng)
INSERT INTO user VALUES (null, '胡聰聰', 18, '男', '哈哈哈,哈哈哈')
?
INSERT INTO user SET name='hcc', age=18, gender='男', content='嘻嘻嘻'修改數(shù)據(jù)
// 修改所有的數(shù)據(jù) UPDATE USER SET name='胡西西' // 根據(jù)條件修改 UPDATE USER set name='胡聰聰', content="這是內(nèi)容" WHERE id = 2
刪除數(shù)據(jù)
// 刪除所有的數(shù)據(jù) DELETE FROM USER ? // 刪除id為5的數(shù)據(jù) DELETE FROM USER WHERE id = 5
查詢(xún)數(shù)據(jù)
-- 查詢(xún)所有數(shù)據(jù) SELECT * FROM user ? -- 查詢(xún)指定列 SELECT id, name,age from user
條件查詢(xún)
--- 并且
SELECT * from user where name='胡聰聰' AND age=21
?
--- 或者
SELECT * from user where name='胡聰聰' or age=21
?
-- 范圍查詢(xún)
?
-- 模糊查詢(xún) ?%表示通配 ?_表示單個(gè)字符
SELECT * from user where name LIKE '胡%'
?
-- in語(yǔ)句
SELECT * from user where name in ('胡聰聰', 'hcc')
?
-- order by
-- 排序需要寫(xiě)在最后面,,asc升序 ?desc:降序
SELECT * from user ORDER BY id desc
?
-- limit分頁(yè)
SELECT * from user ORDER BY id desc limit 3
SELECT * from user ORDER BY id desc limit 3,3
?
?
-- 獲取總條數(shù)
SELECT count(*) as total FROM user導(dǎo)入和導(dǎo)出數(shù)據(jù)庫(kù)腳本
node操作mysql
基本使用
安裝
npm install mysql
基本使用
// 導(dǎo)入第三方包
const mysql = require('mysql')
// 創(chuàng)建連接
var connection = mysql.createConnection({
? // 本地
? host: 'localhost',
? user: 'root',
? password: 'root',
? // 數(shù)據(jù)庫(kù)名稱(chēng)
? database: 'mydb',
? port: 3306
})
?
// 連接數(shù)據(jù)庫(kù)
connection.connect()
?
// 執(zhí)行sql語(yǔ)句
connection.query('select * from user where id = 8', (err, result) => {
? if (err) return console.log('查詢(xún)失敗', err)
? // result返回的是數(shù)組, 數(shù)組中是一個(gè)對(duì)象
? console.log(result)
})
?
// 關(guān)閉連接
connection.end()查詢(xún)語(yǔ)句
var name = '胡聰聰'
// 使用?表示占位,可以防止sql注入
connect.query(`select * from user where name=?`, name, (err, result) => {
? if (err) return console.log('錯(cuò)誤了', err)
? console.log(result)
})插入語(yǔ)句
connect.query(
? 'insert into user (name, age, gender, content) values (?, ?, ?, ?)',
? ['胡嘻嘻', 18, '男', '哈哈哈哈'],
? err => {
? ? if (err) return console.log('錯(cuò)誤', err)
? ? console.log('添加成功了')
? }
)
?
// 方式2
connect.query(
? 'insert into user set ?',
? {
? ? name: '胡洗洗',
? ? age: 30,
? ? gender: '男',
? ? content: '哈哈哈'
? },
? (err, result) => {
? ? if (err) return console.log('錯(cuò)誤', err)
? ? console.log('添加成功了', result)
? }
)修改語(yǔ)句
connect.query(
? 'update user set ? where id = ?',
? [
? ? {
? ? ? name: '胡洗洗',
? ? ? age: 30,
? ? ? gender: '男',
? ? ? content: '哈哈哈'
? ? },
? ? 10
? ],
? (err, result) => {
? ? if (err) return console.log('錯(cuò)誤', err)
? ? console.log('添加成功了', result)
? }
)刪除語(yǔ)句
connect.query('delete from user where id = ?', [10], (err, result) => {
? if (err) return console.log('失敗', err)
? console.log(result)
})db模塊封裝
// 導(dǎo)入mysql
const mysql = require('mysql')
?
// 創(chuàng)建連接對(duì)象
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()
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 使用nodejs連接mySQL寫(xiě)接口全過(guò)程(增刪改查)
- nodejs+mysql實(shí)現(xiàn)用戶(hù)相關(guān)的增刪改查的詳細(xì)操作
- 三分鐘教會(huì)你用nodejs操作mysql數(shù)據(jù)庫(kù)
- Nodejs?連接?mysql時(shí)報(bào)Error:?Cannot?enqueue?Query?after?fatal?error錯(cuò)誤的處理辦法
- NodeJs操作MYSQL方法詳細(xì)介紹
- Nodejs中koa2連接mysql的實(shí)現(xiàn)示例
- NodeJs+MySQL實(shí)現(xiàn)注冊(cè)登錄功能
- nodejs連接mysql數(shù)據(jù)庫(kù)及基本知識(shí)點(diǎn)詳解
- nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例
- Nodejs連接mysql并實(shí)現(xiàn)增、刪、改、查操作的方法詳解
- NodeJS連接MySQL數(shù)據(jù)庫(kù)并進(jìn)行增刪改查操作詳解
相關(guān)文章
nvm管理node無(wú)法正常切換node版本問(wèn)題的解決方法
相信一定會(huì)有存在一些小伙伴 明明都已經(jīng)按著操作卸載node 和安裝nvm 了但是 依舊無(wú)法正常通過(guò)nvm管理node,本文將給大家介紹nvm管理node無(wú)法正常切換node版本問(wèn)題的解決方法,需要的朋友可以參考下2024-01-01
koa-router路由參數(shù)和前端路由的結(jié)合詳解
這篇文章主要給大家介紹了關(guān)于koa-router路由參數(shù)和前端路由的結(jié)合的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用koa-router具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Node.js如何自動(dòng)審核團(tuán)隊(duì)的代碼
在項(xiàng)目開(kāi)發(fā)中,統(tǒng)一團(tuán)隊(duì)的代碼風(fēng)格很重要,本文介紹如何用Node.js來(lái)自動(dòng)審核,來(lái)提高您的開(kāi)發(fā)速度。2016-07-07
node.js支持多用戶(hù)web終端實(shí)現(xiàn)及安全方案
這篇文章主要介紹了node.js支持多用戶(hù)web終端實(shí)現(xiàn)方案以及web終端安全性保證的解決方法,一起學(xué)習(xí)參考下。2017-11-11
詳解如何模擬實(shí)現(xiàn)node中的Events模塊(通俗易懂版)
這篇文章主要介紹了如何模擬實(shí)現(xiàn)node中的Events模塊(通俗易懂版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
node通過(guò)express搭建自己的服務(wù)器
本篇文章主要介紹了node通過(guò)express搭建自己的服務(wù)器 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
node.js爬蟲(chóng)爬取拉勾網(wǎng)職位信息
本篇文章主要介紹了node.js爬蟲(chóng)爬取拉勾網(wǎng)職位信息的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
Node.js?子線(xiàn)程Crash?問(wèn)題的排查方法
這篇文章主要介紹了Node.js?子線(xiàn)程Crash?問(wèn)題的排查,本文通過(guò)代碼例子給大家詳細(xì)講解,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
node.js調(diào)用腳本(python/shell)和系統(tǒng)命令
這篇文章介紹了node.js調(diào)用腳本(python/shell)和系統(tǒng)命令的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07

