数据存储演变史

第一阶段:单独的文本文件

刚开始使用文本文件存储数据,这种方式没有固定的存放位置和固定的数据格式。

第二阶段:软件开发目录规范

这个阶段规定了文件存放位置,解决了文本文件没有固定的存放位置的问题,但是没有固定的数据格式这个问题还是存在。

第三阶段:数据库应用

这个阶段开始使用数据库来存储数据了,用数据库存储数据就解决了数据存放位置和数据格式的问题。

数据库应用发展史

第一阶段:单机游戏阶段

刚开始的数据都是各自保存在各自的计算机上的,无法实现远程共享,就像单机游戏一样,不用互联网,但只能在自己计算机上游玩。

第二阶段:多机游戏阶段

从这里开始数据都统一通过网络保存到某个固定的服务器上,其他计算机就可以通过这个服务器来实现数据共享了。

缺点:如果所有的数据都存放到一台服务器上,那么这个服务器的压力就会很大,并且一旦服务器崩溃,所有的数据都有可能丢失,数据的安全性比较低。

这个时候就有了新的解决方法:增加服务器的数量,任务均匀分担,并且数据同步保存,用于备份的作用,一台服务器崩溃了还有另外一台。

集群:具有相同功能的多个服务器组合到一起。

数据库本质

数据库从微观层面来说,就是运行在计算机上专门处理数据的进程;从宏观层面来说,就是提供给用户一个简单快捷的操作进程(数据处理)的软件;

所以平时在说的数据库一般指的是操作数据库的应用软件,也就是数据库软件,既然是一个软件,那么它的本质上也是一个基于C/S架构。

数据库分类

数据库大致可以分为两类:

  • 关系型数据库
  • 非关系型数据库

关系型数据库

特征:

  1. 有固定的表结构(主要特征),比如excel中的表格。
  2. 表与表之间可以建立关系,比如存储班级的表和存储学生的表之间是有关系的。

常见数据库:MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server。

  • MySQL:关系型数据库代表,开源免费,使用频率极高。
  • Oracle:安全性极高,但是使用和维护收费。
  • PostgreSQL:支持二次开发(自己嫁接,拓展功能)。
  • MariaDB:与MySQL是用一作者,开发初衷是作为MySQL的替代品。
  • sqlite:小型数据库,携带方便但功能较少,主要用于本地测试。
  • sql server:老牌数据库软件,目前主流不用。

非关系型数据库

特征:

  1. 没有固定的表结构,数据存储采用K:V键值对形式(主要特征),比如{'name':'tom'}、{'username':'tom','password':'123'}
  2. 表与表之间不能建立关系。

常见数据库:Redis、MongoDB、Memcache。

  • Redis:目前最火的非关系数据库,类型丰富,功能强大。
  • MongoDB:最像关系型数据库的非关系型数据库,主要用于爬虫和大数据。
  • Memcache:落寞了,被Redis取代了。

SQL与NoSQL

SQL有时候用来表示关系型数据库,有时候表示SQL语句;NoSQL有时候用来表示非关系型数据库,有时候表示NoSQL语句

SQL语句与NoSQL语句统一了各个编程语言与数据库服务器的沟通标准。

  • SQL语句是与关系型数据库交互的语言。
  • NoSQL语句是与非关系型数据库交互的语言。

MySQL简介

版本问题

  • 5.6.X:使用最为广泛的稳定版本

  • 5.7.X:目前正在逐步过渡使用的版本

  • 8.0.X:最新版本,暂时不投入正常生产环境中使用(但是很好用)

下载使用

1.进入官网:MySQL

2.点击DOWNLOADS

3.点击MySQL Community (GPL) Downloads

4.点击MySQL Community Server

5.默认给你展示的最新版本MySQL,我们可以选择自己需要的版本

6.选择版本和操作系统后下载

7.下载完后解压到合适位置

8.添加bin文件夹到环境变量中

目录结构

这里以MySQL5.6.51为例。

根目录

bin文件夹

mysqld.exe用于启动服务端。

mysql.exe用于启动客户端。

基本使用

简单使用

游客模式

1.用管理员身份运行cmd

2.使用cd命令到bin路径下(如果添加了环境变量,这一步省略)

3.启动服务端:输入mysqld

4.重新打开一个cmd窗口(不要关闭之前的cmd窗口)

5.启动客户端:输入mysql

如果显示的和我一样的界面,那就说明没有问题了。

管理员模式

在上述步骤的第五步中,把命令换成:

mysql -uroot -p

回车后会提示你输入密码,因为是第一次登录,没有密码,再次按回车即可。

系统服务

上面的简单使用中,服务端窗口需要一直开着,非常麻烦。如果我们不想自己启动服务端,可以设置成开机自启动。

步骤:

1.用管理员身份运行cmd

2.输入:mysqld --install

3.在输入:net start mysql

4.这时服务端就是一直处于运行状态了,无论何时都可以通过cmd窗口进入mysql环境了

手动管理服务

如果你不想开机自启mysql服务,那么就进行如下操作。

1.右键此电脑-->管理-->服务和应用程序-->服务。

2.找到mysql服务,右键-->属性。

3.设置启动类型为手动,应用,确定。

4.设置成功后,以后每次开机都需要自己去启动mysql服务。

补充

停止服务端命令:net stop mysql

移除系统服务:mysqld --remove

修改密码

方式一:通过cmd窗口直接修改

1.打开cmd窗口

2.更改密码命令:

mysqladmin -u用户名 -p原密码 password 新密码

因为刚下载的mysql,所以没有密码,原密码不写即可。

修改管理员密码为'123456'案例:

mysqladmin -uroot -p password 123456

方式二:进入mysql环境后修改

1.打开cmd窗口进入mysql环境

2.更改密码命令:(最新版不支持)

set password=PASSWORD('新密码');

重要概念

库:类似于文件夹

表:类似于文件

记录:类似于文件中的一行行数据

补充

SQL语句使用分号作为结束符。

基本SQL语句

关于库的基本语句

SQL语句 作用
use 库名; 切换到指定库,操作库中的表时必要操作
show databases; 查看所有的库名称
show create database 库名; 指定查看某个库的信息
create database 库名; 添加库
alter database 库名 charset='字符编码'; 修改指定库的字符编码
drop database 库名; 删除库
select database(); 查看当前在哪个库下,显示NULL说明不在任何库下

关于表的基本语句

SQL语句 作用
show tables; 查看当前库下所有的表名称
show crate table 表名; 指定查看某个表的信息
create table 表名(字段名称1 字段类型1, 字段名称2 字段类型2,...); 创建表
alter table 表名 rename 新表名; 修改表名
drop table 表名; 删除表
desc 表名; 查看指定表的字段信息
alter table 表名 add 新字段 字段类型; 末尾添加字段
alter table 表名 add 新字段 字段类型 after 已有字段; 已有字段后追加新字段
alter table 表名 add 新字段 字段类型 first; 头部添加字段
alter table 表名 change 旧字段 新字段 字段类型; 修改字段名
alter table 表名 drop 已有字段; 删除字段

关于记录的基本语句

SQL语句 作用
insert into 表名 values(值1,值2,...); 添加一条记录,值与表中的字段对应
insert into 表名 values(值1,值2,...),(值3,值4); 添加多条记录
select * from 表名; 查看表里面所有的数据
select * from 库名.表名; 查看指定库下面的指定表里面的所有数据
select 字段1,字段2,... from 表名; 查看表中指定字段的数据
select * from 表名\G 查询语句后加\G时,数据会逐行展示
update 表名 set 字段名=新值 where 筛选条件; 修改表中符合条件的记录的字段值
delete from 表名 where 筛选条件; 删除表中符合条件的数据
delete from 表名; 删除表中所有数据

最新文章

  1. protobuf学习(2)-相关学习资料
  2. php面向对象编程(二)
  3. struts.custom.i18n.resources国际化
  4. Train Problem I (HDU 100题纪念)
  5. iOS - Swift 基本语法
  6. Java中类的初始化顺序
  7. apche commons项目简介
  8. HTML学习笔记5:修饰符和特殊标签
  9. Security配置文件的基本配置及参数名详解
  10. ELK-安装kibana
  11. Python-序列号和模块复习-64
  12. mysql (六)
  13. DRF框架之视图方法的几个封装好的模块介绍(第三天)
  14. NOIP2018 差点退役记
  15. vss 日文文件路径的名字在中文系统下乱码
  16. 关于oracle函数listagg的使用说明
  17. TypeScript 之 函数
  18. js基础知识--变量类型和变量计算
  19. 代码实现分析mpeg-2文件
  20. mongodb常用命令小结

热门文章

  1. 小程序输入框闪烁BUG解决方案
  2. 关于 video 播放的新探索
  3. 大数据学习之路之ambari配置(四)
  4. CCF201409-3 字符串匹配
  5. IO流的简单实现
  6. JavaScript实现动态表格
  7. CentOS7 DHCP自动获取IP地址
  8. DOCTYPE(⽂档类型) 的作⽤
  9. springboot+springsecurity+mybatis plus之用户授权
  10. 攻防世界 favorite_number