【MySQL】-【数据库概述】-【关系型数据库设计原则】-【MySQL环境搭建】

目录

数据库概述

数据库常用概念

一、内存使用低电压高电压来区分0和1进行数据存储,所以掉电了就不能存储了,那如果我们想持久化存储数据应该怎么办呢?借助相关的介质

  1. 存储到相关的文件中:图片存储在jpg文件中,文字存储在.doc文件中,Java源码存在.java文件中
  2. 复杂的数据存储在数据库中
  3. 其他介质

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

二、为什么用数据库:数据库可以实现数据的持久化
三、数据库的特点:

  1. 存储的数据量很庞大
  2. 可以存储的数据的数据类型多种多样

四、相关概念:

  1. DB:全称数据库(Database),是存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。本质上是个保存数据的文件
  2. DBMS:全称数据库管理系统(Database Management System),是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。如MySQL

生活中的场景:你写了个.doc文档,你用word打开它,.doc文档就相当于这里的数据库DB,word就相当于这里的数据库管理系统DBMS

  1. SQL:全称结构化查询语言(Structured Query Language),是专门用来与数据库通信的语言。

我们使用SQL语言编写代码让DBMS帮我们去数据库DB中做一些操作

五、数据库管理系统DBMS可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。

MySQL介绍

一、MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
二、MySQL是可以定制的,采用了 GPL(GNU General Public License) 协议,你可以修改源码来开发自己的MySQL系统。
三、MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。32位系统表文件最大可支持 4GB ,64位系统支持最大的表文件为 8TB 。
四、MySQL使用 标准的SQL数据语言 形式。
五、为什么选择MySQL:

  1. 开放源代码,使用成本低。
  2. 性能卓越,服务稳定。
  3. 软件体积小,使用简单,并且易于维护。
  4. 历史悠久,社区用户非常活跃,遇到问题可以寻求帮助。
  5. 许多互联网公司在用,经过了时间的验证。

六、Oracle与MySQL比较

  1. Oracle 更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求以及安全性有更高的要求。
  2. MySQL 由于其体积小、速度快、总体拥有成本低,可处理上千万条记录的大型数据库,尤其是开放源码这一特点,使得很多互联网公司、中小型网站选择了MySQL作为网站数据库(Facebook,Twitter,YouTube,阿里巴巴/蚂蚁金服,去哪儿,美团外卖,腾讯)。

RDBMS与非RDBMS比较

关系型数据库RDBMS

一、这种类型的数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。
二、关系型数据库以行(row)和列(column)的形式存储数据。这一系列的行和列被称为表(table),一组表组成了一个库(database)
三、表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系型数据库就是建立在关系模型基础上的数据库。
四、SQL就是关系型数据库的查询语言
五、优势:

  1. 复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
  2. 事务支持:使得对于安全性能很高的数据访问要求得以实现。

非关系型数据库RDBMS

一、关系型数据库已经能够解决大部分问题了,在一些情况下我们需要舍弃一些功能以满足更高的需求。非关系型数据库舍弃了存储丰富数据的特性,已得到更高的性能
二、MySQL操作关系型数据库,NoSQL操作非关系型数据库

键值型数据库

键值型数据库通过Key-Value键值的方式来存储数据,其中Key和Value可以是简单的对象,也可以是复杂的对象。Key作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。键值型数据库典型的使用场景是作为内存缓存 。 Redis是最流行的键值型数据库。

文档型数据库

此类数据库可存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。MongoDB是最流行的文档型数据库。此外,还有CouchDB等。

搜索引擎数据库

虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。核心原理是“倒排索引”。
典型产品:SolrElasticsearchSplunk等。

列式数据库

列式数据库是相对于行式存储的数据库,OracleMySQLSQL Server等数据库都是采用的行式存储(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的I/O,适合于分布式文件系统,不足在于功能相对有限。典型产品:HBase等。
假如我们现在想去数据库中查询某条记录的某几个字段的信息,比如我只想查张三的年龄,我并不需要知道他的性别、专业等,如果使用基于行式存储的数据库,查询时会把张三的所有数据都加载到内存中,会将无用的信息也加载进来,那么说明我们进行了很多冗余的IO,性能低。但是如果采用列式数据库存储数据,那么我只用查询你想要的字段所在列。

那如果表中有100个人,一个人只有20个字段,那么我采用行式存储是不是查询效率更高?

图形数据库

利用了图这种数据结构存储了实体(对象)之间的关系,图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效的解决复杂的关系问题
图形数据库顾名思义,就是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体(对象)之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。典型产品:Neo4J、InfoGrid等。

关系型数据库设计规则

一、关系型数据库的典型数据结构就是数据表,这些数据表的组成都是结构化的
二、将数据放到表中,表再放到库中
三、一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
四、表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计。

表、记录、字段

一、表与表之间的关系用E-R模型来刻画。E-R(entity-relationship,实体-联系)模型中有三个主要概念是: 实体集 、 属性 、 联系集 。

实体集:表
属性:表中的字段
联系集:表中一条条记录跟另外一张表中一条条记录之间的关系

二、一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。

用编程语言操作数据库时对应的一种关系,这种关系我们称为ORM映射
ORM思想 (Object Relational Mapping)体现:
数据库中的一个表 <——> Java或Python中的一个类
表中的一条数据 <——> 类中的一个对象(或实体)
表中的一个列 <——> 类中的一个字段、属性(field)

在这里插入图片描述

表的关联关系

一、表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
二、四种:一对一关联、一对多关联、多对多关联、自我引用

一对一关联(one-to-one)

一、一对一关联:表A中的一条记录对应表B中的一条记录
二、在实际的开发中应用不多,因为一对一可以创建成一张表。

举例:设计一个学生表 :学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急联系人、…字段特别特别多,我们可以把它拆为两个表,两个表的记录是一一对应关系。
基础信息表 (常用信息):学号、姓名、手机号码、班级、系别
档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…
如果不拆的话,我们每次查询会加载很多不需要的字段进来,比如经常将不常用的信息加载进来,拆了之后我每次查询就是查询(不)常用信息,减少冗余信息的加载,减少IO,提高性能

三、两种建表原则:
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
外键是主键:主表的主键和从表的主键,形成主外键关系。

一对多关系(one-to-many)

一、表A中的一条记录对应表B中的多条记录
二、常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。

举例:
员工表:编号、姓名、…、所属部门
部门表:编号、名称、简介
部门表中存放着一个个部门的记录,一个部门中可以有多个员工,即一条记录对应多个员工

三、一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

多对多(many-to-many)

一、要表示多对多关系,必须创建第三个表,该表通常称为联接表 ,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。
二、举例

  1. 学生-课程
    学生信息表 :一行代表一个学生的信息(学号、姓名、手机号码、班级、系别…)
    课程信息表:一行代表一个课程的信息(课程编号、授课老师、简介……)
    选课信息表:一个学生可以选多门课,一门课可以被多个学生选择
  2. 产品-订单:“订单”表和“产品”表有一种多对多的关系,这种关系是通过与“订单明细”表建立两个一对多关系来定义的。一个订单可以有多个产品,每个产品可以出现在多个订单中。
    产品表 :“产品”表中的每条记录表示一个产品。
    订单表 :“订单”表中的每条记录表示一个订单。
    订单明细表 :每个产品可以与“订单”表中的多条记录对应,即出现在多个订单中。一个订单可以与“产品”表中的多条记录对应,即包含多个产品。
  3. 用户-角色
    多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。
自我引用

自己引用自己,如下表:
在这里插入图片描述

MySQL环境搭建

MySQL的卸载

步骤一:停止MySQL服务

在卸载之前,先停止MySQL8.0的服务。按键盘上的“Ctrl + Alt + Delete”组合键,打开“任务管理器”对话框,可以在“服务”列表找到“MySQL8.0”的服务,如果现在“正在运行”状态,可以右键单击服务,选择“停止”选项停止MySQL8.0的服务,如图所示。
在这里插入图片描述

步骤二:软件的卸载

方式1:通过控制面板方式

卸载MySQL8.0的程序可以和其他桌面应用程序一样直接在“控制面板”选择“卸载程序”,并在程序列表中找到MySQL8.0服务器程序,直接双击卸载即可,如图所示。
在这里插入图片描述
这种方式删除,数据目录下的数据不会跟着删除。

方式2:通过360或电脑管家等软件卸载

方式3:通过安装包提供的卸载功能卸载

你也可以通过安装向导程序进行MySQL8.0服务器程序的卸载。

  1. 再次双击下载的mysql-installer-community-8.0.26.0.msi文件(也就是软件安装包),打开安装向导。安装向导会自动检测已安装的MySQL服务器程序。
    在这里插入图片描述
    然后执行:
    在这里插入图片描述
  2. 选择要卸载的MySQL服务器程序,单击“Remove”(移除),即可进行卸载。
    在这里插入图片描述
  3. 单击“Next”(下一步)按钮,确认卸载。
    在这里插入图片描述
  4. 弹出是否同时移除数据目录选择窗口。如果想要同时删除MySQL服务器中的数据,则勾选“Remove the data directory”,如图所示。
    在这里插入图片描述
  5. 执行卸载。单击“Execute”(执行)按钮进行卸载。
    在这里插入图片描述
  6. 完成卸载。单击“Finish”(完成)按钮即可。如果想要同时卸载MySQL8.0的安装向导程序,勾选“Yes,Uninstall MySQL Installer”即可,如图所示。
    在这里插入图片描述
步骤三:残余文件的清理

一、如果再次安装不成功,可以卸载后对残余文件进行清理后再安装。

  1. 服务目录:mysql服务的安装目录
  2. 数据目录:默认在C:\ProgramData\MySQL
    如果自己单独指定过数据目录,就找到自己的数据目录进行删除即可。

注意:请在卸载前做好数据备份

二、在操作完以后,需要重启计算机,然后进行安装即可。如果仍然安装失败,需要继续操作如下步骤4。

步骤四:清理注册表(选做)

一、如果前几步做了,再次安装还是失败,那么可以清理注册表。
二、如何打开注册表编辑器:在系统的搜索框(win+r)中输入regedit

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL服务 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL服务 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL服务 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\MySQL服务 目录删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL服务目录删除
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL服务删除

注意:注册表中的ControlSet001,ControlSet002,不一定是001002,可能是ControlSet005006之类

步骤五:删除环境变量配置

一、找到path环境变量,将其中关于mysql的环境变量删除,切记不要全部删除。例如:删除D:\develop_tools\mysql\MySQLServer8.0.26\bin;这个部分
在这里插入图片描述

MySQL的下载、安装、配置

一、MySQL的4大版本

  1. MySQL Community Server社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。
  2. MySQL Enterprise Edition企业版本,需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
  3. MySQL Cluster集群版,开源免费。用于架设集群服务器,可将几个MySQL Server封装成一个Server。需要在社区版或企业版的基础上使用。
  4. MySQL Cluster CGE高级集群版,需付费。

二、本课程中使用 8.0.26版本 。
三、官方还提供了MySQL Workbench(GUITOOL)一款专为MySQL设计的图形界面管理工具 。MySQLWorkbench又分为两个版本,分别是 社区版(MySQL Workbench OSS)、商用版(MySQL WorkbenchSE)。

下载

一、下载地址:官网
二、打开官网,点击DOWNLOADS,然后,点击MySQL Community(GPL) Downloads
在这里插入图片描述
三、点击MySQL Community Server
在这里插入图片描述
四、在General Availability(GA) Releases中选择适合的版本
在这里插入图片描述
Windows平台下提供两种安装文件:MySQL二进制分发版(.msi安装文件)和免安装版(.zip压缩文件)。一般来讲,应当使用二进制分发版,因为该版本提供了图形化的安装向导过程,比其他的分发版使用起来要简单,不再需要其他工具启动就可以运行MySQL。
这里在Windows系统下推荐下载MSI安装程序;点击Go to Download Page进行下载即可
五、Windows下的MySQL8.0安装有两种安装程序

  1. mysql-installer-web-community-8.0.26.0.msi下载程序大小:2.4M;安装时需要联网安装组件。
  2. mysql-installer-community-8.0.26.0.msi下载程序大小:450.7M;安装时离线安装即
    可。推荐。
    在这里插入图片描述
    如果安装MySQL5.7版本的话,选择Archives 可以在里面选择历史版本,接着选择MySQL5.7的相应版本即可。这里下载最近期的MySQL5.7.34版本。

安装

MySQL下载完成后,找到下载文件,双击进行安装,具体操作步骤如下。

  1. 双击下载的mysql-installer-community-8.0.26.0.msi文件,打开安装向导。
  2. 打开“Choosing a Setup Type”(选择安装类型)窗口,在其中列出了5种安装类型,分别是Developer Default(默认安装类型)Server only(仅作为服务器)Client only(仅作为客户端)Full(完全安装)Custom(自定义安装)。这里选择“Custom(自定义安装)”类型按钮,单击“Next(下一步)”按钮。
    在这里插入图片描述
  3. 打开“Select Products” (选择产品)窗口,可以定制需要安装的产品清单。例如,选择“MySQL Server 8.0.26-X64”后,单击“→”添加按钮,即可选择安装MySQL服务器,如图所示。采用通用的方法,可以添加其他你需要安装的产品。
    在这里插入图片描述
    此时如果直接“Next”(下一步),则产品的安装路径是默认的。如果想要自定义安装目录,则可以选中对应的产品,然后在下面会出现“Advanced Options”(高级选项)的超链接。
    在这里插入图片描述
    单击“Advanced Options”(高级选项)则会弹出安装目录的选择窗口,如图所示,此时你可以分别设置MySQL的服务器程序安装目录和数据存储目录。如果不设置,默认分别在C盘的Program Files目录和ProgramData目录(这是个隐藏目录)。如果自定义安装目录,请避免“中文”目录。另外,建议服务目录和数据目录分开存放。
    在这里插入图片描述
  4. 在上一步选择好要安装的产品之后,单击“Next”(下一步)进入确认窗口,如图所示。单击“Execute”(执行)按钮开始安装。
    在这里插入图片描述
  5. 安装完成后在“Status”(状态)列表下将显示“Complete”(安装完成),如图所示。
    在这里插入图片描述

MySQL8.0配置

MySQL安装之后,需要对服务器进行配置。具体的配置步骤如下。

  1. 在上一个小节的最后一步,单击“Next”(下一步)按钮,就可以进入产品配置窗口。
    在这里插入图片描述
  2. 单击“Next”(下一步)按钮,进入MySQL服务器类型配置窗口,如图所示。端口号一般选择默认端口号3306
    在这里插入图片描述
    其中,“Config Type”选项用于设置服务器的类型。单击该选项右侧的下三角按钮,即可查看3个选项,如图所示。
    在这里插入图片描述
    Development Machine(开发机器):该选项代表典型个人用桌面工作站。此时机器上需要运行多个应用程序,那么MySQL服务器将占用最少的系统资源
    Server Machine(服务器) :该选项代表服务器,MySQL服务器可以同其他服务器应用程序一起运行,例如Web服务器等。MySQL服务器配置成适当比例的系统资源。
    Dedicated Machine(专用服务器) :该选项代表只运行MySQL服务的服务器。MySQL服务器配置成使用所有可用系统资源。
  3. 单击“Next”(下一步)按钮,打开设置授权方式窗口。其中,上面的选项是MySQL8.0提供的新的授权方式,采用SHA256基础的密码加密方法;下面的选项是传统授权方法(保留5.x版本兼容性)。
    在这里插入图片描述
  4. 单击“Next”(下一步)按钮,打开设置服务器root超级管理员的密码窗口,如图所示,需要输入两次同样的登录密码。也可以通过“Add User”添加其他用户,添加其他用户时,需要指定用户名、允许该用户名在哪台/哪些主机上登录,还可以指定用户角色等。此处暂不添加用户,用户管理在MySQL高级特性篇中讲解。
    在这里插入图片描述
  5. 单击“Next”(下一步)按钮,打开设置服务器名称窗口,如图所示。该服务名会出现在Windows服务列表中,也可以在命令行窗口中使用该服务名进行启动和停止服务。本文将服务名设置为“MySQL80”。如果希望开机自启动服务,也可以勾选“Start the MySQL Server at System Startup”选项(推荐)。
    下面是选择以什么方式运行服务?可以选择“Standard System Account”(标准系统用户)或者“Custom User”(自定义用户)中的一个。这里推荐前者。
    在这里插入图片描述
  6. 单击点击“Next”(下一步)按钮,打开确认设置服务器窗口,单击“Execute”(执行)按钮
    在这里插入图片描述
  7. 完成配置,如图所示。单击“Finish”(完成)按钮,即可完成服务器的配置。
    在这里插入图片描述
  8. 如果还有其他产品需要配置,可以选择其他产品,然后继续配置。如果没有,直接选择“Next”(下一步),直接完成整个安装和配置过程。
    在这里插入图片描述
  9. 结束安装和配置。
    在这里插入图片描述

MySQL5.7安装、配置

一、安装:此版本的安装过程与上述过程除了版本号不同之外,其它环节都是相同的。所以这里省略了MySQL5.7.34版本的安装截图。
二、配置:配置环节与MySQL8.0版本确有细微不同。大部分情况下直接选择“Next”即可,不影响整理使用。这里配置MySQL5.7时,重点强调:与前面安装好的MySQL8.0不能使用相同的端口号。

安装失败问题

一、问题1:无法打开MySQL8.0软件安装包或者安装过程中失败,如何解决?
在运行MySQL8.0软件安装包之前,用户需要确保系统中已经安装了.Net Framework相关软件,如果缺少此软件,将不能正常地安装MySQL8.0软件。
在这里插入图片描述
解决方案:到这里下载Microsoft .Net Framework 4.5并安装后,再去安装MySQL。另外,还要确保Windows Installer正常安装。windows上安装mysql8.0需要操作系统提前已安装好Microsoft Visual C++ 2015-2019
在这里插入图片描述
在这里插入图片描述
解决方案依旧是到微软官网下载相应环境
二、卸载重装MySQL失败?
该问题通常是因为MySQL卸载时,没有完全清除相关信息导致的。
解决方案:把以前的安装目录删除。如果之前安装并未单独指定过服务安装目录,则默认安装目录是C:\Program Files\MySQL,彻底删除该目录。同时删除MySQL的Data目录,如果之前安装并未单独指定过数据目录,则默认安装目录是C:\ProgramData\MySQL,该目录一般为隐藏目录。删除后,重新安装即可。
三、如何在Windows系统删除之前的未卸载干净的MySQL服务列表?
在系统“搜索框”中输入“cmd”,按“Enter”(回车)键确认,弹出命令提示符界面。然后输入“sc delete MySQL服务名”,按“Enter”(回车)键,就能彻底删除残余的MySQL服务了。

配置环境变量

如果不配置MySQL环境变量,就不能在命令行直接输入MySQL登录命令。下面说如何配置MySQL的环境变量:

  1. 在桌面上右击【此电脑】图标,在弹出的快捷菜单中选择【属性】菜单命令。
  2. 打开【系统】窗口,单击【高级系统设置】链接。
  3. 打开【系统属性】对话框,选择【高级】选项卡,然后单击【环境变量】按钮。
  4. 打开【环境变量】对话框,在系统变量列表中选择path变量。
  5. 单击【编辑】按钮,在【编辑环境变量】对话框中,将MySQL应用程序的bin目录(C:\ProgramFiles\MySQL\MySQL Server 8.0\bin)添加到变量值中,用分号将其与其他路径分隔开。
  6. 添加完成之后,单击【确定】按钮,这样就完成了配置path变量的操作,然后就可以直接输入MySQL命令来登录数据库了。

服务启动、登录

服务的启动与停止

一、MySQL安装完毕之后,需要启动服务器进程,不然客户端无法连接数据库。
二、在前面的配置过程中,已经将MySQL安装为Windows服务,并且勾选当Windows启动、停止时,MySQL也自动启动、停止。

使用图形界面工具
  1. 打开windows服务
    方式1:计算机(点击鼠标右键)→ 管理(点击)→ 服务和应用程序(点击)→ 服务(点击)
    方式2:控制面板(点击)→ 系统和安全(点击)→ 管理工具(点击)→ 服务(点击)
    方式3:任务栏(点击鼠标右键)→ 启动任务管理器(点击)→ 服务(点击)
    方式4:单击【开始】菜单,在搜索框中输入“services.msc”,按Enter键确认
  2. 找到MySQL80(点击鼠标右键)→ 启动或停止(点击)
    在这里插入图片描述
使用命令行工具
# 启动 MySQL 服务命令:
net start MySQL服务名
# 停止 MySQL 服务命令:
net stop MySQL服务名

在这里插入图片描述
说明:

  1. start和stop后面的服务名应与之前配置时指定的服务名一致。
  2. 如果当你输入命令后,提示“拒绝服务”,请以系统管理员身份打开命令提示符界面重新尝试。

自带客户端的登录与退出

当MySQL服务启动完成后,便可以通过客户端来登录MySQL数据库。注意:确认服务是开启的。

MySQL自带客户端

开始菜单 → 所有程序 → MySQL → MySQL 8.0 Command Line Client
在这里插入图片描述
说明:仅限于root用户

Windows命令行

格式:mysql -h 主机名 -P 端口号 -u 用户名 -p密码
举例:mysql -h localhost -P 3306 -u root -pabc123 # 这里我设置的root用户的密码是abc123
说明:

  1. -p与密码之间不能有空格,其他参数名与参数值之间可以有空格也可以没有空格。如:mysql -hlocalhost -P3306 -uroot -pabc123
  2. 书写顺序没有要求
  3. 密码建议在下一行输入,保证安全
mysql -h localhost -P 3306 -u root -p
Enter password:****
  1. 客户端和服务器在同一台机器上,所以输入localhost或者IP地址127.0.0.1。同时,因为是连接本机: -hlocalhost就可以省略,如果端口号没有修改:-P3306也可以省略,简写成:
mysql -u root -p
Enter password:****

连接成功后,有关于MySQL Server服务版本的信息,还有第几次连接的id标识。也可以在命令行通过c:\> mysql -Vc:\> mysql --version获取MySQL Server服务版本的信息。或登录后,通过mysql> select version();查看当前版本信息。

退出登录

exitquit

MySQL演示使用

启动并登陆mysql后使用

查看所有的数据库

格式:show databases;
在这里插入图片描述
说明:

  1. information_schema是MySQL系统自带的数据库,主要保存MySQL数据库服务器的系统信息, 比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹,等等
  2. performance_schema是MySQL系统自带的数据库,可以用来监控MySQL的各类性能指标。
  3. sys数据库是MySQL系统自带的数据库,主要作用是以一种更容易被理解的方式展示MySQL数据库服务器的各类性能指标,帮助系统管理员和开发人员监控MySQL的技术性能。
  4. mysql数据库保存了MySQL数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的 字符集、约束检查信息,等等

创建自己的数据库

格式:create database 数据库名;。例如,创建dbtest1数据库:create database dbtest1;,该名称不能与已经存在的数据库重名。

使用数据库

格式:use 数据库名;。例如,使用dbtest1数据库:use dbtest1;

说明:如果没有使用use语句,后面针对数据库的操作也没有加“数据名”的限定,那么会报“ERROR 1046 (3D000): No database selected”(没有选择数据库),使用完use语句之后,如果接下来的SQL都是针对一个数据库操作的,那就不用重复use了,如果要针对另一个数据库操作,那么要重新use。如下图创建了数据库后直接创建表,没有使用use使用数据库
在这里插入图片描述

查看某个库的所有表格

格式:show tables from 数据库名;

创建新的表格

create table 表名称( 
	字段名 数据类型,
	字段名 数据类型
);

例如创建员工表:

create table employees(
	id int,
	name varchar(20) #名字最长不超过20个字符 
);

说明:如果是最后一个字段,后面就不用加逗号,因为逗号的作用是分割每个字段。

查看一个表的数据

格式:select * from 数据库表名称;。例如,查看员工表表的数据:select * from employees;

往表中添加记录

一、格式:insert into 表名称 values(值列表);。例如,添加两条记录到employees表中:insert into employees values(1,'cara');
二、但是如果在5.7版本中写了中文:insert into employees values(1,'张三'); insert into employees values(2,'李四');会报错:

mysql> insert into employees values(1,'张三');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1
mysql> insert into employees values(2,'李四');
ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'name' at row 1

这是字符集的问题,因为你现在使用的字符集是默认的latin,不是utf-8,无法识别中文。
三、以下代码可以查看数据库默认字符集:

show variables like 'character_%';#查看数据库所用默认字符集
show variables like 'collation_%';#查看字符排序比较规则

在这里插入图片描述
在这里插入图片描述
四、解决方案:更改默认字符集

  1. 修改MySQL的数据目录下的my.ini配置文件:
[mysql] #大约在63行左右,在其下添加:
...
default-character-set=utf8 #默认字符集
[mysqld] # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci

注意:建议修改配置文件使用notepad++等高级文本编辑器,使用记事本等软件打开修改后可能会导致文件编码修改为“含BOM头”的编码,从而服务重启失败。

  1. 重启MySQL
  2. 查看是否设置成功,以下配置成功,接着我们就可以新创建数据库、新创建数据表,接着添加包含中文的数据了,如果有以前的数据库、数据表还是使用的latin,不能添加中文数据。
    在这里插入图片描述

五、在MySQL 8.0版本之前,默认字符集为latin1,utf8字符集指向的是utf8mb3。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL 8.0开始,数据库的默认编码改为utf8mb4 ,从而避免了上述的乱码问题。

查看表的创建信息

格式:show create table 表名称\G。例如,查看employees表的详细创建信息:show create table employees\G

查看数据库的创建信息

格式:show create database 数据库名\G。例如,查看dbtest1数据库的详细创建信息:show create database dbtest1\G
在这里插入图片描述

删除表格

格式:drop table 表名称;。例如,删除学生表:drop table student;

删除数据库

格式:drop database 数据库名;。例如,删除atguigudb数据库:drop database atguigudb;

MySQL目录结构与源码

主要目录结构

MySQL的目录结构说明
bin目录所有MySQL的可执行文件。如:mysql.exe
MySQLInstanceConfig.exe数据库的配置向导,在安装时出现的内容
data目录系统数据库所在的目录
my.ini文件MySQL的主要配置文件
c:\ProgramData\MySQL\MySQL Server 8.0\data\用户创建的数据库所在的目录

MySQL 源代码获取

首先,你要进入 MySQL下载界面。 这里你不要选择用默认的“Microsoft Windows”,而是要通过下拉栏,找到“Source Code”,在下面的操作系统版本里面, 选择 Windows(Architecture Independent),然后点击下载。接下来,把下载下来的压缩文件解压,我们就得到了 MySQL 的源代码。源代码可以用记事本打开查看,如果你有C++的开发环境,也可以在开发环境中打开查看。MySQL是C++开发而成的,我简单介绍一下源代码的组成:

  1. sql子目录是MySQL核心代码;
  2. libmysql子目录是客户端程序API;
  3. mysql-test子目录是测试工具;
  4. mysys子目录是操作系统相关函数和辅助函数;

常见问题及解决方案

root用户密码忘记,重置的操作

解决方案:

  1. 通过任务管理器或者服务管理,关掉mysqld(服务进程)
  2. 通过命令行+特殊参数开启mysqld:mysqld -- defaults-file="D:\ProgramFiles\mysql\MySQLServer5.7Data\my.ini" --skip-grant-tables
  3. 此时,mysqld服务进程已经打开。并且不需要权限检查
  4. mysql -uroot无密码登陆服务器。另启动一个客户端进行
  5. 修改权限表:
use mysql;
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
flush privileges;
  1. 通过任务管理器,关掉mysqld服务进程。
  2. 再次通过服务管理,打开mysql服务。
  3. 即可用修改后的新密码登陆。

mysql命令报“不是内部或外部命令”

把mysql安装目录的bin目录配置到环境变量path中。

错误error:没有选择数据库就操作表格和数据

报错:ERROR 1046 (3D000): No database selected
解决方案:

  1. 就是使用USE 数据库名;语句,这样接下来的语句就默认针对这个数据库进行操作
  2. 就是所有的表对象前面都加上数据库.

命令行客户端的字符集问题

mysql> INSERT INTO t_stu VALUES(1,'张三','男');
ERROR 1366 (HY000): Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'sname' at
row 1

原因:服务器端认为你的客户端的字符集是utf-8,而实际上你的客户端的字符集是GBK。
在这里插入图片描述
查看所有字符集:SHOW VARIABLES LIKE 'character_set_%';
在这里插入图片描述
解决方案:设置当前连接的客户端字符集:SET NAMES GBK;。如果你使用的是cmd:
在这里插入图片描述

修改数据库和表的字符编码

见前文

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值