MYSQL

作者: 我的钱包瘪瘪的 | 来源:发表于2019-11-05 19:18 被阅读0次

    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();
    ```
    

    相关文章

      网友评论

          本文标题:MYSQL

          本文链接:https://www.haomeiwen.com/subject/mgpebctx.html