xiyanziran

1-为什么要学习数据库?

先来考虑几个问题,抛开 MySQL 不去讨论,单说数据库。我们为什么要学习它?以及数据库的重要性是什么?

其实,我们在生活中经常会用到数据库,只不过我们潜意识里没有“数据库”这个概念罢了。例如,我们在某一个网站站点中进行登录,登录的时候我们需要输入 [用户名] 和 [密码] 来进行身份校验、再例如,我们经常需要在网站上搜索一些热门话题,等等。这些其实都在无形中利用到了数据库。这些操作都必须于系统后台对我们录入的信息进行筛选、查询等动作。这其实就是利用了数据库。从这个角度来理解,我们可以将数据库比喻为一个特别特别庞大的大仓房。

为什么要利用数据库来存储这些数据呢?而不是利用“数组”、“集合”、“文件”……等这些容器来保存我们的数据呢?

保存数据的容器中,“数组”、“集合”可以归结为一类,即保存在内存中的数据。内存有个特别大的缺点就是一断电或者系统重启重新加载我们的数据就丢失了!无法永久的将数据进行存储

保存在“文件”中似乎是一种可取的方式,但是存储是OK的,存储后再进行查询的话就比较困难了。譬如说要查询多少年之前的、或者只查询某类特征的数据,就比较困难了。因此,已文件的方式保存的数据就不太适合进行检索查询的操作。

此时,就迫切需要一套管理系统去管理我们的数据,这就是我们所需要学习的数据库软件。

数据库的好处

  1. 持久化数据到本地

实现和文件一样,能够持久化数据到本地

  1. 可以实现结构化查询,方便管理

使用完整的管理系统统一管理,易于查询

数据库相关概念

DB

DB 的全称叫做数据库(database),即:存储数据的“仓库”。它保存了一系列有组织的数据。

DBMS

DB 的全称叫做数据库管理系统(Database Management System)简称数据库软件,或者是数据库产品
例如我们提到的如下产品或者软件,都属于 数据库管理系统(Database Management System)

  • MySQL:适合任何操作系统
  • Oracle:甲骨文公司的产品,缺点:贵,此外服务也是收费的
  • SqlServer:MicroSoft 微软公司的产品,缺点就是只能安装在 Windows 系统下,不跨平台
  • DB2:IBM 公司的产品,比较适合处理海量的数据。所以一般企业用的话就体现不出优势了
  • MangoDB:互联网刚刚兴起的时候比较流行的

DBMS 通常和 DB 搞混淆,因为我们常说,我们安装数据库,我们在学习数据库,等等等等。其实都是不对的。都应该说成是,我们在安装数据库管理系统(DBMS),我们在学习数据库管理系统(DBMS)

数据库(DB)是通过数据库管理系统(DBMS)创建和操作的容器。
如下,我们的计算机中:

  1. 我们安装了数据库管理系统(DBMS),也就是数据库软件,或者叫做数据库产品
  2. 安装完了之后就可以去操作我们刚才所说到的数据库(DB),数据库DB就是装载数据的容器
  3. 一般是做哪些操作呢?就是如下图所示的,增、删、改、查

image

SQL

SQL 的全称叫做 结构化查询语言(Structure Query Language),是专门用来与数据库通信的语言

例如我们程序员通过在计算机上安装数据库管理系统(DBMS),然后想要通过它去管理我们的数据库(DB)。所以我们需要给数据库管理系统(DBMS)发指令,指示他去做查询、删除等动作。但是,说汉语肯定没用,它听不懂,所以你必须要说它能听的懂的语言,指示它去完成我们想要完成的动作。那么,它能听懂的语言是什么呢?就是结构化查询语言(SQL语言)了。

SQL语言的特点:

  1. 他不是我们某个特定数据库供应商专有的语言,几乎所有的 DBMS 都支持 SQL(都认识他)。当然,根据产品的不同,各自有各自小小的区别(称作小方言)。仅占10%左右。
  2. 简单易学。比 JAVA 简单的太多。
  3. 虽然简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库查询。

一张图来表述3者之间的关系

image

  • 文件柜就是:数据库(DB)
  • 管家就是:数据库管理系统(DBMS),也称作:数据库产品、数据库软件。他用于管理DB中的数据。
  • 如果我们程序员需要依赖 DBMS 让其帮忙操作文件柜。程序员跟 DBMS 进行指令发送(对话)就需要通过 SQL 语言来进行。也就是,程序员通过 SQL 语言与 DBMS 进行交流,指示其对数据库 DB 进行操作。

数据库特点

那么,数据库到底是如何存储数据的呢?

  1. 先将数据放到表中,表再放到库中。如下图:
    image

  2. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。

  3. 表具有一些特性,这些特性定义了数据在表中如何存储,类似 java“类”的设计。

  4. 每个表都由列组成,我们也成为字段。所有表都是由一个或多个列组成的,每一列类似 java 中的“属性”

  5. 表中的数据是按行存储的,每一行类似于 java 中的“对象”

MySQL 安装与使用

MySQL是一个关系型数据库。

MySQL 产品的特点

历程

MySQL 数据库隶属于瑞典 MySQL AB 公司开发,总部位于瑞典,后被 Oracle 收购,目前属于 Oracle 旗下公司。

  • 08 年被 Sun 公司收购
  • 09 年 Sun 公司被 Oracle 收购

因此,现在 MySQL 属于 Oracle 公司。

优点

  • 成本低:开放源码,一般可以免费试用

    很多中小型企业为了节约成本,而选择了 MySQL 数据库软件

  • 性能高:执行速度很快,可移植性也好

  • 简单:很容易安装和使用(* 本身软件的体积也小)

DBMS 的分类

目前市场上的 DBMS 大致分为两类:

  • 基于共享文件系统的 DBMS(例如:Access)

微软的桌面类似共享文件系统的 DBMS
Microsoft Office Access的缺点:
1、数据库过大时,一般ACCESS数据库达到100M左右的时候性能就会开始下降!(例如:访问人数过多时容易造成IIS假死,过多消耗服务器资源等等)
2、容易出现各种因数据库刷写频率过快而引起的数据库问题。
3、ACCESS数据库安全性比不上其他类型的数据库。
4、ACCESS论坛大了以后就很容易出现数据库方面的问题,当论坛数据库在50M以上,帖子5万左右,在线也在100人左右的时候,你的论坛基本上都在处理数据库上花时间,这个时候很可能就会出现数据库慢的情况。

  • 基于C/S架构的,客户机 <---> 服务器的 DBMS(例如:MySQL、Oracle、SqlServer)

C/S 架构的 DBMS 就需要我们安装“客户端”以及“服务端”u
对于数据库来说最重要的就是“服务端”,因为数据主要就是存储在服务端。
所以我们通常所说的安装数据库,就是安装数据库的服务端

MySQL 的版本

社区版(免费)

对于学习来说,就安装此版本即可。

企业版(收费)

功能相较于社区版(免费)多了一些功能,因此收取了一些费用,但也不贵。

MySQL 的安装

  1. MySQL官网下载页面

image

  1. 这里直接点击下载即可:

image

  1. 下载完成后的配置
  • 下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 D:\study\database\mysql-8.0.21-winx64
  • 接下来我们需要配置下 MySQL 的配置文件,打开刚刚解压的文件夹 D:\study\database\mysql-8.0.21-winx64,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:
	[client]
	# 设置mysql客户端默认字符集
	default-character-set=utf8
	[mysqld]
	# 设置3306端口
	port = 3306
	# 设置mysql的安装目录
	basedir=D:\study\database\mysql-8.0.21-winx64
	# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
	# datadir=D:\study\database\mysql-8.0.21-winx64
	# 允许最大连接数
	max_connections=20
	# 服务端使用的字符集默认为8比特编码的latin1字符集
	character-set-server=utf8
	# 创建新表时将使用的默认存储引擎
	default-storage-engine=INNODB
  1. 接下来我们来启动下 MySQL 数据库
    以管理员身份打开 cmd 命令行工具,切换目录:
	cd D:\study\database\mysql-8.0.21-winx64\bin
  1. 初始化数据库
	mysqld --initialize --console

image

  1. 等待执行完毕,执行完成后,会输出 root 用户的初始默认密码,如:
    image
2020-08-30T00:18:50.601398Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: kY#*ejFh/02,

kY#*ejFh/02, 就是初始密码,后续登录需要用到,你也可以在登录后修改密码。

  1. 输入以下安装命令:
mysqld install

如果出现如下错误:
image
则说明你的权限不够,请管理员运行 cmd.exe 然后再进行安装!

如果出现如下错误,请在 mysql.ini 文件中追加如下配置:

explicit_defaults_for_timestamp=true

默认情况下,timestamp类型字段所在数据行被更新时,该字段会自动更新为当前时间,而参数explicit_defaults_for_timestamp控制这一种行为。
explicit_defaults_for_timestamp=off,数据行更新时,timestamp类型字段更新为当前时间;
explicit_defaults_for_timestamp=on,数据行更新时,timestamp类型字段不更新为当前时间。

出现Service successfully installed则证明数据库安装成功:
image

  1. 输入以下命令启动数据库:
net start mysql

image

登录 MySQL

当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

mysql [-h 主机名 -P 端口] -u 用户名 -p[密码]

参数说明:

  • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
  • -P:指定客户端索要登录的 MySQL 服务的端口号,登录本机(localhost 或 127.0.0.1)该参数可以省略;
  • -u : 登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项;

如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

mysql -u root -p

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

Enter password:

image

若密码存在, 输入密码登录, 不存在则直接按回车登录。
如果输错密码,将会得到一个拒绝登录的提示:
image

登录成功后你将会看到 Welcome to the MySQL monitor... 的提示语。这里我们输入上面的初始化密码:kY#*ejFh/02,(* 请注意大小写,这里的Y,不是y,很容易输错!还有最后那个逗号!):
image

然后命令提示符会一直以 mysq> 加一个闪烁的光标等待命令的输入, 输入 exitquit 退出登录:
image
退出后,它会跟你说88:
image

修改初始化密码:

  1. 确保服务启动 net start mysql

  2. 登录数据库 mysql -u root -p

  3. 修改密码 ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'新密码\';

  4. exit / quit 退出

MySQL 客户端工具 Workbench 安装

这属于mysql官方出品,免费,功能强大,是首选。

  1. Workbench 工具下载地址
    image

  2. 下载后双击安装,按照指示,Next一直安装下去。

  3. 如果出现如下图例,证明安装 Workbench 所必须的软件没有安装:
    image

    请移步这里下载必要的Visual C++ 2019安装包
    然后继续安装
    image

  4. 安装完成后,进行 SQL语句中的中文支持设定
    image

  5. 汉化需要自行替换,或网路上下载汉化的 XML,替换至路径即可:

	..\\MySQL Workbench 8.0 CE\data

自行修改汉化文件,就是将列英文处翻译为中文,例如“File”→“文件”即可:
image

MySQL 服务的启动和停止

有两种方式启停 MySQL 数据库的服务。

windows 服务的方式

在运行窗口输入 services.msc
image

打开 windows 服务一览画面。找到 MySQL 的服务器:
image

Command 命令行方式

以管理员方式启动命令行:
image

输入如下命令停止 MySQL 服务:

net stop mysql

image

输入命令启动 MySQL 服务:

net start mysql

image

MySQL 服务端的登录和退出

在登录 MySQL 数据库之前,必须保证 MySQL 的服务是启动着的。

通过 MySQL 自带客户端登录

通过 [开始] 菜单,找到 [MySQL] 的安装目录,选择 “MySQL Command Line Client”(* 之后的版本没有这个客户端软件了) 运行后,直接输入密码即可登录
image

命令行窗口:
image

输入密码登录后:
image

请注意:这种方式只适用于 root 用户,而在之后的开发中,我们实际上会有多个不同的用户在利用。

利用 Windows 命令行方式登录

[Win + R] 打开运行窗口,并输入 “cmd”,启动命令行窗口(* 请注意如果提示权限不够,请务必“以管理员身份运行”):
image

在命令行窗口输入登录指令:

mysql -h 主机名 -P 端口 -u 用户 -p

请注意,这里的 mysql 不是服务名,是我们 MySQL 的一个命令 mysql

然后输入 root 用户的登录密码进行登录:
image

也可以直接一句命令,带上密码进行登录:

mysql -h 主机名 -P 端口 -u 用户 -proot

请注意,最后的 “-p” 后面必须紧跟密码而不能空格后再接密码,这个指令和前面的 “-h/-P/-u” 指令不一样,“-h/-P/-u”后面可接空格再接指令参数,也可以不接空格直接紧跟指令参数

如果是在本机登录且端口为默认端口的话,登录命令也可以省略为:

mysql -u 用户 -proot

image

MySQL 退出

在命令行窗口输入命令 quit; 或者 exit; 即可退出登录,退出后命令行窗口显示 “Bye” 信息:

image

MySQL 服务的登录和退出 -- 总结

登录

  1. 通过 mysql 自带的客户端工具进行登录(* 操作方式和命令行方式一致,但是该方式仅限于 root 用户登录使用,不够灵活)
  2. 通过 windows 的命令行进行登录,登录时输入命令:mysql [-h主机名 -P端口] -u用户 -p密码(* [...]方括号内,若登录本机 MySQL 服务的话可以省略)

退出

  1. exit
  2. quit
  3. ctrl + c

mysql 命令的配置

若在输入命令后,提示我们“当前命令不是合法的内部命令”时,则说明我们的环境变量没有配置好,必须配置好环境变量。

  1. 右键 “我的电脑” 图标,选择 “属性”,进入 “高级设置”,打开 “系统设置” 面板,单击 “环境变量” 按钮:
    image

  2. 在 “Path” 变量中 “新建” 并添加 “MySQL 安装的 bin 路径”
    image

MySQL 的常见命令

show databases

查询并显示当前数据库管理系统中(DBMS)中所有的数据库

如果想要查看当前 MySQL 这个 DBMS 中有多少个文件柜(即:数据库)时,我们可以通过命令 show databases 来操作。
该命令会显示当前 MySQL 数据库管理系统(DBMS)里所有数据库(即:文件柜)。默认新安装的 MySQL 数据库管理系统存在以下4个系统自带库:
image

  • information_schema:保存一些元数据信息
  • mysql:专门用于保存我们的用户信息
  • performance_schema:用于收集并保存一些性能信息和性能参数的
  • sys:保存了一些系统用表等信息

这些库(文件柜)都是不能动的,不能被删除和更改的

use 数据库名

打开并进入到指定的数据库(DB)中

如果想要进入到一个特定的数据库中进行操作的话,(即:打开一个文件柜),则需要通过命令 use 数据库名
image

命令执行后,命令行窗口会提示我们 Database changed,即已经打开了 mysql 数据库了。

show tabels

查看当前所在库(DB)中的所有表

如果想要查看当前 mysql 这个数据库(DB)里有多少张表时,则需要通过命令 show tables 来进行操作和查看:
image

显示并列出 mysql 数据库(文件柜)中存放了 31 张数据表

show tables from 数据库名

在不切换所在数据库(DB)的前提下,查看其它数据库中的所有表信息

如果不想要离开当前操作的数据库,同时还想要查询其它数据库中的表信息时候,可以通过该命令show tables from DatabaseName;
例如,我们在 sys 库中查看 mysql 库中的所有表信息:
image

select database()

显示当前所在的数据库

如果你在操作过程中,忘记了自己所在的数据库的时,可通过该命令 select database(); 来进行确认。
该命令类似于调用 java 方法,即调用 “database()” 方法来进行查询操作。但是在 mysql 里,被称作“函数”
image

create table/database 新表名/新数据库名

在当前数据库管理系统中,新建1个新的库
或者在当前数据库(DB)中,创建1个新的表(* 请注意,在创建新表时,需要指定表所包含的列)

利用命令create database test;,创建新的 test 数据库(文件柜):

image

利用命令create table testTable,在新建的 test 数据库中创建新的数据表 testTable,同时新表包含2列(id、name):

image

新建成功后,通过命令 show tables; 确认到表已经存在:

image

desc 表名

查看表结构

该命令用于查看指定表的结构,即:表中有哪些字段以及字段的属性是什么。我们通过命令 desc testTable; 来查看下该表的结构信息:

image

查看 MySQL 服务端版本

如何通过命令行,查看当前 MySQL 的版本?

一共有两种方式来确认我们当前 MySQL 的版本信息。

select version();

登录到 MySQL 数据库管理系统后,通过查询函数 version(),查询并确认当前 MySQL 版本信息
即通过 mysql 命令的方式进行查看

在命令行窗口,通过命令select version();,来查看当前 MySQL 的版本信息:

image

请注意,这种方式必须登录 MySQL 服务后才可以通过该命令查询

mysql --version

DOS 命令的方式,查看 MySQL 的版本信息

在命令行窗口,通过命令 mysql --version,查看当前 MySQL 的版本信息:

image

也可以通过简写的形式mysql -V(大写的 V ):

image

MySQL 的语法规范

  1. MySQL 不区分大小写,但是建议关键字大写,表名、列名小写;
  2. 每条命令都需要用半角的分号“;”结尾;
  3. 每条命令根据需要,语句非常长的话,可以适当的进行缩进或换行,而无需写在一行上;建议关键字独占一行,列名、表名、条件单独成行;
  4. 注释
  • 单行注释:# 注释文字
  • 单行注释:-- 注释文字(* 请注意 -- 后必须接1个空格,但是 SQL Server 无需)
  • 多行注释:/* 注释文字 */

MySQL 图形化用户界面客户端的安装

建议安装 SQLyog Community 版本,相关安装截图和步骤省略。

分类:

技术点:

相关文章: