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 |
    +----------------------+-----------------+
    */
    
posted @ 2022-06-18 22:35  GoodForNothing  阅读(141)  评论(0编辑  收藏  举报
//看板娘