mysql
mysql的安裝
- 優(yōu)勢(shì): 企業(yè)常用(專人維護(hù)), 社區(qū)常用(方便查錯(cuò))
- web server中最流行的關(guān)系型數(shù)據(jù)庫(kù)
- 官網(wǎng)免費(fèi)下載,
https://dev.mysql.com/downloads/mysql/ - 輕量級(jí), 易學(xué)易用
- 安裝: 下載安裝, 注意記得root用戶名, 數(shù)據(jù)庫(kù)密碼
mysql workbench 的安裝
-
mysql workbench
- 操作mysql客戶端, 可視化操作
- 下載官網(wǎng):
https://dev.mysql.com/downloads/workbench/
-
workbench的連接
workbench-init.png
-
workbench的語(yǔ)句查詢
sql語(yǔ)句的執(zhí)行.png
SQL的增刪改查
建庫(kù)
sql語(yǔ)句建庫(kù): CREATE SCHEMA
myblog;-
workbench建庫(kù)(上下都可)
create-sql.png
建表
-
基本表結(jié)構(gòu)
表結(jié)構(gòu).png
-
成功建表(sql語(yǔ)法可建, 但是比較麻煩)
成功建表.png
-
表結(jié)構(gòu)的刪除和編輯
edit-table.png
表操作
-
SQL語(yǔ)法執(zhí)行:
新增表數(shù)據(jù).png
-
表數(shù)據(jù)的增刪改查
-
增(id的自增不會(huì)考慮你刪除的, 就只是一直增)
-- 給某個(gè)表新增數(shù)據(jù) insert into users(username, `password`, realname) value('zhangshan', '123', '張三'); -
刪
一般不會(huì)真的刪除, 只是多加字段state, 1代表存在, 0代表不存在-- 清除所有的表 delete from users; -- 清除某條數(shù)據(jù) delete from users where username='zhangshan'; -
改
軟刪除, 只是更新?tīng)顟B(tài)-- 把所有數(shù)據(jù)realname都改成',lisi' update users set realname='lisi'; -- 更新某條數(shù)據(jù)(可能會(huì)報(bào)錯(cuò), 解決在5) update users set realname='lisi' where username='lisi'; -
查
-- 展示數(shù)據(jù)庫(kù)的所有表 show tables; -- 查詢表中所有列, 慎用* select * from users; -- 查詢列中某些列 select id, username from users; -- 查詢某條數(shù)據(jù)(交集) select * from users where username='zhangshan' and `password`='123'; -- 查詢并集 select * from users where username='zhangshan' or `password`='123'; -- 模糊查詢 select * from users where username like '%zhang%' -- 模糊查詢,并排序(默認(rèn)正序從小到大) select * from users where `password` like '%1%' order by id; -- 模糊查詢,并排序(倒序) select * from users where `password` like '%1%' order by id desc; -- 不等于<> select * from users where state <> '0'; -
其他sql語(yǔ)句
-- 執(zhí)行一次, 更換換模式, 否則刪除和修改會(huì)報(bào)錯(cuò) SET SQL_SAFE_UPDATES=0; -- 查詢mysql版本, 當(dāng)前版本 >= 5時(shí), VARCHAR(10)時(shí), 不論中文英文都是10個(gè)字符 select version(); -- 1=1 的用法是在搜索時(shí), 保證哪怕沒(méi)有其他搜索詞, where也不會(huì)報(bào)錯(cuò) select * from blogs where 1=1
-
Nodejs操作MySql
封裝成工具包, 調(diào)用api可直接操作數(shù)據(jù)庫(kù)
安裝插件:
npm i mysql -S-
報(bào)錯(cuò)
// 執(zhí)行mysql語(yǔ)句時(shí), 原因是沒(méi)有配置數(shù)據(jù)庫(kù)初始密碼 { sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', }use '你的數(shù)據(jù)庫(kù)'; -- 解決方案 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的Mysql密碼'; SELECT plugin FROM mysql.user WHERE User = 'root'; FLUSH PRIVILEGES;
Demo
```js
// 引包
const mysql = require('mysql');
// 數(shù)據(jù)庫(kù)的連接信息, 通常單獨(dú)抽出配置
const MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: '數(shù)據(jù)庫(kù)密碼',
port: '3306',
database: 'myblog'
}
// 創(chuàng)建mysql 對(duì)象
const con = mysql.createConnection(MYSQL_CONF)
// 開(kāi)始連接
con.connect();
// 執(zhí)行sql語(yǔ)句
// 返回json字符串
// const sql = "select * from users;";
// const sql = "select id, username from users;";
// 返回對(duì)象, 看受影響的行數(shù), changedRows: 1
// const sql = "update users set realname='李四2' where id='3'";
// 返回對(duì)象, 看插入的id, insertId: 4,
const sql = "insert into users (username, password, realname) value('wangwu', '123', '王五');"
con.query(sql, (err, result) => {
if (err) {
console.error(err);
return
}
console.log(result);
})
// 關(guān)閉連接
con.end();
```






