存取数据的演变史
# 1.文本文件
没有规定文件路径与数据格式,所以文件路径与数据格式都不一致,不统一
-1.文件可能存到任何盘任何文件夹 C:\a.txt
-2.数据之间的分割符也可以是多种特殊符号 jason|123
# 2.软件开发目录规范
-1.规定了数据文件的大致存储位置 db文件夹下
-2.但是数据格式也是没有统一 json文件内部的键值对
# 3.数据库服务
-1.统一了存取位置 也统一了数据格式(完全统一)
数据库软件应用史
# 1.单机数据
每个计算机上的应用就如同没有互联网一样,不能完成数据共享,数据库的服务都在本地完
# 2.联网数据
不同计算机上的相同程序之间可以数据共享,单独在网络上架设远程数据库服务
"""
关于远程数据库服务:
1.数据安全性问题
2.服务器负载问题
通过数据库集群解决,就是让多台服务器运行相同的数据库服务
"""
数据库的本质
# 站在不同角度下的的理解
-1.站在底层原理的角度
* 数据库指的是专门用于操作数据进程的
运行内存中的代码
-2.站在现实应用的角度
* 数据库指的是拥有操作界面的应用程序
操作进程的界面
# 一般数据库默认指的是数据库软件
数据库的本质也是cs架构的应用程序(所有程序员都可以参与编写)
数据库的分类
# 关系型数据库
1.指的是是数据组织方式有明确的表结构
* 关系型数据库存取数据的方式可以看成是表格
id | name | pwd
2.表与表之间可以建立数据库层面的关系
* 只要获取到用户表的一条数据,就可以获取到与之相关的其他表数据
用户表 >>> 房屋表
3.软件:
MySQL 开源 使用最为广泛,数据库学习必学
PostgreSQL 开源 支持二次开发
MariaDB 开源 与mysql用法相似
Oracle 收费 安全性极高,主要用于银行及各大重要机关
sqlite 小型数据库 主要用于本地测试(django框架自带该数据库)
db2、sql server 一些用的比较少的数据库
# 非关系型数据库
1.数据的组织方式是以k:v键值对的形式组织的
{'username':'kevin','pwd':123}
2.数据之间无法直接建立数据库层面的关系
可以自己编写代码建立逻辑层面的关系
3.软件:
redis 缓存型数据库 主流的热度很高
mongoDB: 稳定型数据库 主要用于爬虫、大数据 最像关系型
memcache: 缓存型数据库 已经被redis淘汰
MySQL简介
# 1.版本问题
8.0:最新版
5.7:使用频率较高
5.6:学习推荐使用
ps:站在开发的角度使用哪个版本学习都没有关系
# 2.下载流程
1.访问官网
2.点击DOWNLOADS并点击GPL
3.点击community server
4.点击Archives
5.选择对应系统的对应版本下载即可(zip压缩包)
# 3.主要目录介绍
bin目录 : 存放启动文件
mysqld.exe(服务端) mysql.exe(客户端)
data目录 : 存放核心数据
my-default.ini(默认的配置文件)
readme(软件说明)
MySQL基本使用
# 建议使用管理员身份打开cmd
-1.切换到mysql的bin目录下先启动服务端 mysqld
-2.保持窗口不关闭 重新打开一个新的cmd窗口
-3.切换到mysql的bin目录下启动客户端 mysql
"""
1. 直接使用mysql命令默认是游客模式 权限和功能都很少
mysql -u用户名 -p密码
2. 管理员默认没有密码 连续回车即可
mysql -uroot -p
"""
# 在启动服务端的时候就报错
* 拷贝报错信息,百度或mysql启动报错粘贴错误信息
系统服务的制作
# 1.先把bin目录添加到环境变量
清空之前打开的cmd窗口,要把之前用cmd启动的服务端关闭
# 2.将mysql添加到系统服务中
-1.如何查看系统服务
鼠标右键任务栏选择服务
cmd输入services.msc回车
-2.以管理员身份打开cmd窗口
mysqld --install
# 3.首次添加不会自动启动 需要人为操作一下
-1.鼠标右键点击启动
-2.命令行启动
net start mysql
"""
如果想卸载重新按照
1.先关闭服务端 net stop mysql
2.移除系统服务 mysqld --remove
"""
密码相关操作
# 1.修改密码
* 方式1:mysqladmin
mysqladmin -u用户名 -p原密码 password 新密码
* 方式2:直接修改存储用户数据的表
* 方式3:冷门操作 部分版本不支持
set password=password('新密码') # 修改当前登录用户的密码
# 2.忘记密码
* 方式1:卸载重装
* 方式2:把data目录删除 拷贝一份别人的目录
* 方式3:非正常操作
-1.关闭正常的服务端
-2.以跳过授权表的方式重启服务端(不校验密码)
-3.以管理员身份进入然后修改mysql.user表数据即可
net stop mysql
mysqld --skip-grant-table
mysql -uroot -p
update mysql.user set password=password('123') where Host='localhost' and User='root';
-4.关闭服务端 然后以正常方式启动即可
SQL与NoSQL
# 数据库的服务端支持各种语言充当客户端
以mysql为例:为了能够兼容所有类型的客户端,有两种策略
1.服务端兼容 不合理,消耗数据库服务端资源
2.制定统一标准 SQL语句、NoSQL语句
# SQL与NoSQL
SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库 NoSQL也用来表示非关系型数据库
数据库相关概念
库 文件夹
表 文件夹里面的文件
记录 文件里一行行的数据
常见基本SQL语句
# 1.针对库的基本SQL语局
增 create database 库名;
删 drop database 库名;
改 alter database 库名 charset='gbk';
查 show databases;
show create database 库名;
# 2.针对表的基本SQL语句
查看当前所在的库名
select database();
如果没有切换指定的库 那么默认是NULL
use 库名;
增 create table 表名(字段名 字段类型,字段名 字段类型);
删 drop table 表名;
改 alter table 旧表名 rename 新表名;
查 show tables;
show create table 表名;
describe 表名;
desc 表名;
# 3.针对记录的基本SQL语句
操作数据前,必须要先有库和表
增 insert into 表名 values(数据,数据),(数据,数据);
删 delete from 表名; # 删除表中所有的数据
delete from 表名 where 筛选条件; # 按条件删除
改 update 表名 set 字段名=新数据 where 筛选条件;
查 select * from 表名; # 查所有字段
select 字段1,字段2 from 表名; # 如果表中字段较多出现了错乱 可以结尾写\G
# 补充
1.SQL语句结束符是分号 ;
2.取消SQL语句的执行 \c
3.查看所有的数据库 show databases;
4.查看所有的表 show tables;
5.查看user表里面所有的记录 select * from mysql.user;
MYSQL安装
https://juejin.cn/post/7130908861040427021