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