Mysql 【复习】
1. 基本概念
Mysql是一种开源的关系型数据库管理系统(DBMS)
--几种常见的数据库--
oracle 优秀 商用 数据库
MongoDB 非关系型数据库
sqLite 嵌入式数据库
Mysql 关系型数据库
2. 创建数据库
命令: CREATE DATABASE `库名` DEFAULT CHARACTER SET = 'utf8mb4' 即可创建数据库

3. 创建表

4. 库表SQL语句

5. 查询操作
# 查询单个列 -- SELECT 参数名 FROM `表名` # 查询多个列 -- SELECT 参数名1,参数名2 FROM `表名` # 查询所有列 -- SELECT * FROM `表名` # 列的别名 -- SELECT id as user_id FROM `表名` # 排序 -- 排序方式: ASC 升序/DESC 降序 -- SELECT * FROM `表名` ORDER BY 参数名 排序方式 # 限制查询结果 -- 开始行0 数量3 从0开始查3条 -- SELECT * FROM `表名` LIMIT 0,3 # 条件查询 -- SELECT * FROM `表名` WHERE 条件 # 联合查询 -- SELECT * FROM `表名` WHERE 条件1 AND 条件2 -- SELECT * FROM `表名` WHERE 条件1 OR 条件2 # 模糊查询 -- %查询参数 以参数结尾的数据 -- %查询参数% 数据中带有参数的数据 -- _查询参数% 模糊查询参数前一个字符 -- SELECT * FROM `user` WHERE NAME LIKE '%查询参数';
6. 增删改操作
# 添加数据 -- 多个即一次添加多个 -- 参数支持NULL -- INSERT INTO 表名(`参数1`, `参数2`) VALUES ('值1', '值2'), ('值1', '值2'); -- INSERT INTO user(`name`, `age`, `address`) VALUES ('王五', '15', '北京市朝阳区'); # 更新数据 -- UPDATE `表名` SET key = value -- WHERE 条件 -- UPDATE `user` SET name = '张三1', address = '北京市海淀区' WHERE id = 1; # 删除数据 -- DELETE FROM `表名` WHERE 条件 -- DELETE FROM `user` WHERE id = 1; -- 批量删除 -- DELETE FROM `user` WHERE id IN (1, 2, 3);
7. 表达式 + 函数
### 表达式 + 函数 -- SELECT age + 100 as newage FROM `user`; # 字符串拼接 -- SELECT CONCAT(name, ' ', address) as full_info FROM `user`; # 截取 -- 左截取 -- SELECT LEFT(name, 1) as leftname FROM `user`; -- 右截取 -- SELECT RIGHT(name, 1) as rightname FROM `user`; -- 随机数 -- SELECT RAND() as randnum FROM `user`; -- 求和 -- SELECT SUM(age) as total_age FROM `user`; -- 平均值 -- SELECT AVG(age) as average_age FROM `user`; -- 最大值 -- SELECT MAX(age) as max_age FROM `user`; -- 最小值 -- SELECT MIN(age) as min_age FROM `user`; -- 合计 -- SELECT COUNT(*) as total_count FROM `user`; -- 当前时间 -- SELECT NOW() as current_time FROM `user`; -- 加一天 -- SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) as tomorrow FROM `user`; -- 减一天 -- SELECT DATE_SUB(NOW(), INTERVAL 1 DAY) as yesterday FROM `user`; -- 条件判断 前面是true 值 后面是false 值 -- SELECT IF(age > 18, '成年人', '未成年人') as age_group FROM `user`;
8. 子查询
### 子查询 -- SELECT * FROM `table` WHERE user_id = 1; SELECT * FROM `table` WHERE user_id = (SELECT id FROM `user` WHERE name = '王五'); -- 连表查询 -- 目的: 把table表的数据和user表的数据合并到一起 -- 内连接 -- 同时查询user和table 用user表的id和table表的user_id进行关联 可以同时查出user和table表的数据 -- SELECT * FROM `user`,`table` WHERE `user`.`id` = `table`.`user_id`; -- 外连接 -- 左连接 -- SELECT * FROM `表名` LEFT JOIN ON 条件 -- 以左表为主表 右表的数据如果没有匹配上 则显示NULL SELECT * FROM `user` LEFT JOIN `table` ON `user`.`id` = `table`.`user_id`; -- 右连接 -- SELECT * FROM `表名` RIGHT JOIN ON 条件 -- 以右表为主表 左表的数据如果没有匹配上 则显示NULL SELECT * FROM `user` RIGHT JOIN `table` ON `user`.`id` = `table`.`user_id`;
9. mysql2
npm i mysql2
npm i express
npm i js-yaml
-- package.json 里的 type 设置为 module
// 简易demo // 这里使用promise 路径后也要接promise import mysql2 from 'mysql2/promise' import fs from 'node:fs' import jsyaml from 'js-yaml' import express from 'express' const yaml = fs.readFileSync('./db.config.yaml', 'utf8') const config = jsyaml.load(yaml) // console.log('config1',config) // 此时是同步的 // 使用await 将他变成异步模式 const sql = await mysql2.createConnection({ ...config.db }) // mysql2.createConnection({ // host: 'localhost', // user: 'root', // password: '', // database: 'test' // }) const app = express() app.use(express.json()) // 查询接口 app.get('/', async (req,res) => { // 返回的是二维数组 [[],[]] const [data] = await sql.query('select * from user') res.send(data) }) // 查询单个 app.get('/user/:id', async (req,res) => { const [row] = await sql.query('select * from user where id = ?', [req.params.id]) res.send(row) }) // 新增接口 app.post('/add', async (req,res) => { const { name, age, address } = req.body await sql.query(`insert into user(name,age,address) values (?,?,?)`,[name, age, address]) res.send({ status: 'success', msg: '新增成功' }) }) // 修改接口 app.post('/update', async (req,res) => { const { name, age, address, id } = req.body await sql.query(`update user set name = ?,age =?, address=? where id = ?`,[name, age, address, id]) res.send({ status: 'success', msg: '修改成功' }) }) // 删除接口 app.delete('/del/:id',async (req,res) => { await sql.query(`delete from user where id = ?`, [req.params.id]) res.send({ status: 'success', msg: '删除成功' }) }) const port = 3000 app.listen(port, () => { console.log(`Example app listening on port ${port}`) })
db.config.yaml文件
db: user: root password: '你的数据库密码' host: localhost port: 3306 database: 你的数据库名字
浙公网安备 33010602011771号