MySQL数据库
内容概要
- 数据演变史
- 数据库本质
- 数据库分类
- SQL与NoSQL
- MySQL下载与安装
- 系统服务
- 重要概念
- 基本SQL语句
数据演变史
| |
| 没有固定的存放位置:C:\a.txt D:\aaa\c.txt F:\bbb\b.txt |
| 没有固定的数据格式:jason|123 tony$123 kevin~123 |
| '''程序彼此无法兼容 没有统一的标准''' |
| |
| |
| 按照文件功能的不同规定了相应的位置 |
| '''文件查找变得统一 但是没有解决格式问题(核心问题)''' |
| |
| |
| 解决了存放位置和数据格式问题 |
| '''将数据处理部分统一了起来''' |
数据库应用发展史
| |
| 数据各自保存在各自的计算机上 无法实现远程共享 |
| '''无需互联网''' |
| |
| |
| 数据统一基于网络保存到某个固定的服务器上 实现数据共享 |
| '''必须要有互联网''' |
| |
| """ |
| 集群 |
| 如果所有的数据全部存储到一台远程服务器上 |
| 那么数据的安全性降低 服务器的压力上升 |
| 所以增加远程服务器的数量 数据同步保存 任务均匀分担 |
| 具有相同功能的多个服务器组合到一起 就可以称之为是集群 |
| """ |
数据库本质
| """ |
| 数据库在微观层面上来说 |
| 运行在计算机上专门处理数据的进程(程序) |
| eg:内存中的typora代码 |
| 数据库在宏观层面上来说 |
| 提供给操作者一个简单快捷的操作进程的软件 |
| eg:屏幕上typora界面 |
| 我们平时在说数据库的时候大部分指的是操作数据库的应用软件 |
| """ |
| |
| 既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件 |
| 在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件 |
数据库分类
| """目前市面上有很多数据库软件 大致可以分为两类""" |
| 1.关系型数据库 |
| 关系型: |
| 1.有固定的表结构(最主要的特征) |
| eg:有固定字段的excel表格 |
| id name gender |
| 2.并且表与表之间可以建立代码层面的关系 |
| eg:用户表与房屋表 |
| 用户买房 那么用户数据和房屋数据就应该有关系 |
| 常见数据库名称: |
| MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server |
| MySQL:关系型数据库的代表 开源免费 使用频率极高 |
| Oracle:安全性极高 但是使用和维护收费 使用成本高 |
| PostgreSQL:支持二次开发(自己嫁接、扩展功能) |
| MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品 |
| sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用 |
| sql server:老牌数据库软件 目前主流不用 |
| |
| 2.非关系型数据库 |
| 非关系型: |
| 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简介
| |
| 5.6X:使用最为广泛的稳定版本 |
| 5.7X:目前正在逐步过渡使用的版本 |
| 8.0X:最新版本 暂时不投入正常生产环境使用(其实很好用!!!) |
| """ |
| 版本问题不会影响我们的学习 因为SQL语句是一样的 |
| 只不过底层有变化 目前不用考虑 |
| """ |
| |
| |
| 官网:https://www.mysql.com/ |
| 1.点击步骤: |
| downloads |
| (GPL) Downloads |
| MySQL Community Server |
| Archives |
| 选择版本和系统(以5.6.44为例) |
| 点击下载对应的zip压缩包即可 |
| |
| "mac和linux参考下列博客" |
| linux:https://www.cnblogs.com/Dominic-Ji/p/15124625.html |
| mac:https://www.cnblogs.com/Dominic-Ji/articles/15402755.html |
| 2.解压处理 |
| 建议压缩到D或者E、F盘的根目录方便查找 |
| mysql-5.6.44-winx64.zip >>> mysql-5.6.44-winx64 |
| |
| |
| bin文件夹 |
| mysqld.exe 服务端 |
| mysql.exe 客户端 |
| '''学习阶段服务端在本地启动即可''' |
| data文件夹 |
| 存放数据 |
| my-default.ini文件 |
| 默认配置文件 |
| README文件 |
| 说明书 |

基本使用
| 必须要先启动服务端 再启动客户端链接 |
| 以D:\mysql-5.6.44-winx64为例 |
| |
| 1.以管理员身份运行cmd |
| 切换到bin路径下 |
| D: 回车键(切换D盘) |
| cd mysql-5.6.44-winx64\bin |
| 2.启动服务端 |
| mysqld |
| |
| 3.启动客户端链接服务端 |
| 先切换到bin路径下 |
| D: 回车键(切换D盘) |
| cd mysql-5.6.44-winx64\bin |
| 然后直接输入mysql即可登录服务端 |
| '''不带用户名和密码 是游客模式(只能体验基本功能)''' |
| |
| """ |
| 启动服务端的时候 有的电脑可能会报错 |
| 解决策略 |
| 拷贝报错信息 百度搜索 |
| mysql启动报错'错误代码' |
| """ |
系统服务
| 1.我们不想切换路径 直接输入命令 |
| 2.我们不想自己启动服务端 设置成开机自启动(消耗的资源很少 不要担心) |
| |
| |
| 将D:\mysql-5.6.44-winx64\bin添加到系统环境变量 |
| "之后在cmd直接输入mysql即可启动" |
| |
| 1.先确保之前测试的服务端关闭(直接点击关闭即可) |
| 2.重新以管理员的身份打开cmd窗口 |
| mysqld --install |
| |
| 3.初次启动需要人为干预 |
| net start mysql |
| 4.关闭所有的cmd 随意打开一个cmd窗口 |
| 输入mysql即可链接到服务端 |
| |
| """ |
| 如果想要移除系统服务 |
| 1.先停止服务端 |
| net stop mysql 管理员身份运行cmd |
| 2.移除系统服务 |
| mysqld --remove |
| """ |
修改密码
| 1.直接输入mysql登录 |
| 默认是游客模式 没有太多操作的权限 |
| 2.使用用户名和密码的方式登录 |
| |
| 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语句使用分号作为结束符 |

操作库的基本SQL语句
| |
| show databases; |
| show create database 库名; |
| |
| |
| create database 库名; |
| |
| |
| alter database 库名 charset='gbk'; |
| |
| |
| drop database 库名; |
| '''以后进入公司 每个账号都会有权限管理 不可能轻易做到''' |

操作表的基本SQL语句
| """ |
| 表是存放于库下面的 所以操作表之前 应该先确定库 |
| 如何查看当前在哪个库下 |
| select database(); |
| 结果如果是NULL表示当前没有切换到任何库下 |
| 如何切换到指定库下 |
| use 库名; |
| |
| 强调我们在操作库、表、记录的时候 MySQL默认自带的都不要动 |
| """ |
| create database 库名; |
| use 库名; |
| |
| show tables; |
| show crate table 表名; |
| describe 表名; |
| |
| |
| create table 表名( |
| 字段名称1 字段类型1, |
| 字段名称2 字段类型2 |
| ); |
| |
| |
| alter table 表名 rename 新表名; |
| |
| |
| drop table 表名; |



操作记录的基本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='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 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)