1.文本文件
:
最基础的数据存储方式,但没有统一的规范,导致它的存放位置和数据格式有所不同,不利于以后不同的人去维护。
缺点:
总结:程序应用无法做到兼容
2.软件目录开发规范
按照文件功能的不同规定了相应的位置,解决了部分兼容问题。
规定了数据文件的大致存储位置: db文件夹
但是针对数据格式还是没有完全统一: 比如统一json文件但是内部键值对不同
3.数据库服务
统一了存取位置 也统一了数据格式(完全统一)
1.单机游戏阶段
当处理完数据储存方式后,只是解决了各种项目上的问题,暂时只能实现数据的区域性共享,无法向互联网上进行交互。
不足:
不同计算机上的相同程序,数据不能共享;数据库服务都在本地存储。
2.网络游戏阶段
利用服务器解决了数据交互共享,使得开发的项目可以去共更多人使用。
实现:
不同的计算机上的相同程序,数据可以共享。
数据基于网络保存在同一个服务器上。
不足:
但是如果所有的数据都保存在同一个服务器里,会降低服务器的安全性,负载量大大增加。
集群:
增加远程服务器的数量 数据同步保存 任务均匀分担,具有相同功能的多个服务器组合到一起 就可以称之为是集群
可以解决服务器的安全问题和服务器负载问题。
数据库三字在不同角度下描述的意思不一样
1.站在底层原理的角度
数据库指的是专用用于操作数据的进程
eg:运行在内存中的代码
2.站在现实应用的角度
数据库指的是拥有操作界面的应用程序
eg:用于操作进程的界面
总结:
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。
特点:
1.数据的组织方式有明确的表结构
id name password
ps:关系型数据库存取数据的方式可以看成是表格
2.表与表之间可以建立数据库层面的关系
eg:
用户表 房屋表
ps:只要获取到用户表的一条数据 就可以获取到与之相关的其他表数据
常见的关系型数据库:MySQL,PostgreSQL、MariaDB、Oracle、sqlite、db2、sql server
MySQL:开源 使用最为广泛 数据库学习必学
PostgreSQL:开源 支持二次开发
MariaDB:开源 与MySQL是同一个作者 用法也极其相似
Oracle:收费 安全性极高 主要用于银行及各大重要机关
sqlite:小型数据库 主要用于本地测试(django框架自带该数据库)
NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。对于非结构化数据的处理更合适;出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。
特点:
1.数据的组织方式没有明确的表结构 是以k:v键值对的形式组织的
{'name':'jason'}
{'username':'kevin','pwd':123}
2.数据之间无法直接建立数据库层面的关系
常见的非关系型数据库:redis、mongoDB、memcache
redis:目前最火 使用频率最高的缓存型数据库
mongoDB:稳定型数据库 最像关系型的非关系型 主要用于爬虫、大数据
memcache:已经被redis淘汰
1.MySQL版本
5.6X:前几年使用频率最高的版本
5.7X:最近尝试迁移的版本(频率+)
8.0X:最新版 功能很强大 但是线上环境几乎不用(本地自己用非常好用)
虽然版本不同,但是基本使用都是差不多的,主要体现在底层运作。
2.MySQL的安装与下载
1.访问官网
下载步骤
3.主要文件目录介绍
bin文件夹
mysqld.exe服务端 mysql.exe客户端
data文件夹
存取数据
my-default.ini
默认配置文件
必须要先启动服务端,然后再打开一个窗口用作于客户端
2.查找mysqld文件位置
mysqld
cmd窗口就是服务端 不要关闭
3.再次开启新的cmd窗口
mysql
直接回车会以游客模式进入 功能很少
4.用户名密码登录
mysql -u用户名 -p密码
mysql默认管理员账号 用户名是root 密码是空
5.退出
exit
quit
提示:
启动服务端的时候可能会报错
解决策略:
拷贝报错信息(mysql启动报错’错误代码)网上搜索,基本都会有解决方式
引入
取消繁杂的命令启动,利用计算机的系统服务处理。
问题
问题一
针对问题一的解决措施就是添加环境变量
将D:\MySql\mysql-5.6.44-winx64\bin添加到环境变量
问题二
针对问题二的解决措施就是编写固定的命令,使得跟随电脑开关机自动化
先确保之前的服务端关闭了,然后重新以管理员的身份打开cmd窗口
执行系统服务命令
mysqld --install
启动服务端
方法一.右键直接点击启动
方法二.命令启动
net start mysql
关闭所有的cmd 随意打开一个cmd窗口
输入mysql即可链接到服务端
补充知识:
查看系统服务的命令
services.msc
关闭mysql服务端
net stop mysql
移除系统服务
1.先确保服务已经关闭
2.执行移除命令
mysqld --remove
登录的两种方式
直接输入mysql命令登录
默认是游客模式,没有太多的权限
通过用户和密码登录
学习阶段不用考虑用户管理 直接使用root用户(管理员账号,第一次登录没有密码)
mysql -uroot -p 直接回车
修改密码
方式1:在cmd窗口下直接修改(不要登录进去)
mysqladmin -u用户名 -p原密码 password 新密码
第一次修改
mysqladmin -uroot -p password 123
第二次修改
mysqladmin -uroot -p123 password 321
方式2:登录状态下修改当前用户密码(需要先登录)
set password=PASSWORD(新密码); 有些版本不支持,比较偏门
忘记密码
直接重装\拷贝对应文件
先关闭服务端 然后以不需要校验用户身份的方式启动 再修改 最后再安装正常方式启动
1.net stop mysql
2.mysqld --skip-grant-tables
3.mysql -uroot -p
4.update mysql.user set password=password(123) where Host=‘localhost’ and User=‘root’;
5.net stop mysql
6.net start mysql
引入
数据库服务端支持很多客户端来链接使用,这就使得数据库自带的客户端可能是 python代码编写的也可能是 java代码编写的 …
那如何让服务端兼容诸多客户端 实现正常交互呢?
为了能够兼容所有类型的客户端 有两种策略
1.服务端兼容
不合理 消耗数据库服务端资源!!!
2.制定统一标准
统一沟通标准,SQL语句、NoSQL语句
总结:
SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库 NoSQL也用来表示非关系型数据库
查看所有的数据库:show databases;
查看所有的表:show tables;
查看user表里面所有的记录:select * from mysql.user;
增
create database 库名;
查
show database 库名;
show create database 库名;
改
alter database 库名 charset='gbk'; # 修改库的编码
删
drop database 库名;
补充
查看当前所在的库名:
select database();
如果没有没有切换指定的库,那么就会显示NULL
如何切换库?
use 库名;
强调
我们在操作库、表、记录的时候 MySQL默认自带的都不要动
增
create table 表名(字段1 字段类型1, 字段2 字段类型2, .......)
查
select tables; # 查看所有的表
select create table 表名;
describe 表名;
desc 表名;
改
alter table 旧表名 rename 新表名;
删
drop table 表名;
增
insert into 表名 values (数据, 数据); # 创建单条数据
insert into 表名 values(数据, 数据), (数据, 数据), (数据, 数据); # 创建多条数据
alter table 表名 add 字段名 字段类型; # 新增字段
查
select * from 表名; # 查询表中所有数据
select 字段名,字段名 from 表名; # 根据字段名查找数据
ps:如果表中字段较多出现了错乱 可以结尾写\G
改
update 表名 set 字段名=新数据值 where 筛选条件;
删
delete from 表名; # 删除所有的数据
delete from 表名 where 筛选条件;