数据管理技术发展,数据库应用发展史,数据库分类,MySQL
计算机数据管理技术发展
1. 自由管理阶段
用户以文件形式将数据组织起来,并附属在各自的应用程序下。
1.数据不保存
当时计算机主要用于科学计算,一般不需要将数据长期保存,只是计算某一课题时输入数据,用完就撤走。
2.应用程序管理数据
数据需要由应用程序自己设计、说明(定义)和管理,没有相应的软件系统负责数据的管理工作。应用程
序中不仅要规定数据的逻辑结构,而且要设计物理结构(包括存储结构、存取方法、输入方式等),所以程序
员负担很重。
3.数据不共享
数据是面向应用程序的,一组数据只能对应一个程序。多个应用程序涉及一些相同的数据时,只能各自定
义,无法相互利用、参照,因此程序与程序间有大量冗余数据。
4.数据不具有独立性
数据的逻辑结构或物理结构发生变化后,必须相应地修改应用程序,因此加重了程序员的负担。
2.文件管理阶段
文件管理阶段
操作系统中的文件系统给出了统一的文件结构和共同存取的方法,用户可以把数据和信息作为文件长期地保存在计算机系统中,并可以方便地进行查询和处理。
3.数据库管理阶段
为了适应大量数据的集中存储,并提供给多个用户共享的要求,使数据与程序完全独立,最大限度地减少
数据的冗余度,出现了数据库管理系统。
数据库是长期存储在计算机内有组织的大量的共享的数据集合。它可以供各种用户共享,具有最小冗余度
和较高的数据独立性。DBMS在数据库建立、运用和维护时对数据库进行统一控制,以保证数据库的完整性、安
全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既
便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。
数据库应用发展史
1964年,网状数据模型(IDS,集成数据储存);层次数据库(树结构);(解决了集中存储、管理和共
享的问题,但是数据独立性和抽象级别有很大欠缺);1970,关系数据模型出现。
关系数据库
1974年,出现了SQL(Structured Query Language,结构化查询语言),包括定义、操纵、查询
和控制功能,至今也占有重要地位。
1978年,Oracle1.0诞生,它除了能完成简单关系查询之外,不能做任何事,但短短十几年,不断完善,
成为商业巨头。
虽然关系数据库系统的技术已经很成熟了,但是随着市场信息和信息技术的发展,其局限性也暴露出来,
他能很好的处理所谓的“表格型数据”,却无法处理当前出现的越来越多的复杂类型数据(如文本、图像、视频等);
分布式数据库
开始于20世纪70年代中期,这个时期出现了早期的分布式数据库系统,。例如,1979年,美国计算机公司
在DEC计算机上实现了世界上第一个分布式数据库系统SDD-1。随后不到十年时间内,分布式数据库发展特别
迅猛。1987年,C.J.Date提出了完全的、真正的分布式数据库系统应该遵循的原则,该原则被作为分布式数
据库系统的理想目标。20世纪90年代以来,分布式数据库系统进入商业化应用阶段,传统关系数据库产品均发
展成以计算机网络为及多任务操作系统为核心的分布式数据库产品。
云数据库
云计算(Cloud Computing)的迅猛发展使得数据库部署和虚拟化在“云端”成为可能。云数据库是数据库
部署和虚拟在云计算环境下,通过计算机网络提供数据管理服务的数据库。因为云数据库可以共享基础架构,
极大的增强了数据库的存储能力,消除了人员、硬件、软件的重复配置。
NoSQL数据库
虽然关系数据库系统的技术已经很成熟了,但是随着市场信息和信息技术的发展,其局限性也暴露出来,
他能很好的处理表格型数据,却无法处理当前出现的越来越多的复杂类型数据(如文本、图像、视频等)。尤
其是步入互联网2.0和移动互联网时代,许多互联网应用应用有高并发、海量数据处理、数据结构不统一的特
点,传统的关系数据库不能很好的支持这些场景。而非关系数据库有高并发读写、数据高可用性、海量数据存
储和实时分析等特点,能较好地支持这些应用需求。因此,一些非关系型数据库也开始兴起。
为解决大规模数据集合和多种数据种类带来的挑战,NoSQL数据库应运而生。NoSQL一词最早出现于
1998年,是CarloStrozzi开发的一个轻量级、开源、不提供SQL功能的数据库。NoSQL仅仅是一个概念,泛指
非关系型数据库,区别于关系型数据库。它们不保证关系数据库的四个特征:原子性、一致性、隔离性、持久
性(Atomicity、Consistency、Isolation、Durability,简称ACID)。
"""
集群
如果所有的数据全部存储到一台远程服务器上
那么数据的安全性降低 服务器的压力上升
所以增加远程服务器的数量 数据同步保存 任务均匀分担
具有相同功能的多个服务器组合到一起 就可以称之为是集群
"""
数据库的分类
数据库共有2种类型:关系型数据库、非关系型数据库
关系型数据库
关系型:
1.有固定的表结构(最主要的特征)
2.并且表与表之间可以建立代码层面的关系
MySQL、MariaDB(MySQL的代替品)、
Percona Server(MySQL的代替品·)、PostgreSQL、
Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE、Clipper、FoxPro、foshub。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
MySQL:关系型数据库的代表 开源免费 使用频率极高
Oracle:安全性极高 但是使用和维护收费 使用成本高
PostgreSQL:支持二次开发(自己嫁接、扩展功能)
MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
sql server:老牌数据库软件 目前主流不用
非关系型数据库(NoSQL)
非关系型:
1.没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征)
{'name':'123'} {'username':'123','pwd':123}
2.并且表与表之间无法建立代码层面的关系
redis、MongoDB、Memcache、HBase、BigTable、Cassandra、CouchDB、Neo4J
redis: (非关系型数据库----键值数据库)
MongoDB:(非关系型数据库----文档数据库)
HBase:(非关系型数据库----列存储数据库)
Neo4J : (非关系型数据库----图形数据库)
Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
Memcache:被redis取代了!!!
SQL与NoSQL
SQL语句
与关系型数据库交互的语言
NoSQL语句
与非关系型数据库交互的语言
SQL (Structured Query Language) 数据库,指关系型数据库。主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
NoSQL(Not Only SQL)泛指非关系型数据库。主要代表:MongoDB,Redis,CouchDB。
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
MySQL
MySQL简介
MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司1995年开发,迅速成为最流行的开源
关系型数据库管理系统。
在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management
System:关系数据库管理系统)应用软件之一。
MySQL6.x版本之后分为社区版和商业版(付费,功能更强大)。
MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这
样就增加了速度并提高了灵活性。
MySQL是可以定制的,采用了GPL(GNU General Public License)协议,你可以修改源码来开发自己
的MySQL系统。
MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库。支持5000万条记录的数据仓库,32
位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
MySQL使用标准的SQL数据语言形式。
MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、
Perl、PHP、Eiffel、Ruby 和 Tcl 等。
为什么选择MySQL
1、开放源代码,使用成本低。
2、性能卓越,服务稳定I
3、软件体积小,使用简单,并且易于维护。
4、历史悠久,社区用户非常活跃,遇到问题可以寻求帮助。
5、许多互联网公司在用,经过了时间的验证。
MySQL下载
MySQL安装文件分两种 .msi和.zip ,
msi格式需要安装,就跟正常安装程序一样的进行安装,选择好要安装的MySQL服务后就是一直next,直到完成安
装。
zip格式是自己解压,解压缩之后其实MySQL就可以使用了,但是要进行环境变量配置,我的电脑->属性->高级->环境变量
选择Path,在其后面添加: 你的mysql bin文件夹的路径
系统服务(设置开机自启)
1.msi安装
如果是msi方式安装的MySQL,我们就不需要去手动去设置MySQL服务开机自启。
2.zip安装
1.我们需要确保环境变量中已经添加了mysql bin文件夹的路径
2.关闭所有MySQL窗口
3.切换到mysql的安装bin目录下 (或者在bin文件中按住SHIFT键点鼠标左键,我们可以看到有一个选项叫'在此处打开一个Powershell窗口'也是一样的)
4.在窗口中输入mysqld --install
5.再次在cmd窗口中启动MySQL服务 net start mysql
"""
如果想要移除系统服务
1.先停止服务端
net stop mysql 管理员身份运行cmd
2.移除系统服务
mysqld --remove
"""
登入和修改密码
登入
在cmd窗口输入 mysql -u用户名 -p密码
如果是zip方式安装的这里第一次登录 没有密码 直接回车即可
我们也可以 mysql -u用户名 -p 直接回车
会提示我们输入密码,在这输入密码显示的是*,如果是直接把密码写-p后面,密码会暴露出来。
修改密码
修改管理员密码
方式1:在cmd窗口下直接修改(不要登录进去)
mysqladmin -u用户名 -p原密码 password 新密码
'''第一次无密码修改 -p后面不写即可'''
mysqladmin -uroot -padmin123 password 123456
方式2:登录状态下修改当前用户密码(先登录)
set password=PASSWORD('新密码'); # 最新版不支持
操作库的基本SQL语句
# 查
show databases; # 查看所有的库名称
show create database 库名; # 指定查看某个库的信息
# 增
create database 库名;
# 改
alter database 库名 charset='gbk'; # 修改字符编码
# 删
drop database 库名;
操作表的基本SQL语句
在我们要操作表时,我们的先切换到表对应的数据库下,我们可以先使用 show databases();来查看所
有的数据库,或者我们已经在数据库里了,查看当前在哪个数据库下select database();结果如果是NULL表
示当前没有切换到任何库下。
找到数据库后,我们使用use 库名来进行切换数据库,在任意一个地方都能切换。
# 查
show tables; # 查看当前库下所有的表名称
show crate table 表名; # 指定查看某个表的信息
describe 表名; # 指定查看表的字段信息 简写 desc 表名;
# 增
create table 表名(
字段名称1 字段数据类型1,
字段名称2 字段数据类型2
);
# 改
alter table 表名 rename 新表名; # 修改表名
# 删
drop table 表名;
操作记录的基本SQL语句
# 查
select * from 表名; 查找表里所有的数据
selec * from 库名.表名 查看指定库下面的指定表里面的所有数据
select 字段名1,字段名2... from 表名 查找表中对应字段的数据
# 增
insert into 表名 values(值1,值2); # 单条数据
insert into 表名 values(值1,值2),(值3,值4); # 多条数据
insert into 表名(字段名1,字段名2) values(值1,值2) 单条数据,只添加指定字段的值,其他字段为空
# 改
update 表名 set 字段=新值 where 筛选条件;
# 删
delete from 表名 where 筛选条件;
如果不加筛选条件就是删除所有的数据