- 常用的資料庫代碼
-- 通過 * 把 users 表中所有的資料查詢出來
-- select * from users
-- 從 users 表中把 username 和 password 對應的資料查詢出來
-- select username, password from users
-- 向 users 表中,插入新資料,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 同時,把用戶的狀態更新為 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
-- 演示 where 子句的使用
-- select * from users where status=1
-- select * from users where id>=2
-- select * from users where username<>'ls'
-- select * from users where username!='ls'
-- 使用 AND 來顯示所有狀態為0且id小于3的用戶
-- select * from users where status=0 and id<3
-- 使用 or 來顯示所有狀態為1 或 username 為 zs 的用戶
-- select * from users where status=1 or username='zs'
-- 對users表中的資料,按照 status 欄位進行升序排序
-- select * from users order by status
-- 按照 id 對結果進行降序的排序 desc 表示降序排序 asc 表示升序排序(默認情況下,就是升序排序的)
-- select * from users order by id desc
-- 對 users 表中的資料,先按照 status 進行降序排序,再按照 username 字母的順序,進行升序的排序
-- select * from users order by status desc, username asc
-- 使用 count(*) 來統計 users 表中,狀態為 0 用戶的總數量
-- select count(*) from users where status=0
-- 使用 AS 關鍵字給列起別名
-- select count(*) as total from users where status=0
-- select username as uname, password as upwd from users
實際開發中庫、表、行、欄位的關系
- 在實際專案開發中,一般情況下,每個專案都對應獨立的資料庫,
- 不同的資料,要存盤到資料庫的不同表中,例如:用戶資料存盤到 users 表中,圖書資料存盤到 books 表中,
- 每個表中具體存盤哪些資訊,由欄位來決定,例如:我們可以為 users 表設計 id、username、password 這 3 個
欄位, - 表中的行,代表每一條具體的資料,
欄位的特殊標識
- PK(Primary Key)主鍵、唯一標識
- NN(Not Null)值不允許為空
- UQ(Unique)值唯一
- AI(Auto Increment)值自動增長
在專案中使用Mysql資料庫
在專案中操作資料庫的步驟
- 安裝操作 MySQL 資料庫的第三方模塊(mysql)
- 通過 mysql 模塊連接到 MySQL 資料庫
- 通過 mysql 模塊執行 SQL 陳述句

安裝mysql模塊
mysql 模塊是托管于 npm 上的第三方模塊,它提供了在 Node.js 專案中連接和操作 MySQL 資料庫的能力,想要在專案中使用它,需要先運行如下命令,將 mysql 安裝為專案的依賴包:
npm install mysql
配置mysql模塊
在使用 mysql 模塊操作 MySQL 資料庫之前,必須先對 mysql 模塊進行必要的配置,主要的配置步驟如下:

測驗mysql模塊是否可以正常作業
呼叫 db.query() 函式,指定要執行的 SQL 陳述句,通過回呼函式拿到執行的結果:
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'root',
database: 'bookman',
})
//檢查mysql模塊是否正常使用
db.query('SELECT 1', (err, results) => {
if (err) return console.log(err.message);
//只要可以輸出[ RowDataPacket { '1': 1 } ]的結果,就證明資料庫鏈接沒問題,
console.log(results);
})
查詢陳述句
查詢表中資料示例:
const mysql = require('mysql')
const db = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'root',
database: 'bookman',
})
db.query('SELECT * FROM tb_book', (err, results) => {
//查詢失敗
if (err) return console.log(err.message);
//查詢成功
//如果執行的是select查詢陳述句,則回傳的是陣列
console.log(results);
})
插入資料
向表中插入資料,示例代碼如下,
- 便捷方式
//插入資料 簡化形式
const user = { username: 'liyu2', password: '49023dfs!2' }
//待執行的sql陳述句
const sqlStr = 'INSERT INTO tb_user SET ?'
//使用陣列的形式,依次為?占位符指定具體的值,
db.query(sqlStr, user, (err, results) => {
//失敗了
if (err) return console.log(err.message);
//成功了
if (results.affectedRows) {
console.log('插入資料成功');
}
})
注意:
這種方法適合插入多項屬性時使用
db.query里的第二個值一定是物件,如果是多個值,就用中括號包含
如果執行的是insert into陳述句,則result是一個物件
可以通過affectedRows屬性,來判斷是否插入成功
- 初始形式
//插入資料
const list = { username: 'liyu3', password: '23123' }
//待執行的sql陳述句
const sqlstr = 'INSERT INTO tb_user SET ?'
//使用陣列的形式,依次為?占位符指定具體的值,
db.query(sqlstr, [list.username, list.password], (err, results) => {
//失敗了
if (err) return console.log(err.message);
//成功了
//注意:如果執行的是insert into陳述句,則result是一個物件
//可以通過affectedRows屬性,來判斷是否插入成功
if (results.affectedRows) {
console.log('插入資料成功');
}
})
更新資料
可以通過如下方式,更新表中的資料:
//需要更新的資料
const update = { username: 'liyu', password: '3343' }
//要執行的SQL陳述句
const updateSql = 'UPDATE tb_user SET password=? WHERE username = ?'
//3.呼叫db.query()執行 SQL 陳述句的同時,依次為占位符指定具體的值
db.query(updateSql, [update.password, update.username], (err, results) => {
if (err) return console.log(err.message);
if (results.affectedRows) { console.log('更新狀態成功'); }
})
注意:
執行了update后,回傳的也是一個物件,可以通過.affectedRows來判斷是否成功
- 便捷方式
const update2 = { username: 'liyu2', password: '111' }
const updateSql1 = 'UPDATE tb_user SET ? WHERE username=?'
db.query(updateSql1, [update2, update2.username], (err, results) => {
if (err) return console.log(err.message);
if (results.affectedRows) { console.log('更新成功'); }
})
注意:
在是使用便捷方式開發代碼時需要注意,db.query里的第二引數里,第一個值一定是物件,
洗掉資料
在洗掉資料時,推薦根據 id 這樣的唯一標識,來洗掉對應的資料,示例如下:
const sqlStr = 'delete from tb_user where username = ?'
db.query(sqlStr, 'liyu2', (err, results) => {
if (err) return console.log(err.message);
if (results.affectedRows) {
console.log('洗掉成功');
}
})
注意:
呼叫db.query()執行SQL陳述句時,為占位符指定具體的值
如果SQL里有多個占位符,則必須使用陣列為每個占位符指定具體的值
如果SQL里只有一個占位符,則可以省略陣列
標記洗掉
使用 DELETE 陳述句,會把真正的把資料從表中洗掉掉,為了保險起見,推薦使用標記洗掉的形式,來模擬洗掉的動作,
所謂的標記洗掉,就是在表中設定類似于 status 這樣的狀態欄位,來標記當前這條資料是否被洗掉,
當用戶執行了洗掉的動作時,我們并沒有執行 DELETE 陳述句把資料洗掉掉,而是執行了 UPDATE 陳述句,將這條資料對應
的 status 欄位標記為洗掉即可,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/468782.html
標籤:JavaScript
