MySQL学习
MySQL学习
数据演变史
-
单独的文本文件
较为随意的存放位置,类似于a.txt
-
软件开发目录规范
有了目录规范后,数据存储有了固定的文件夹
-
数据库应用
解决了存放位置和数据格式
数据库应用发展史
- 单机阶段:数据各自保存在各自的计算机上,类似于单机存档,无需互联网
- 多级阶段:数据统一保存与网络之上的服务器中,类似于账号,需要互联网
集群
集群,英文名称为Cluster,通俗地说,集群是这样一种技术:它将多个系统连接到一起,使多台服务器能够像一台机器那样工作或者看起来好像一台机器。采用集群系统通常是为了提高系统的稳定性和网络中心的数据处理能力及服务能力。
服务器集群系统通俗地讲就是把多台服务器通过快速通信链路连接起来,从外部看来,这些服务器就像一台服务器在工作,而对内来说,外面来的负载通过一定的机制动态地分配到这些节点机中去,从而达到超级服务器才有的高性能、高可用。另外,有两种常见的服务器群集类型:手动和自动。
数据库本质
数据库在微观层面上来说:运行在计算机上的进程
数据库在宏观层面上来说:提供给操作者一个简单快捷的操作进程的软件
我们平时在说数据库的时候大部分指的是操作数据库的应用软件
关系型数据
-
有固定的表结构(最主要的特征)
-
并且表与表之间可以建立代码层面的关系
常见数据库名称:MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server
MySQL:关系型数据库的代表 开源免费 使用频率极高
Oracle:安全性极高 但是使用和维护收费 使用成本高
PostgreSQL:支持二次开发(自己嫁接、扩展功能)
MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
sql server:老牌数据库软件 目前主流不用
非关系型数据库
非关系型:
-
没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征)
-
并且表与表之间无法建立代码层面的关系
常见数据库名称:Redis、MongoDB、Memcache
Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
Memcache:被redis取代
SQL与NoSQL
数据库服务端支持很多客户端来使用,类似数据库自带客户端,python代码编写的客户端,java代码编写的客户端
那么如何兼容诸多客户端,实现正常交互
我们通常使用统一沟通标准;SQL语句与NoSQL语句
SQL语句:与关系型数据库交互的语言
NoSQL语句:与非关系型数据库交互的语言
SQL有时候用来标识关系型数据库 有时候表示SQL语句
NoSQL有时候用来标识非关系型数据库 有时候表示NoSQL语句
MySQL简介
-
版本问题
5.6X:使用最为广泛的稳定版本
5.7X: 目前正在逐步过渡使用的版本
8.0X: 最新版本 暂时不投入正常生产环境使用(mac本优先选择该版本,需要修改设置少)
-
下载使用
-
目标结构
bin文件夹
mysqld.exe 服务端
mysql.exe 客户端
data 文件夹存放数据
my-default.ini 文件默认配置文件README文件 说明书
基本使用
win系统
1.以管理员身份运行cmd
切换到bin路径下
D:
cd mysql-5.6.44-winx64\bin
2.启动服务端
mysqld
# 维持cmd窗口不要关闭 重新打开一个新的cmd窗口
3.启动客户端链接服务端
先切换到bin路径下
D:
cd mysql-5.6.44-winx64\bin
然后直接输入mysql即可登录服务端
"""
如果想要移除系统服务
1.先停止服务端
net stop mysql 管理员身份运行cmd
2.移除系统服务
mysqld --remove
"""
mac系统
首先需要在系统偏好设置中打开MySQL
然后输入cd /usr/local/mysql/bin,(未配环境变量情况下)
然后输入./mysql -uroot -p 就可以启动mysql了
修改密码
1.直接输入mysql登录(默认是游客登录,没有太多操作的权限)
2.使用用户名和密码的方式登录
mysql -u用户名 -p密码
管理员账号登录(第一次登录 没有密码 直接回车即可)
mysql -uroot -p 直接回车
输入密码
3.修改管理员密码
方式1:在cmd窗口下直接修改,不需要登录
mysqladmin -u用户名 -p原密码 password 新密码
'''第一次无密码修改 -p后面不写即可'''
方式2:登录状态下修改当前用户密码(先登录)
set password=PASSWORD('新密码'); # 最新版不支持
"""
如何区分当前是否是游客模式
可以执行show database;
结果如果是两条 表示是游客
结果如果是四条及以上 表示是用户
"""
重要概念
库 类似于 文件夹
表 类似于 文件
记录 类似于 文件中一行行数据
"""
show databases; 查看所有的库名称
类似于查看data文件夹内文件夹的名称
"""
SQL语句使用分号作为结束符
操作库的基本SQL语句
查
show databases; # 查看所有的库名称
show create database 库名; # 指定查看某个库的信息
增
create database 库名;
改
alter database 库名 charset='gbk'; # 修改字符编码
删
drop database 库名;
删就没啥演示的必要了
操作表的基本SQL语句
"""
要想操作记录 肯定得先有库和表
"""
# 查
select * from 表名; # 查看表里面所有的数据
select * from 库名.表名; # 查看指定库下面的指定表里面的所有数据
"""
有些表里面的字段太多 展示的时候会错乱 可以考虑逐行展示
select * from 库名.表名\G;
"""
select Host,User from mysql.user # 查看指定字段
# 增
insert into 表名 values(值1,值2); # 单条数据
insert into 表名 values(值1,值2),(值3,值4); # 多条数据
# 改
update 表名 set 字段=新值 where 筛选条件;
update t1 set name='eason' where id=1;
'''将id是1的数据中name字段对应的值改成jasonNB'''
# 删
delete from 表名 where 筛选条件;
delete from t1 where id=3;
'''将id是3的数据删除'''
如果不加筛选条件就是删除所有的数据
今日小结
终于到了数据库学习