node終端里如何連接mysql數(shù)據(jù)庫(kù)并進(jìn)行sql查詢
node終端里面怎么來連接數(shù)據(jù)庫(kù)
今天結(jié)束的挺早,因?yàn)榻裉斓膬?nèi)容還可以不是很難,今天全程是學(xué)了一些關(guān)于mysql數(shù)據(jù)庫(kù)和sql查詢語(yǔ)句的內(nèi)容包括在node終端里面怎么來連接數(shù)據(jù)庫(kù)。經(jīng)過今天的一個(gè)學(xué)習(xí),我感覺離那個(gè)地步越來越近了,就是那個(gè)自己完成一個(gè)網(wǎng)站,有服務(wù)器、有響應(yīng),就跟現(xiàn)在這些上線的網(wǎng)站一樣一樣的,越來越近了。
這些內(nèi)容其實(shí)上學(xué)期間就學(xué)過了,現(xiàn)在主要是拿來復(fù)習(xí)一下。
數(shù)據(jù)庫(kù)的基本概念
首先我們先了解一下數(shù)據(jù)庫(kù)的基本概念,用來組織、存儲(chǔ),管理數(shù)據(jù)的倉(cāng)庫(kù)。
我們傳統(tǒng)型數(shù)據(jù)庫(kù)(mysql、sql、Oracle)的一個(gè)數(shù)據(jù)結(jié)構(gòu)為:數(shù)據(jù)庫(kù)》數(shù)據(jù)表》數(shù)據(jù)行》字段
庫(kù)、表、行、字段之間的一些關(guān)系:
- ①每個(gè)項(xiàng)目都有獨(dú)立的數(shù)據(jù)庫(kù)文件
- ②不同的數(shù)據(jù)要放在不同的表中,比如一個(gè)用戶信息就應(yīng)該放到user表中
- ③每個(gè)表要存放哪些信息是由字段來決定的
- ④表中的行代表一條具體的數(shù)據(jù)
安裝配置mysql
其實(shí)還是有一些步驟的,建議baidu就不多贅述了這里。
然后裝好后用workbench去創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)再去創(chuàng)建一個(gè)表這個(gè)時(shí)候就有一些數(shù)據(jù)類型參考了,常見的int整數(shù)型,varchar字符串型、tinyint是布爾值
包括還有一些特殊標(biāo)識(shí),pk代表主鍵具有唯一標(biāo)識(shí),nn是not null不能為空值,uq是值唯一,ai是值會(huì)自增
sql結(jié)構(gòu)化查詢語(yǔ)言
上面是通過用那個(gè)工具去寫一些數(shù)據(jù)進(jìn)去,但是我們是程序員那肯定是要用代碼來實(shí)現(xiàn)的,sql結(jié)構(gòu)化查詢語(yǔ)言來了,專門搞數(shù)據(jù)庫(kù)的語(yǔ)言。
無非就是四個(gè)增刪改查,我說一下一些注意點(diǎn),然后就可以看代碼就行了。
首先是增這里的列名和值必須要一一對(duì)應(yīng)就沒有了
-- 通過 * 把 users 表中所有的數(shù)據(jù)查詢出來 -- select * from users -- 從 users 表中把 username 和 password 對(duì)應(yīng)的數(shù)據(jù)查詢出來 -- select username, password from users -- 向 users 表中,插入新數(shù)據(jù),username 的值為 tony stark password 的值為 098123 -- insert into users (username, password) values ('tony stark', '098123') -- select * from users -- 將 id 為 4 的用戶密碼,更新成 888888 -- update users set password='888888' where id=4 -- select * from users -- 更新 id 為 2 的用戶,把用戶密碼更新為 admin123 同時(shí),把用戶的狀態(tài)更新為 1 -- update users set password='admin123', status=1 where id=2 -- select * from users -- 刪除 users 表中, id 為 4 的用戶 -- delete from users where id=4 -- select * from users -- and運(yùn)算符 -- select * from users where id = 1 and username = '2' -- select * from users where id = 1 or username = '2' -- oder by -- select * from users order by id desc -- count select count(*) as total from users where status = 0
mysql模塊
怎么在項(xiàng)目中來操作一個(gè)mysql
首先要安裝通過npm然后要配置來連接那個(gè)數(shù)據(jù)庫(kù),再去執(zhí)行一些語(yǔ)句,主要實(shí)現(xiàn)的功能還是一個(gè)增刪查改
注意
查:返回的是一個(gè)數(shù)組
增:sql語(yǔ)句中用?先來作為占位符先不填充數(shù)據(jù),后面的也是這樣,返回的是一個(gè)對(duì)象,里面有一個(gè)屬性affectedRows也就是被影響的行,要等于一這個(gè)操作才能被算作生效,
然后由于我們的id具有唯一標(biāo)識(shí)性,所以如果你刪了4,又去增加一個(gè)那么他的id是5不是4,增有便捷版操作
改:也有便捷版,也返回的是一個(gè)對(duì)象,注意他的便捷版的where條件不能夠省略
刪:推薦以id這個(gè)唯一標(biāo)識(shí)符作為條件來刪除,然后我們delete就是真的從數(shù)據(jù)庫(kù)刪除了,其實(shí)是有點(diǎn)危險(xiǎn)的,因?yàn)槿f一用戶反悔了想恢復(fù)回來,這個(gè)時(shí)候就沒辦法了,所以我們一般是用標(biāo)記刪除,也就是通過update來改類似于status的值來達(dá)到一個(gè)模擬刪除的操作,并沒有真正從數(shù)據(jù)庫(kù)刪除
// 1. 前面如果通過npm安裝了mysql第三方包后,就需要配置一下mysql模塊了 // 首先是導(dǎo)入 const mysql = require('mysql') // 通過mysql.createPool來配置 const db = mysql.createPool({ host : '127.0.0.1', // 數(shù)據(jù)庫(kù)的ip地址 user : 'root' , // 登錄數(shù)據(jù)庫(kù)的賬號(hào) password : 'admin123', // 登錄數(shù)據(jù)庫(kù)密碼 database : 'my_db_01' // 指定要操作哪個(gè)數(shù)據(jù)庫(kù) }) // 2.測(cè)試mysql // select 1 沒有任何作用只是可以測(cè)試是否連接成功 db.query('select 1' ,(err, results) => { if (err) return err.message return console.log(results); }) // 3. 查詢數(shù)據(jù) db.query('select * from users', (err, results) => { if (err) return err.message return console.log(results); }) // 4.插入數(shù)據(jù) /* let obj = { username : '流星', password : '653213' } */ // 4.1注意sql語(yǔ)句中可用?來占位 /* let insertStr = 'insert into users(username, password) values (?,?)' // 4.2使用數(shù)組的形式可以依次去填補(bǔ)?里面的值 db.query(insertStr, [obj.username, obj.password] ,(err, results) => { if (err) return err.message // 4.3用到rsults的一個(gè)屬性 表示影響的行數(shù),只有當(dāng)為一才表示真正的插入成功了 if (results.affectedRows == 1) return console.log('數(shù)據(jù)添加成功'); }) */ // 4.2插入數(shù)據(jù)便捷版 /* let obj = { username : 'jj', password : '653213' } let insertStr = 'insert into users set ?' // 4.2使用數(shù)組的形式可以依次去填補(bǔ)?里面的值 db.query(insertStr, obj ,(err, results) => { if (err) return err.message // 4.3用到rsults的一個(gè)屬性 表示影響的行數(shù),只有當(dāng)為一才表示真正的插入成功了 if (results.affectedRows == 1) return console.log('數(shù)據(jù)添加成功'); }) */ // 5.改數(shù)據(jù) /* let user = {username : '姐姐', password : '1243333', id : '9'} let updateStr = 'update users set username = ? , password = ? where id = ?' db.query(updateStr, [user.username, user.password, user.id], (err, results) => { if (err) { return err.message } else if (results.affectedRows == 1) { return console.log('更新數(shù)據(jù)成功'); } }) */ // 5.1便捷版 /* let user = {username : '姐姐', password : '1243333', id : '9'} let updateStr = 'update users set ? where id = ?' db.query(updateStr, [user, user.id], (err, results) => { if (err) { return err.message } else if (results.affectedRows == 1) { return console.log('更新數(shù)據(jù)成功'); } }) */ // 6.刪除數(shù)據(jù) let deleteStr = 'delete from users where id = ?' db.query(deleteStr, 9, (err, results) => { if (err) { return err.message } else if (results.affectedRows == 1) { return console.log('刪除數(shù)據(jù)成功'); } })
以上就是node終端里如何連接mysql數(shù)據(jù)庫(kù)并進(jìn)行sql查詢的詳細(xì)內(nèi)容,更多關(guān)于node連接mysql查詢sql的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法示例
這篇文章主要介紹了nodejs清空/刪除指定文件夾下面所有文件或文件夾的方法,通過兩個(gè)具體案例形式分析了node.js同步刪除文件/文件夾,以及異步刪除文件/文件夾的相關(guān)實(shí)現(xiàn)技巧,涉及遞歸遍歷與文件判斷、回調(diào)等相關(guān)操作,需要的朋友可以參考下2023-04-04Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查
這篇文章主要介紹了Node.js+Express+Mysql 實(shí)現(xiàn)增刪改查,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04