mysql
数据库演变史
# 1.单独的文本文件
没有固定的存放位置:C:\a.txt D\aaa\c.txt
没有固定的数据格式;jason|123|$nnnn?hello00
'''程序彼此无法兼容没有统一的标准'''
# 2.软件开发目录规范
按照文件的不同规定了相应的位置
'''文件查找变得统一 但是没有解决格式问题(核心问题)'''
# 3.数据库应用
解决了存放位置和数据格式问题
'''将数据处理部分统一了起来'''
数据库应用发展史
# 1.单机游戏阶段数据各自保存在各自计算机上 无法实现远程共享
'''无需互联网'''
# 2.多机阶段
数据统一基于网络保存到某个固定的服务器上 实现数据共享
'''必须要有互联网'''
'''
集群
如果所有的数据全部存储到一台远程服务器上,那么数据的安全性降低 服务器压力上升
所以增加远程服务器数量 数据同步保存 任务均匀分担,据偶相同功能的多个服务器组合到一起 就可以称之为集群
'''
数据库本质
'''
数据库在微观层面上来说
运行在计算机上抓门处理数据的进程
eg:内存中的typroa代码
数据库在宏观层面上来说
提供给操作者一个简单快捷的操作进程的软件
eg:频幕上的typroa界面
而我们平时在说数据库的时候大部分值得是操作数据库的应用软件
'''
# 数据库软件的本质其实也是一款cs架构的软件
既然数据库本质是一款cs架构的软件 也就意味着我们每个会网络编程的程序议案理论上来说都可以编写出一款数据库软件
在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件
数据库分类
'''目前市面上很多数据库软件 大致可以分为两类'''
# 关系型数据库
1.有固定的表结构(最主要特征)
eg:有固定字段的excel表格
id name gender
2.表与表之间可以建立 代码层面的关系
eg:用户表与房屋表
用户买房 那么用户数据和房屋数据就应该有关系常见数据库名称
Mysql、Oracle、PostgreSQL、MariaDB、sqlite、sql、server
MySQL:关系型数据库的代表 开源免费 使用频率极高
Oracle:安全性极高 但是使用和维护收费 使用成本高
PostgreSQL:支持二次开发(自己嫁接、拓展功能)
MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
sqlite:小型数据库 携带方便单功能较少 主要用于本地测试使用
sql server:老牌数据库软件目前主流不用
# 非关系型数据库
非关系型:
1.没有固定的表结构 数据库存取采用K:V键值对的形式(随主要特征)
{'name':'jason'}
{'username':'jason','pwd':123}
2.表与表之间无法建立代码层面的关系
常见数据库名称:
Redis、MongoDB、Memcache
Redis:目前最火的非关系型数据空 数据类型丰富 功能强大
MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
Memcache:被redis取代了
'''
疑问:诸多数据库软件如何学习?
两大类数据库的操作方式几乎一致 学完一个其他都很容易上手
eg:学习了MySQL 那么学习其他关系型数据库很简单
学习了redis那么学习其他非关系型数据库也很简单
'''
SQL与NoSQL
'''
数据库服务端支持很多客户端来链接使用
数据库自带的客户端 python代码编写 Java编写的
'''
如何让服务端兼容诸多客户端 实现正常交互
方式1:让服务端识别并自动切换对应语言
方式2:统一沟通标准
相较之下方式2更加合理>>>:SQL语句与NoSQL语句
SQL语句
与关系型数据库交互的语言
NoSQL语句
与非关系型数据交互的语言
'''
SQL有时候用来表示关系型数据库 有时候表示SQL语句
NoSQL有时候用来表示非关系型数据库 有时候表示NoSQL语句
'''
MySQL简介
# 1.版本问题
5.6X:使用最为广泛的稳定版本
5.7X:目前正在逐步过渡使用的版本
8.0X:最新版本 暂时不投入正常生产环境使用(其实很好用)
'''版本问题不会影响学习使用,因为SQL语句是相同的 知识底层发生变化 目前暂不考虑'''
# 下载使用
官网:https://www.mysql.com/
1.点击步骤:
downloads
(GPL) Downloads
MySQL Community Server
Archives
选择版本和系统(以5.6.44为例)
点击下载对应的zip压缩包即可
# 目录结构
bin文件夹:
mysqld.exe 服务端
mysql.exe 客户端
data文件夹:
date存放数据
my-default.ini文件
默认配置文件
README文件
说明书
基本使用
必须先要启动服务端 在启动客户端链接
以 D:\mysql-5.6.44-winx64为例
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即可登录服务端
'''不带用户名和密码 是游客模式(只能使用基本功能)'''
'''
启动服务端的时候 有些电脑可能会报错
解决策略
拷贝报错信息 百度搜索
mysql启动报错'错误代码'
'''
系统服务
1.不想切换路径 直接输入命令
2.服务端 开机自动启动(消耗资源很少)
# 针对第一个点的解决措施是添加环境变量
将D:\mysql-5.6.44-winx64\bin添加到系统环境变量
# 针对第二个点的解决措施是编写固定的指令
1.确保服务端关闭
2.重新以管理员的身份打开cmd窗口
执行mysqld --install
3.初次启动需要认为干预
net start mysql
4.重启cmd输入mysql即可链接服务端
'''
移除系统服务
1.停止服务端
net stop mysql
2.移除系统服务
mysqld --remove
'''
修改密码
1. 直接输入mysql登录
默认是游客模式 没有太多操作的权限
2.使用用户名和密码的方式登录
# 学习阶段不用考虑用户管理 直接使用root用户(管理员账号)
mysql -u用户名 -p密码
# 管理员站好登录(第一次登录 没有密码 直接回车即可)
mysql -uroot -p 直接回车
提示输入密码
3.修改管理员密码
方式1:在cmd窗口下直接修改(不要登录进去)
mysqladmin -u用户名 -p原密码 password 新密码
'''第一次无密码修改 -p后面不写即可'''
mysqladmin -uroot -padmin123 password jason123
方式2:登录状态下修改当前用户密码(先登录)
set password=PASSWORD('新密码'); # 最新版不支持
'''
如何区分当前是否是游客模式
可以执行show database;
结果如果是两条 表示游客
结果是四条及以上 表示用户
'''
重要概念
库 文件夹
表 文件
记录 文件中的数据
'''
show databases; 查看所以的库名称
类似于查看data内文件夹的名称
'''
操作库的基本SQL语句
# 查
show databases; # 查看所有的库名称
show create database 库名; # 指定查看某个库的信息
# 增
create database 库名;
# 改
alter database 库名 charset='gbk'; # 修改字符编码
# 删
drop database 库名;
'''以后进入公司 每个账号都会有权限管理 不可能轻易做到'''
查找表的语句
"""
表是存放于库下面的 所以操作表之前 应该先确定库
如何查看当前在哪个库下
select database();
结果如果是NULL表示当前没有切换到任何库下
如何切换到指定库下
use 库名;
强调我们在操作库、表、记录的时候 MySQL默认自带的都不要动
"""
create database 库名;
use 库名;
# 查
show tables; # 查看当前库下所有的表名称
show crate table 表名; # 指定查看某个表的信息
describe 表名; # 指定查看表的字段信息 简写 desc 表名;
# 增
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2
);
# 改
alter table 表名 rename 新表名; # 修改表名
# 删
drop table 表名;
操作记录的语句
"""
要想操作记录 肯定得先有库和表
"""
# 查
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='jasonNB' where id=1;
'''将id是1的数据中name字段对应的值改成jasonNB'''
# 删
delete from 表名 where 筛选条件;
delete from t1 where id=3;
'''将id是3的数据删除'''
如果不加筛选条件就是删除所有的数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人