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: 你的数据库名字

 

posted on 2025-06-03 22:35  贲风  阅读(8)  评论(0)    收藏  举报