文本文件(每个程序的数据 存放的位置都不一样)
文件路径不一致: 一个C盘 一个D盘
数据格式不一致: Lebron|123 LIke@123
软件开发目录规范
规定了数据文件的大致存储位置: DB文件夹
针对数据格式还是没有完全统一 : 比如统一json文件但是内部键值对不同
数据库服务
统一了存取位置 也统一了数据格式(完全统一)
单机游戏
我们都知道单机游戏在没有网络的时候也可以启动保存
因为它的数据库服务全部在本地 下载的时候顺带了数据库
网络游戏
不同的计算机上相同的程序。数据之间可以共享
数据库服务单独在网络架设(远程数据库服务)
远程数据库服务
可以不用担心数据安全性问题 服务器负载问题
数据库都是有多台服务器运行相同的数据库服务
数据库三个字在不同的角度下描述的意思也不一样
1.站在底层原理的角度
数据库指的是专用用于操作数据的进程(运行在内存中的代码)
2. 站在现实应用的角度
数据库指的是拥有操作界面的应用程序(用于操作进程的界面)
我们不做特殊说明的情况下 提数据库其实都是指数据库软件
'我们也称数据库软件本质就是一款基于C/S架构编写的应用程序'
言外之意所有的程序员理论上都可以编写(市面上已经有了很多数据库软件)
关系型数据库
1.数据的组织方式有明确的表结构
ID NAME GENDER 数据是隔离的 统一结构
关系型数据库存取数据的方式可以看成表格 每个数据都是对称的
(id就是id编号 名字就是名字 性别就是性别 统一格式)
2. 表与表之间可以建立数据库层面的关系
男友表 女友表 只要获取到男友表的一条数据 就可以获取到与之相关的女友表数据
关系型数据库的软件 MySQL PostgreSQL MariaDB Oracle Sqlite db2 sql server
MySQL: 开源 使用最为广泛 数据库学习必学
PostgreSQL: 开源 支持二次开发
MariaDB: 开源 与MySQL是同一个作者 用法也极其相似
Oracle: 收费 安全性极高 主要用于银行及各大重要机关
sqlite: 小型数据库 主要用于本地测试(django框架自带该数据库)
非关系型数据库
1.数据的组织方式没有明确的表结构 是以k:v键值对的形式组织的
{'name':'jason'} {'username':'kevin','pwd':123}
2.数据之间无法直接建立数据库层面的关系
关系型数据库的软件 redis、mongoDB、memcache
redis: 目前最火 使用频率最高的缓存型数据库
mongoDB: 稳定型数据库 最像关系型的非关系型 主要用于爬虫、大数据
memcache: 已经被redis淘汰(支持一种字符串类型的K:V键值对)
1. 先启动服务端
2. 查看Mysql文件位置以及Mysqld
3. 再次开启新的Cmd窗口(直接回车会以游客模式进入 功能很少)
4. 用户名密码登录 MySQL -u root -p (root = 用户名)
mysql默认管理员账号 用户名是root 密码是你安装的时候设置的密码
5. 推出MySQL命令(exit quit)
1. 如何解决每次都需要切换路径查找文件的缺陷
添加环境变量 export PATH = /usr/local/mysql/bin
2. 将MySQL服务端制作完成系统服务 (随着计算机的开启而启动 关闭而结束)
以管理员身份打开Cmd窗口
执行系统服务命令 mysqld --install
启动服务端 任务管理器服务右键直接点击启动
命令启动 net start mysql
查看系统服务的命令 services.msc
关闭mysql服务端 net stop mysql
移除系统服务(先确保服务以及关闭)
'数据库的服务端支持各种语言充当客户端'
ex: 以MySQL服务端为例
MySQL客户端、python代码编写的客户端、java代码编写的客户端(各种语言都能兼容)
为了能够兼容所有类型的客户端 有两种策略
服务端兼容
不合理 消耗数据库服务端资源!!!
制定统一标准
SQL语句 NoSQL语句
SQL与NoSQL
SQL语句的意思就是用来操作关系型数据库的语法
NOSQ语句的意思操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库 NoSQL也用来表示非关系型数据库
数据库是
"按照数据结构来组织、存储和管理数据的仓库"
。是一个长期存储在计算机内的、有组织的、可共享的,统一管理的大量数据的集合。数据库是存放数据的仓库。它的存储空间很大
,可以存放百万条、千万条、乃至上亿条数据。
在数据库的发展史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来,几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库的产品也几乎都有支持关系数据库的接口。随着云计算的发展和大数据时代,引入了其它分布式技术,这类数据库一般称为N哦SQL数据库。
简单总结:
1.1 数据库(DB ,database)是按照数据结构来组织、存储和管理数据的"仓库"
1.2 数据库是一定方式储存在一起、能为多个用户共享、统一管理的大数据集合
1.3 数据库可以通过一些指令对数据库进行赠、删、改、查(Create/Retrive/Updata/Delete)等操作
2.1 实现数据共享:可以存取数据库中的数据,也可以通过接口连接数据库并共享数据
2.2 减少数据的冗余度:由于可以直接想数据库存拿以及共享数据,避免了用户各自建立应用文件,减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
2.3 保持了数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(谁物理结构的变化不影响数据的逻辑结构)。
2.4 数据实现集中控制:数据库可对数据进行集中控制和管理,并通过数据模型表示各种谁的组织以及数据间的关系。
2.5 数据一致性和可维护性:以确保数据的安全性和可靠性:主要包括(安全性控制、完整性控制、并发控制,便在同一时间周期内,运行多数据实行多路存取,又能防止用户之间的不正常交互作用。)
2.6 故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复,数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统误操作造成的数据错误等。
1.修改密码(直接在Cmd中运行管理员模式)
mysqladmin -u(需要修的用户名) -p(原密码) passwrod 新密码
第一次修改 mysqladmin -u root -p password 123 # 第一次修改默认密码是没有的
第二次修改 mysqladmin -u root -p123 password 321 # 第二次修改就需要输入上次密码 修改新的
偏门方式(有些版本无法使用): # 需要先登录mysql用户 set password= PASSWORD(新密码);
2.忘记密码
方式1:直接重装\或者直接拷贝别人对应的文件
方式2:Cmd窗口管理员运行
1> net stop mysql # 关闭MySql服务端服务
2> mysql --skip-grant-tables # 重启Mysql
3> mysql -u root -p # 免密码登录(需要新建一个Cmd窗口运行)
4> udate mysql.user set password=password(新密码) where Host='localhost' and User='root';
5> quit 或者 exit (退出当前Cmd窗口运行)
6> 到原本第一个Cmd窗口清空命令(Ctrl+ C)
7> net start mysql 开启mysql服务
8> mysql -u root -p 输入新密码即可登录成功
下述概念仅仅是为了小白更快的理解 并不是完全正确
数据(data) 事物的状态
库(DataBase,简称DB) 文件夹
表 文件夹里的文件
记录 文件里的一行一行的数据
(库表记录就像是一个文件夹里面有一个文件,文件里面有内容)
数据库管理系统(DataBase Management System 简称DBMS)
管理数据的套接字软件,C/S架构
数据库服务器:
运行有DBMS服务端的计算机,该计算机对内存和硬盘要求都 相对较高
'''顺序:库 >>> 表 >>> 记录 >>> 字段'''
一个库中可以有多张表,一个表中可以有很多条记录,也可以有多个字段
SQL语句结束符号是分号(;)
取消SQL语句的执行(\c)
show databases; 查看所有的数据库
show tables; 查看所有的表
sleect * from mysql.user; 查看user表里面所有的记录
1.增加库
create database 库名;(不能使用到SQL关键词)
2.查看库
show databases;(库列表)
show create database 库名;(单个库数据)
3.修改库的语言(基本上不用,直接删除重新创建)
alter database 库名 charset='gbk';
4.删除库
drop database 库名;
查看当前所在的库名 select database();
如果没有切换制定库 那么默认是NULL
指定进入 use 库名;
1.添加表
create table 表名(字段名 字段类型,字段名 字段类型);#字段名表示数据名称的统一称呼 类型表示int str
eg:create table u1s1(id int ,name varchar(32),gender)
2.查看表
show tables;
show create table 表名;# (可以看到创建的格式)表结构
describe 表名;
desc 表名; # (查看表结构,格式化了)
3.修改表名
alter table 旧表名 rename 新表名;
4.删除表
drop table 表名;
既然想要操作记录 那么肯定要有库和表 要不然操作不了
1.增加记录
insert into 表名 values(数据,数据); # 数据根据自己的字段名输入对应的数据就好了
2.查看记录
select * from 表名; # * 表示查看所有的字段记录
select 字段1,字段2 from 表名; # 查看单独两个字段记录
ps:如果表中字段较多出现了错乱 可以结尾写\G
3.修改记录
update 表明 set 字段名=新数据 where 筛选条件; # 筛选条件就是字段名
4.删除记录
delete from 表名; # 删除标中所有的数据
delete from 表名 where 筛选条件 # 按照条件删选数据