单独的文本文件
程序彼此无法兼容,没有统一的标准。
没有固定的存放位置C:\a.txt
D:\aaa\c.txt
F:\bbb\b.txt
没有固定的数据格式:jason|123
tony$123
kevin~123
软件开发目录规范
按照文件功能的不同规定了相应的位置
文件查找变得统一,但是没有解决格式问题。
数据库应用
将数据处理部分统一了起来
解决了存放位置和数据格式问题
单机阶段
数据各自保存在各自的计算机上,无法实现远程共享,无需互联网。
多机阶段
数据统一基于网络保存到某个固定的服务器上,实现数据共享,必须要有互联网。
如果所有的数据全部存储到一台远程服务器上,那么数据的安全性降低,服务器的压力上升,所以增加远程服务器的数量,数据同步保存 任务均匀分担,具有相同功能的多个服务器组合到一起,就可以称之为是集群。
数据库在微观层面上来说,运行在计算机上专门处理数据的进程(程序)。
在宏观层面上来说,是提供给操作者一个简单快捷的操作进程的软件。我们平时在说数据库的时候大部分指的是操作数据库的应用软件。
数据库软件的本质其实也是一款CS架构的软件,既然数据库本质是一款CS架构的软件,也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件。在目前地球上有很多牛逼的程序员,他们都具备编写数据库软件的能力,所以现在市面上其实存在很多数据库软件。
目前市面上有很多数据库软件,大致可以分为两类。
关系型数据库
常见数据库名称:MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql
MySQL:关系型数据库的代表 开源免费 使用频率极高
Oracle:安全性极高 但是使用和维护收费 使用成本高
PostgreSQL:支持二次开发(自己嫁接、扩展功能)
MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
sql server:老牌数据库软件 目前主流不用
非关系型数据库
常见数据库名称:
Redis、MongoDB、Memcache
Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
Memcache:被redis取代了。
数据库服务端支持很多客户端来链接使用。
让服务端兼容诸多客户端,实现正常交互可以让服务端识别并自动切换对应语言****或者统一沟通标准**。
相较之下统一沟通标准更加合理,所以有了SQL语句与NoSQL语句。
SQL语句,与关系型数据库交互的语言。
NoSQL语句,与非关系型数据库交互的语言。
SQL有时候用来标识关系型数据库,有时候表示SQL语句。
NoSQL有时候用来标识非关系型数据库,有时候表示NoSQL语句。
库=>文件夹
表=>文件
记录=>文件中一行行数据
show databases; # 查看所有的库名称
类似于查看data文件夹内文件夹的名称
SQL语句使用分号作为结束符。
增
create database 库名;
删
drop database 库名;
改
alter database 库名 charset='gbk'; # 修改字符编码
查
show databases; # 查看所有的库名称 show create database 库名; # 指定查看某个库的信息
表是存放于库下面的,所以操作表之前,应该先确定库。
select database(); # 查看当前在哪个库下
结果如果是NULL表示当前没有切换到任何库下
use 库名; # 切换到指定库下
我们在操作库、表、记录的时候 MySQL默认自带的都不要动。
查
show tables; # 查看当前库下所有的表名称 show crate table 表名; # 指定查看某个表的信息 describe 表名; # 指定查看表的字段信息 简写 desc 表名;
增
create table 表名( 字段名称1 字段类型1, 字段名称2 字段类型2 );
改
alter table 表名 rename 新表名; # 修改表名
删
drop table 表名;
要想操作记录,肯定得先有库和表。
查
select * from 表名; # 查看表里面所有的数据 select * from 库名.表名; # 查看指定库下面的指定表里面的所有数据
有些表里面的字段太多,展示的时候会错乱,可以考虑逐行展示。
select * from 库名.表名\G;
select Host,User from mysql.user # 查看指定字段
增
insert into 表名 values(值1,值2); # 单条数据 insert into 表名 values(值1,值2),(值3,值4); # 多条数据
改
update 表名 set 字段=新值 where 筛选条件; update t1 set name='jasonNB' where id=1; # 将id是1的数据中name字段对应的值改成jasonNB
删
delete from 表名 where 筛选条件; delete from t1 where id=3; # 将id是3的数据删除
如果不加筛选条件就是删除所有的数据。