为什么学习数据库
在生活中,每当每当我们登陆微信,QQ,找好友聊天的时候,我们就是在使用数据库。那为什么要学习数据库呢?在编程语言中,我们有数组,集合,文件(如XML文件等),但是前两者不能永久的存储,只能存储在内存当中。而后者文件可以存储在我们的硬盘当中,实现理论上的永久保存。但是存在文件上,乜有问题。如果想存储大量的图片到文件上,存是没问题,但是查询的话,很麻烦了。那怎么办?所以就需要用到了数据库了。
数据库的相关概念
-
DB:数据库
关于数据库的术语,用法有多种,笔者认为数据库是一个以某种有规则,有组织的方式存储的数据集合即容器, 可以理解为是一个文件柜。这个文件柜是一个存放数据的物理位置。
-
DBMS:数据库管理系统
DBMS:全称Database Management System,数据库是通过DBMS创建和操作数据库的。 这里需要注意: 生活中,我们通常用数据库这个术语来代表我们使用的数据库软件,这其实是不正确的,确切的说数据库软件称为DBMS (数据库管理系统),数据库是通过DBMS创建和操作的容器。数据库可以是保存在硬件设备上的文件,乜可以不是。 但是对于我们来说,数据库究竟是文件还是其他的东西,对我们都不重要,因为我们不是直接访问数据库,而是通过DBMS, 由它来替我们访问数据库。
-
SQL:结构化查询语言
SQL:全称Structure Query Language(构化查询语言),专门用来与数据库通信的语言。 国人与国人之间进行交流,需要使用普通话, 跟数据库交流,我们需要SQL,一个道理。 SQL具有如下优点: * SQL不是某个特定数据库供应商专有语言,几乎所有重要的DBMS都支持SQL * 简单易学 * 看上去简单,但实际上是一种强有力的语言,灵活使用,可以进行非常复杂和高级的数据库操作
-
表:某种特定类型数据的结构化清单
我们将资料存放在文件柜的时候,不是随便乱扔,而是在储物柜中创建一个文件,然后将资料放在这个特定的文件中。 在数据库中,这种文件称为表。表是一种结构化的文件,可以用来存储某种特定类型的数据。 可以保存顾客购买的清单,产品目录,或者一些其他信息等。数据库中的每个表都有一个名字,用来标识自己,这个名字是唯一的。 需要注意的是: 存储在表中的数据是一种类型的数据或一个清单。不应该将两种不同类型的东西放在同一个数据表中, 比如将用户的清单和订单的清单存放在一起。这样检索和访问比较困难。 试想一下你把袜子和内裤放在一起,要找你的内裤的时候,肯定很难找的。所以应该创建两张表,每个袜子和内裤都是一张表。 类似Java编程语言中的类
-
列:表由组成,列中存储表中某部分的信息
列:表中的一个字段,所有表都由一个或者多个列组合而成,可以把数据库理解为一个网格,列就是每个格子。 其中每个格子存放着一条特定的信息。如:学生表中,一个列中存放着学生的编号,一个列存放着学生姓名, 等其他的信息都存在各自的列中。类似Java类中的属性。
-
数据类型:所允许的数据的类型
每个表的列都有相应的数据类型,它限制(允许)该列中存储的数据。例如可以防止在数值字段中录入字符值。 数据类型还帮助正确的排序数据,并在优化磁盘使用方面起到了重要的作用。
-
行:表中的一行记录
表中的数据是按行存储的,例如学生表可以每行存储一个学生。 可以将表理解为网格,网格中垂直(竖着)的列称为表列,水平(横着)的行称为表行。每一行都类似Java中的对象。 行和记录两个术语可以相互代替,即一行等价于一条记录。
-
主键:一列(多列),其值能够唯一区分表中每个行
唯一标识表中每行的这个列(或多列)称为主键,主键用来表示一个特定的行,表中每一行都应该有可以唯一标识自己的一列(或多列)。 例如学生表的学号,订单表的订单号。如果没有主键,在进行更新或者删除指定的行的时候,特别困难,因为无法保证只涉及指定的。 表中任何列都可以作为主键,只需要满足以下条件: * 任意两行都不具有相同的键值 * 每个行都必须具有一个主键值(主键列不允许NULL值) 虽然并不总是需要主键,但是大多数情况下都为每个表创建一个主键,以便以后的数据操作和管理。 主键使用的习惯: * 不更新主键列中的值 * 不重用主键列的值 * 不在主键列中使用可能会更改的值
-
外键
外键为某个表中的一列,它可以包含另一个表的主键值,定义了两个表之间的关系。 举个例子: 有供应商(vendors),产品(products)两张表,在一个存储供应商信息,一个存储产品信息。 其中供应商表中每个供应商都具有唯一的标识,这个标识称为主键,可以是供应商ID或者其他。 产品表中只存储产品表相关的信息,除了只存储供应商ID(供应商表中的主键)外,不存储供应商其他信息, 供应商的主键又叫做产品表的外键,它将供应商和产品进行了关联,可以通过供应商ID能从供应商表中找到相应的供应商的详细信息。 这样做的好处是: * 供应商信息不重复,从而不浪费时间和空间 * 如果供应商信息变动,可以只更新供应商表中的单个记录,相关表中的数据不用改动 * 由于数据无重复,数据自然是一致的,这样可以使得处理数据更加简单
MySQL
介绍了SQL相关的知识后,就应该开始动手实践了。
什么是MYSQL
数据的所有存储、检索、管理和处理,实际上都是有数据库软件DBMS(数据库管理系统)来完成的,MYSQL就是一种DBMS。它是一种数据库软件。MYSQL存在很久了,并且得到了世界广泛使用。这些都离不开MYSQL如下优点:
- 成本:MYSQL是完全开源,可以免费使用
- 性能:MYSQL执行非常快
- 可信赖:某些声望很高的公司等都在使用MYSQL来处理自己的数据
- 简单:简单的安全和使用
DBMS的分类
我们已经知道了什么是MYSQL,那么在下载安装MSYQL之前,我们得知道 要安装什么。
DBMS分为两类:
- 基于共享文件系统的DBMS(如:Access、FileMaker)用于桌面
- 基于客户机-服务器的DBMS(如:Oracle、MYSQL、SQL Server),乜叫C/S架构,其中客户机和服务器分为两个不同的部分
- 服务器部分是负责所有数据访问和处理的一个软件,这个软件运行在称为数据库服务器的计算机上。与数据文件打交道的只有服务器软件,关于数据的添加、删除、更新的所有请求都是有服务器完成
- 客户机是用来跟用户打交道的软件。如请求一个按照学号排序的学生表,则客户机通过网络提交请求给服务软件,服务器处理这个请求,经过处理把结果送回你的客户机软件,客户机可以是MYSQL提供的工具,可以是脚本语言,可以是程序设计语言(C++,C,Java)等
MYSQL版本
- 社区版(免费)
- 企业版(收费)
MYSQL下载
MYSQL官网:点进跳转,笔者下载的是社区版,解压版版本,非安装版。
-
进入官网后,点击downloads,进入下载界面
-
下拉,找到MySQL Community (GPL) Downloads »,点击进入社区版下载页面
-
点击MySQL Community Server
-
此时进入了MYSQL社区版下载页面,当前最新的版本是MYSQL 8的版本,笔者下载MYSQL 5.7的版本
-
点击Archives,进入MYSQL档案页面,根据自己的需求,下载对应的版本
-
此时就进入了下载页面了。
-
如果你是点击Looking for previous GA versions?进入下载页面进行下载的,那么在下载的时候,会出现如下窗口
MYSQL安装
成功下载MYSQL后,接下来就安装了。需要提前准备好MYSQL的安装包。
-
解压MYSQL压缩包得到如下结构
-
5.7的版本的MYSQL根目录是没有data目录和my.ini文件的,其中data目录是mysql初始化的时候会自动创建一个data目录,我们需要自己创建一个my.ini文件,文件内容如下
[Client] port = 3306 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\devSoft\mysql-5.7.21 # 设置mysql数据库的数据的存放目录 datadir=D:\devSoft\mysql-5.7.21\data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8
-
一定要记得更改上面参数配置的目录
-
使用cmd,进入bin目录,初始化MYSQL,输入如下命令
mysqld --initialize --user=mysql --console
-
初始化后,会在mysql安装目录生成data文件夹,并生成初始化密码,需要记住密码
-
紧接着输入安装mysql服务命令
mysqld --install mysql
-
显示service successfully installed 表示安装成功
-
输入启动mysql服务命令
net start mysql
-
输入登录mysql命令
mysql -uroot -p 密码是上面随机生成的密码
-
修改mysql登录密码,这里笔者将密码改为123
set password=password('123');
-
为了后续的操作方便,还需要配置环境变量,在电脑->属性->高级->环境变量中新建MYSQL_HOME
-
在path中配置好
-
配置好,进行验证,ok就安装成功了
MYSQL安装过程中出现的问题
- 初始化的时候,可能会报错,需要重新检查下你的my.ini文件是否正确,尽量复制
- 在安装mysql服务的时候,可能会出现权限不足的问题,需要自己以管理员的身份启动cmd窗口
- 提示缺少MSVCP140.dll缺丢,原因是缺少VC运行库,去官网下载安装即可。点击进入官网下载
MYSQL卸载
-
停止MYSQL服务
net start mysql
-
使用命令卸载服务
mysqld -remove mysql 看到Service seccessfully removed .表示卸载成功了。
-
删除MYSQL安装目录
-
win+R运行输入regedit命令打开注册表,删除如下内容
删除注册表中的MySQL服务的几个地方: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL 可能还会存在其他的MYSQL目录,通过搜索找到后,乜一并删除。
-
重启电脑