mysql
mysql的安装
- 优势: 企业常用(专人维护), 社区常用(方便查错)
- web server中最流行的关系型数据库
- 官网免费下载,
https://dev.mysql.com/downloads/mysql/
- 轻量级, 易学易用
- 安装: 下载安装, 注意记得root用户名, 数据库密码
mysql workbench 的安装
-
mysql workbench
- 操作mysql客户端, 可视化操作
- 下载官网:
https://dev.mysql.com/downloads/workbench/
-
workbench的连接
workbench-init.png
-
workbench的语句查询
sql语句的执行.png
SQL的增删改查
建库
-
sql语句建库: CREATE SCHEMA
myblog
; -
workbench建库(上下都可)
create-sql.png
建表
-
基本表结构
表结构.png
-
成功建表(sql语法可建, 但是比较麻烦)
成功建表.png
-
表结构的删除和编辑
edit-table.png
表操作
-
SQL语法执行:
新增表数据.png
-
表数据的增删改查
-
增(id的自增不会考虑你删除的, 就只是一直增)
-- 给某个表新增数据 insert into users(username, `password`, realname) value('zhangshan', '123', '张三');
-
删
一般不会真的删除, 只是多加字段state, 1代表存在, 0代表不存在
-- 清除所有的表 delete from users; -- 清除某条数据 delete from users where username='zhangshan';
-
改
软删除, 只是更新状态
-- 把所有数据realname都改成',lisi' update users set realname='lisi'; -- 更新某条数据(可能会报错, 解决在5) update users set realname='lisi' where username='lisi';
-
查
-- 展示数据库的所有表 show tables; -- 查询表中所有列, 慎用* select * from users; -- 查询列中某些列 select id, username from users; -- 查询某条数据(交集) 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%' -- 模糊查询,并排序(默认正序从小到大) 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语句
-- 执行一次, 更换换模式, 否则删除和修改会报错 SET SQL_SAFE_UPDATES=0; -- 查询mysql版本, 当前版本 >= 5时, VARCHAR(10)时, 不论中文英文都是10个字符 select version(); -- 1=1 的用法是在搜索时, 保证哪怕没有其他搜索词, where也不会报错 select * from blogs where 1=1
-
Nodejs操作MySql
-
封装成工具包, 调用api可直接操作数据库
-
安装插件:
npm i mysql -S
-
报错
// 执行mysql语句时, 原因是没有配置数据库初始密码 { sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client', sqlState: '08004', }
use '你的数据库'; -- 解决方案 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');
// 数据库的连接信息, 通常单独抽出配置
const MYSQL_CONF = {
host: 'localhost',
user: 'root',
password: '数据库密码',
port: '3306',
database: 'myblog'
}
// 创建mysql 对象
const con = mysql.createConnection(MYSQL_CONF)
// 开始连接
con.connect();
// 执行sql语句
// 返回json字符串
// const sql = "select * from users;";
// const sql = "select id, username from users;";
// 返回对象, 看受影响的行数, changedRows: 1
// const sql = "update users set realname='李四2' where id='3'";
// 返回对象, 看插入的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);
})
// 关闭连接
con.end();
```
网友评论