目录
- MySQL数据库
MySQL数据库
一、数据存取演变史
1.文本文件
- 文件路径不一致:C:/a.txt D:/aaa/b.txt E:/ccc.txt
- 数据格式不一致:jason|123 tony$123 [email protected]
2.软件开发目录规范
- 规定了数据文件的大致存储位置:db文件夹
- 针对数据格式还是没有完全统一:比如统一json文件但是内部键值对不同
3.数据库服务
统一了存取位置,也统一了数据格式(完全统一)
二、数据库软件应用史
软件应用分类 | 描述 |
---|---|
单机游戏 | 不同计算机上的相同程序,数据无法共享,数据库服务全部在本地完成 |
网络游戏 | 不同计算机上的相同程序,数据可以共享,数据库服务单独在网络架设(远程数据库服务) |
远程数据库服务/数据库集群:
- 数据安全性问题
- 服务器负载问题
让多台服务器运行相同的数据库服务
三、数据库本质
数据库三字在不同角度下描述的意思不一样
1.站在底层原理的角度
数据库本质:指的是专用于操作数据的进程(运行在内存中的代码)
2.站在现实应用的角度
数据库本质:指的是拥有操作界面的应用程序(用于操作进程的界面)
3.注意
不做特殊说明下,数据库其实都是在指数据库软件,我们也称数据库软件本质是一款cs架构的应用程序(所有程序员理论上都可以编写,市面上已经有很多的数据库软件)
四、数据库分类
1.关系型数据库
1.1.数据的组织方式有明确的表结构
id name password
关系数据库存取数据可以看成是表格
1.2.表与表之间可以建立数据库层面的关系
只要获取到用户表的一条数据,就可以获取到与之相关的其他表数据
- 用户表、房屋表
1.3.主要的关系数据库
MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、SQL Server
关系数据库 | 功能 |
---|---|
MySQL | 开源,使用最为广泛,数据库学习必学 |
PostgreSQL | 开源,支持二次开发 |
MariaDB | 与MySQL是同一个作者,用法也及其相似 |
Oracle | 收费,安全性极高,主要用于银行及各大重要机关 |
sqlite | 小型数据库,主要用于本地测试(Django框架自带该数据库) |
2.非关系型数据库
1.1.数据的组织方式没有明确的表结构
是以k:v键值对的形式组织的
{'name': 'jason'}
{'username': 'kevin', 'pwd': 123}
1.2.数据之间无法直接建立数据库层面的关系
1.3.主要的非关系数据库
Redis、MongoDB、memcache
非关系数据库 | 功能 |
---|---|
Redis | 目前最火,使用频率最高的缓存型数据库 |
MongoDB | 稳定性数据库,最像关系型的非关系型数据库,主要用于爬虫、大数据 |
memcache | 已经被Redis淘汰 |
五、MySQL
虽然数据库软件很多,但是底层操作几乎一致,学了MySQL基本就可以快速上手所有的关系型数据库甚至非关系型数据库
1.简介
1.1.MySQL版本问题
虽然版本有区别,但是操作上几乎没区别,主要体现在底层运作
- 5.6X:前几年使用频率最高的版本
- 5.7X:最近尝试迁移的版本(频率+)
- 8.0X:最新版,功能很强大,但是线上环境几乎不用(本地自己用非常好用)
1.2.下载安装
1.2.1.访问官网
1.2.2.点击DOWNLOADS
1.2.3.点击GPL
1.2.4.点击community server
1.2.5.点击archives
1.2.6.点击download
1.3.解压安装
将下载好的安装包解压到除C盘以外的容易找的路径下,下载的压缩包里含有服务端和客户端,支持本地操作
1.4.主要文件介绍
文件夹 | 介绍 |
---|---|
bin文件夹 | 服务端:mysqld.exe 客户端:mysql.exe |
data文件夹 | 存取数据 |
my-default.ini | 默认配置文件 |
2.MySQL基本使用
2.1.启动服务端
- 打开cmd窗口
- 切换到mysqld.exe所在的路径
- 输入mysqld回车,启动服务端
注意:cmd窗口就是服务端,不要关闭
可能会报错,拷贝关键信息百度解决
2.2.开启新的cmd窗口启动MySQL
- 打开一个新的cmd窗口
- 切换到mysql.exe所在的路径
- 输入mysql回车,启动MySQL
注意:直接回车会以游客模式进入,功能很少
2.3.用户名密码登录
mysql -u用户名 -p密码
# mysql默认管理员账号 用户名是root 密码是空
mysql -uroot -p
2.4.退出命令
exit 或 quit
3.系统服务制作
3.1.解决每次切换路径查找文件的缺陷的办法
添加环境变量:
- 拷贝mysqld.exe所在的文件路径
- 将拷贝好的路径添加到环境变量中
3.2.将mysql服务端制作成系统服务(随着计算机的开启而启动,关闭而结束)
-
以管理员身份打开cmd窗口
-
执行系统服务命令:mysqld –install
-
启动服务端
-
方式1:任务管理器→服务→MySQL右键直接点击启动
-
方式2:命令启动
net start mysql
-
相关命令:
services.msc # 查看系统服务命令
net start mysql # 启动mysql服务端
net stop mysql # 关闭mysql服务端
# 移除系统服务
# 1.先确保服务已经关闭
# 2.执行移除命令
mysqld --remove
4.密码相关操作
4.1.修改密码
mysqladmin命令
-
通用方式:直接在cmd中写
mysqladmin -u用户名 -p原密码 password 新密码 # 第一次修改: mysqladmin -u用户名 -p password 123 # 第二次修改: mysqladmin -u用户名 -p123 password 321
-
偏门方式(有些版本无法使用):需要先登录
set password=PASSWORD(新密码);
4.2.忘记密码
直接重装/拷贝对应的文件
先关闭服务端,然后以不需要校验用户身份的方式启动,再修改,最后再安装正常方式启动
# 1.关闭服务端
net stop mysql
# 2.mysql启动参数
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
六、SQL与NoSQL
数据库的服务端支持各种语言充当客户端:MySQL客户端、python代码编写的客户端、java代码编写的客户端
为了能够兼容所有类型的客户端,有两种策略:
- 服务端兼容:不合理,消耗数据库服务端资源
- 制定统一标准:SQL语句、NoSQL语句
SQL语句/NoSQL语句 | 描述 |
---|---|
SQL语句 | 操作关系型数据库的语法 |
NoSQL语句 | 操作非关系型数据库的语法 |
七、数据库重要概念
简单理解,不完全准确
名词 | 简单概念 |
---|---|
库 | 文件夹 |
表 | 文件夹里的文件 |
记录 | 文件里一行行的数据 |
查看库、表、记录的SQL语句
show databases; # 查看所有的数据库
show tables; # 查看所有的表
select * from mysql.user; # 查看user表里的所有记录
八、SQL语句
1.针对库的基本SQL语句
1.1.查看当前所在库名
select database(); # 如果没有切换到指定的库,那么默认是NULL
use 库名;
1.2.增
create database 库名;
1.3.查
show databases;
show create database 库名;
1.4.改
alter database 库名 charset='gbk';
1.5.删
drop database 库名;
2.针对表的基本SQL语句
2.1.增
create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型);
2.2.查
show tables;
show create table 表名;
describe 表名;
desc 表名;
2.3.改
alter table 旧表名 rename 新表名; # 改表名
2.4.删
drop table 表名;
3.针对记录的基本SQL语句
操作记录,肯定得先有库和表
3.1.增
insert into 表名 values(数据,数据);
insert into 表名 values(数据,数据),(数据,数据),(数据,数据);
3.2.查
如果表中字段较多出现了错乱 可以结尾写/G
select * from 表名; # *表示查看所有字段
select 字段1,字段2 from 表名;
3.3.改
update 表名 set 字段名=新数据 where 筛选条件;
3.4.删
delete from 表名; # 删除表中所有的数据
delete from 表名 where 筛选条件 # 按照条件删除数据
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/280197.html