• 01 数据库概述以及MySQL的环境搭建


    1. 数据库相关概念

    • 持久化: 数据保存到可掉电式存储设备中以供以后使用。数据持久化以为着将内存中的胡数据保存到硬盘上加以固化,持久化的实现过程大多是通过各种关系型数据库来完成。
    • DB:数据库(DataBase),存储数据的仓库,本质是一个文件系统,保存了一系列的有组织的数据。
    • DBMS:数据库管理系统(DataBase Management System),是一种操控和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。
    • SQL:结构化查询语言(Structured Query Language),专门用来与数据库通信的语言。

    数据库与数据库管理系统的关系

    image-20220617003215815

    2. 关系型数据库和非关系型数据库

    image-20220617003418531

    从排名中可以看出,关系型数据库仍然是目前DBMS的主流,其中使用的最多的DBMS是Oracle、MySQL、SQL Serve,这些都是关系型数据库(RDBMS)。

    • 关系型数据库主要通过行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表(table),一组表就形成了一个数据库(database),表与表之间存在的一定的关系,因此称为关系型数据库。
      • 优点
        • 复杂查询可以用SQL语句实现在一个表以及多个表之间做非常复杂的数据查询
        • 事务支持使得对于安全性能很高的数据访问要求得以实现
    • 非关系型数据库
      • 键值型数据库 Redis
      • 文档型数据库 MongoDB
      • 搜索引擎数据库 Elasticsearch
      • 列式数据库 HBasehttps://downloads.mysql.com/archives/installer/
      • 图形数据库 Neo4j

    3. MySQL的环境搭建

    8.0版本下载地址:

    https://dev.mysql.com/downloads/windows/installer/8.0.html

    其他版本下载地址:

    https://downloads.mysql.com/archives/installer/

    备用百度网盘下载方式

    链接:https://pan.baidu.com/s/1oG9sQ-7tcaOjibWDM5_9EQ?pwd=ym8l
    提取码:ym8l

    windows

    安装

    • 选择自定义方式,可以自定义安装组件以及相关配置。

      image-20220617011346183

    • 选装安装组件以及安装位置

      image-20220617011551933

      image-20220617011653899

    • MySQL配置,可以配置端口号和configType,这个configType后面也可以自己修改配置来实现。

      image-20220617012147994

      8.0和5.0的第一个区别,密码加密区别

      image-20220617012216727

      设置root用户密码

      image-20220617012233329

      设置服务名,并且设置是否开机启动

      image-20220617012444623

    注意:安装多个MySQL的时候需要在安装页面选择不升级端口号和之前的MySQL端口号不同

    取消升级

    image-20220617013057988

    添加新的数据库

    image-20220617013123022

    端口号设置不一致

    image-20220617013332839

    卸载

    • 利用控制面板中卸载程序进行卸载

      image-20220618003536712

      卸载后需要手动删除安装目录以及数据目录

    • 通过安装包提供的卸载功能进行卸载

      image-20220618003701660

      点击next确认卸载

      image-20220618003724725

      勾选是否删除数据目录(如果勾选,数据目录会被删除,所有数据都会清空)

      image-20220618003805801

      执行卸载

      image-20220618003823766

      卸载完成后需要完成一下两件事情

      • 残余文件清理(包括安装目录和数据目录)
      • 清楚环境变量的配置

    环境配置

    • 启动服务:按照上面的安装方式已经配置了MySQL服务开机自启动,但是也可以手动启动服务

      # 这里需要管理员权限运行命令行窗口
      net start MYSQL80
      
    • 关闭服务

      # 这里需要管理员权限运行命令行窗口
      net stop MYSQL80
      

      这里的启动服务和关闭服务也可以用windows控制面板中的服务页面关闭打开

    • 连接服务器

      # 明文密码链接服务器(密码为123456),这里不配置端口号默认采用环境变量对应的端口号
      mysql -uroot -p123456
      # 明文密码指定ip端口号,默认端口号是3306
      mysql -uroot -p123456 -hlocal -P3306
      # 输入隐藏密码,指定ip端口号
      mysql -uroot -hlocal -P3306 -p
      

    linux

    待补充

    4. MySQL的基本使用

    • 查看所有数据库
      • information_schema保存了MySQL数据库服务器的系统信息,例如数据库的名称、数据库的表名、字段名称、存储权限、数据文件,所在的文件夹和系统使用的文件夹等
      • performance_schema用来监控MySQL的各类性能指标
      • sys数据库主要作用是以一种更容易被理解的方式展示 MySQL 数据 库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL 的技术性能。
      • mysql数据库库保存了 MySQL 数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的 字符集、约束检查信息,等等
    # 查看所有数据库
    show databases;
    # 可以看到四个数据库
    #+--------------------+
    #| Database           |
    #+--------------------+
    #| information_schema |
    #| mysql              |
    #| performance_schema |
    #| sys                |
    #+--------------------+
    
    • 创建数据库

      create database 数据库名;
      # 数据库名不能和数据库中已有数据库名相同
      create database demo;
      
    • 使用数据库

      user 数据库名;
      
      use demo;
      
    • 查看所使用的数据库所有表格

      show tables from 数据库名;
      
    • 创建新的表格

      create table 表名称(
      	字段名 数据类型,
          字段名 数据类型
      )
      
      # 创建学生表
      create table student(
      	id int,
          name varchar(20) # 名字最长20个字符
      )
      
    • 查看一个表的数据

      select * from 数据库表名;
      
      # 查看学生表的数据
      select * from student;
      
    • 添加一条数据

      insert into 表名称 values(值列表);
      
      # 添加两条记录到student表中
      insert into student values(1, '张三');
      insert into student values(1, '李四');
      

      如果是mysql5这里会因为字符集的问题报错

      mysql> insert into student values(1,'张三');
      ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at
      row 1
      mysql> insert into student values(2,'李四');
      ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at
      row 1
      mysql> show create table student;
      
    • 查看表的创建信息

      show create table student;
      
      /* +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Table   | Create Table                                                                                                                                           |
      +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
      | student | CREATE TABLE `student` (
        `id` int DEFAULT NULL,
        `name` varchar(20) DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
      +---------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec) */
      
      # 或者这种方式也可以
      show create table student\G # 不带分号
      /*
      *************************** 1. row ***************************
             Table: student
      Create Table: CREATE TABLE `student` (
        `id` int DEFAULT NULL,
        `name` varchar(20) DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
      1 row in set (0.00 sec)
      */
      

      这里是mysql8字符集默认是utf8mb4支持中文,但是在mysql5中这里是latin1,不支持中文

    • 删除表格

      drop table 表名;
      
      # 删除student表名
      drop table student;
      
    • 删除数据库

      drop database 数据库名;
      
      # 删除demo数据库
      drop database demo;
      

    5. MySQL的编码设置

    问题背景:

    MySQL5.x中,会出现命令行插入中文,操作sql乱码问题,这是因为MySQL5.x中是默认Latin1,MySQL8.0之后默认是编码改为了utf8mb4,因此不会出现编码导致的插入问题。

     insert into student values(1,'张三');
    /*
    ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
    */
    

    问题解决:

    • 查看编码命令

      show variables like 'character_%';
      /*
      +--------------------------+-------------------------------------------------+
      | Variable_name            | Value                                           |
      +--------------------------+-------------------------------------------------+
      | character_set_client     | gbk                                             |
      | character_set_connection | gbk                                             |
      | character_set_database   | latin1                                          |
      | character_set_filesystem | binary                                          |
      | character_set_results    | gbk                                             |
      | character_set_server     | latin1                                          |
      | character_set_system     | utf8                                            |
      | character_sets_dir       | D:\tools\MySQL\MySQL Server 5.7\share\charsets\ |
      +--------------------------+-------------------------------------------------+
      */
      
      show variables like 'collation_%';
      /*
      +----------------------+-------------------+
      | Variable_name        | Value             |
      +----------------------+-------------------+
      | collation_connection | gbk_chinese_ci    |
      | collation_database   | latin1_swedish_ci |
      | collation_server     | latin1_swedish_ci |
      +----------------------+-------------------+
      */
      

      可以看到最终的字符集编码是latin1

    • 修改mysql的数据目录下的my.ini配置文件

      [mysqld]
      ......
      character-set-server=utf8
      collation-server=utf8_general_ci
      ......
      
    • 修改配置后重新启动服务

      net stop mysql57
      net start mysql57
      
    • 查看编码latin1变为了utf8

      show variables like 'character_%';
      /*
      +--------------------------+-------------------------------------------------+
      | Variable_name            | Value                                           |
      +--------------------------+-------------------------------------------------+
      | character_set_client     | gbk                                             |
      | character_set_connection | gbk                                             |
      | character_set_database   | utf8                                            |
      | character_set_filesystem | binary                                          |
      | character_set_results    | gbk                                             |
      | character_set_server     | utf8                                            |
      | character_set_system     | utf8                                            |
      | character_sets_dir       | D:\tools\MySQL\MySQL Server 5.7\share\charsets\ |
      +--------------------------+-------------------------------------------------+
      */
      
      show variables like 'collation_%';
      /*
      +----------------------+-----------------+
      | Variable_name        | Value           |
      +----------------------+-----------------+
      | collation_connection | gbk_chinese_ci  |
      | collation_database   | utf8_general_ci |
      | collation_server     | utf8_general_ci |
      +----------------------+-----------------+
      */
      
  • 相关阅读:
    php 程序执行时间检测
    Mybatis里@InsertProvider、@UpdateProvider方法里使用if test标签
    windows配置JAVA环境变量
    谈谈2021,以及未来的几年
    jupyterlab内终端的改变
    RuntimeError: CUDA error: device-side assert triggered的解决
    Jupyter notebook添加内核的正确姿势
    Windows上两个host文件的位置
    Linux cp 命令仅复制文件
    Pytorch显卡设置
  • 原文地址:https://www.cnblogs.com/jiangblog/p/16389501.html
Copyright © 2020-2023  润新知