本节内容:
1、数据库概述
2、MySQL数据库
参考文章1
参考文章2
一、数据库概述
1、什么是数据库?
百度百科:
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,
用户可以对文件中的数据运行新增、截取、更新、删除等操作。
所谓“数据库”系以一定方式储存在一起、能予多个用户共享、
具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
实质上是一套专门管理数据的软件,让项目程序可以不直接和硬盘打交道,
可以快速的存储和读取数据,
这个数据管理系统我们称之为DBMS,DB(database)就是数据库的意义,
M(manage)就是管理的意思,S(system)就是系统的意思,其实就是英文名的首字符缩写。
2、数据库分类
目前的数据可以分为两大类:关系型数据库和非关系型数据库
1、关系型数据库(RDBMS)
解释:
关系型数据库模型是把复杂的数据结构归结为简单的二元关系
(即二维表格形式,不是excel,但是和excel的形式很像),结合下图来看一下,
2、操作关系型数据库的命令,我们称之为SQL,看解释
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,
是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。
它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,
所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。
结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),
1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。
所以,实际上不同数据库系统之间的SQL不能完全相互通用
其中最后一句挺重要的:不同数据库系统之间的SQL不能完全相互通用
3、常用的关系型数据库:
常见的关系型数据库介绍
2、非关系型数据库
非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Olnly SQL”
指的是非关系型数据库,而不是“No SQL”的意思,因此,NoSQL的产生并不是要彻底地否定关系型数据库,
而是作为传统关系型数据库的一个有效补充。NOSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
高性能、高并发、对数据一致性要求不高
开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,
Redis,mongb也逐渐越来越受到各类大中小型公司的欢迎和追捧
1、NOSQL非关系型数据库小结:
1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库
2、非关系型数据库又分为以下4种:
非关系数据库分类
3、常见的非关系型数据库
常见的非关系型数据库介绍
先学好MySQL数据库
二、MySQL介绍
1.mysql版本
双授权版本:社区版(完全免费,功能也够nb了)和商业版
(更好,功能更多更强大一些,但是收费,VIP,有售后服务,
也会参考和吸收社区版的一些nb的功能,安全性和稳定性都是最好的,大几十万),一般NB的开源软件都是双授权的
1.每个版本又分四个版本依次进行发布:
Alpha版:一般只在开发公司内部使用,不对外公开,测试、自我检查的版本
Beta版:一般是开发完也测试完的版本,一般不会出现比较大的性能bug(一般我们不用,阿里、去哪儿会使用这个版本,有些新功能,内部有高手能调,也能评估新功能的性能)
RC版:根据Beta版测试之后收集到一些bug等在进行完善的一个版本
GA版:软件正式发布的版本,没有特别的需求一定要使用GA版,有些公司追求新功能会使用Beta版,这是个例。
2.MySQL的产品线:(mysql是C++写的,oracle 9i版本之前是C语言写的,之后主要是java)
最早期,mysql是按照3.x--4.x--5.x等来开发的,但是为了提高MySQL的竞争优势,以及提高性能、降低开发维护成本等原因,
同时,更方便企业用户更精准的选择合适的版本产品用于自己的企业生产环境中,MySQL在发展到5.1系列版本之后,重新规划为三条产品线。
第一条:5.0.xx 到 5.1.xx产品线系列介绍
第二条:5.4.xx 到 5.7.xx产品线系列介绍(主流:5.5和5.6)
第三条:6.0.xx 到 7.1.xx产品线系列介绍
3. MySQL数据库软件命名介绍
以mysql-5.6.42.tar.gz的版本号来解释:
1.第一个数字5是主版本号,描述了文件格式。所有版本5发行都有相同的文件格式。
2.第二个数字6是发行级别。主版本号和发行级别组合到一起便构成了发行序列号。
3.第三个数据42是在此发行系列的版本号,随每个新发布版递增。
通常你需要已经选择发行的最新版本,每次更新后,版本字符串的最后一个数字会递增。
如果增加了一些新功能或者微小的不兼容性,版本字符串的第二个数字会递增。
如果文件格式改变,第一个数字会递增。
一般有的版本也会加上上面我们说的4个版本的后缀,beta、alpha、rc版、ga版等等,
我们举得这个例子是不带后缀的,就相当于GA版
4.1 MySQL版本选择建议
1.稳定版:选择开源的社区版的稳定版GA版本
2.产品线:可以选择5.1、5.5、5.6,互联网公司主流5.5和5.6,其次是5.1.
3.选择MySQL数据库GA版发布后6个月以上的GA版本。
4.要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本
5.最好向后较长时间没有更新发布的版本。
6.开发、测试、运维、DBA进行自己本地测试的时候,最好要和线上的版本一致,最差也要兼容,所以作为开发,你要清楚公司用的哪个版本的数据库
7.作为内部开发测试数据库环境,跑大概3-6个月的时间。
8.优先企业非核心业务采用新版本的数据库GA版本的软件。
9.向DBA高手请教,或者在技术分为好的群里和大家一起交流,使用真正高手用过的好用的GA版本产品
经过上述工序后,若没有重要的功能BUG或者性能瓶颈,则可以开始考虑作为任何业务数据服务的后端数据库软件。
三、MySQL的使用
1、mysql安装
如果你在mysql官网下载的是zip压缩包,就是免安装的,
1、mysql安装的简单总结:
win10下安装mysql
2、关闭的方式有两种:
1.通过任务管理器来关闭服务端:
2.通过cmd指令来关闭mysql服务端
3、linux下安装mysql
linux下安装mysql
3、mysql的简单使用演示
简单命令演示
1、分析一下:
4、MySQL安装目录介绍
看图:
其中,我们重点看一下data文件夹:
关于数据库中的这4个初始的库的详细介绍,有兴趣的同学可以来看看我的这篇文章(目前作为了解用):
4个初识库详细介绍链接
3、其中mysql这个库我需要提一下:
5、root用户密码设置及忘记密码的解决方法
再怎么说我们的root用户密码也不能为空啊对不对,所以需要设置一个密码,
看下面设置密码的方法,我给了三种方法:
方法1: 用SET PASSWORD命令
首先登录MySQL,使用mysql自带的那个客户端连接上mysql。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
(因为我们将bin已经添加到环境变量了,这个mysqladmin也在bin目录下,
所以可以直接使用这个mysqladmin功能,使用它来修改密码)
6、修改字符集编码(使用前一定要统一)
一开始编码并没有统一,在开始建立数据库的时候一定要注意这个问题,
建立统一的字符集编码,因为数据库一旦建立,是没有办法修改字符集编码的。
1、一开始创建库时,mysql会默认指定一个字符集:latin1,
fe:看一下各个角色的编码(客户端、服务端,数据库等等):
2、出现乱码的原因:
因为客户端mysql的字符集和服务端的字符集不一样,
注意一下其中的character_set_client、character_set_connection、character_set_results这三项,
我们在这里可以简单称为客户端三炮,就是因为这三炮和服务端的编码不一致导致的,
所以我们需要将这三项改为和服务端一致的字符集就可以了。
3、第一种方法:临时修改客户端三项
临时修改客户端三炮的字符集,让客户端插入数据的时候按照服务端的字符集编码来插入数据,然后我们再插入一条数据,然后看效果:
总结:在进行DQL和DML语句(关于DQL和DML的解释我们后面会讲的,
你就理解为一些sql语句)之前,先执行set names latin1;
但是我们如果断开连接,退出数据库之后,在连接进来以后,
插入数据时如果不执行set names latin1,还是会乱码,说明这句指令没有让字符集永久生效
4、在配置文件里面修改客户端和服务端参数,可以实现set names latin1;的效果,并且永久生效
如果你的安装目录里面没有这个文件并且没有在其他地方设置,那么mysql就会按照自己默认的配置参数来运行,
我们可以通过写一个my.ini文件来指定,mysql运行起来时会读取这个my.ini文件中的一些配置,其中就可以配置指定字符集。
之前我们用root用户连接输入库的命令是这样的:
C:Userschao>mysql -uroot -p
Enter password: ***
可是配置my.ini文件,永久设定编码集
用my.ini永久设置编码