MYSQL

mysql

mysql的安装

  1. 优势: 企业常用(专人维护), 社区常用(方便查错)
    1. web server中最流行的关系型数据库
    2. 官网免费下载, https://dev.mysql.com/downloads/mysql/
    3. 轻量级, 易学易用
  2. 安装: 下载安装, 注意记得root用户名, 数据库密码

mysql workbench 的安装

  1. mysql workbench

    1. 操作mysql客户端, 可视化操作
    2. 下载官网: https://dev.mysql.com/downloads/workbench/
  2. workbench的连接


    workbench-init.png
  1. workbench的语句查询


    sql语句的执行.png

SQL的增删改查

建库

  1. sql语句建库: CREATE SCHEMA myblog ;

  2. workbench建库(上下都可)


    create-sql.png

建表

  1. 基本表结构


    表结构.png
  1. 成功建表(sql语法可建, 但是比较麻烦)


    成功建表.png
  1. 表结构的删除和编辑


    edit-table.png

表操作

  1. SQL语法执行:

    新增表数据.png
  1. 表数据的增删改查

    1. 增(id的自增不会考虑你删除的, 就只是一直增)

          -- 给某个表新增数据
          insert into users(username, `password`, realname) value('zhangshan', '123', '张三');
      

    2. 一般不会真的删除, 只是多加字段state, 1代表存在, 0代表不存在

          -- 清除所有的表
          delete from users;
          -- 清除某条数据
          delete from users where username='zhangshan';
      

    3. 软删除, 只是更新状态

          -- 把所有数据realname都改成',lisi'
          update users set realname='lisi';
          -- 更新某条数据(可能会报错, 解决在5)
          update users set realname='lisi' where username='lisi';
      
    4.     -- 展示数据库的所有表
          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';
      
    5. 其他sql语句

          -- 执行一次, 更换换模式, 否则删除和修改会报错
          SET SQL_SAFE_UPDATES=0;
          -- 查询mysql版本, 当前版本 >= 5时, VARCHAR(10)时, 不论中文英文都是10个字符
          select version();
          -- 1=1 的用法是在搜索时, 保证哪怕没有其他搜索词, where也不会报错
          select * from blogs where 1=1
      

Nodejs操作MySql

  1. 封装成工具包, 调用api可直接操作数据库

  2. 安装插件: npm i mysql -S

  3. 报错

        // 执行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();
```
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容