MySQL
MySQL
目录
- 数据库的演变
- 数据库的本质
- 数据库的分类
- MySQL数据库
- MySQL的基本使用
- 系统服务制作
- 基本的sql语句
数据库的演变
-
数据存取的演变
演变历程 逐步优化 文本文件 储存的文件路径不一致
存取的数据格式不一致软件开发目录规范 规定了数据文件的大致存储位置
针对数据格式还是没有完全统一数据库服务 统一了存取位置 也统一了数据格式(完全统一) -
数据库软件应用史
类型 数据库功能 单机游戏 不同计算机上的相同程序 数据无法共享
数据库服务全部在本地完成网络游戏 不同计算机上的相同程序 数据可以共享
数据库服务单独在网络架设(远程数据库服务)-
远程数据库服务
数据库集群
- 数据安全性问题
- 服务器负载问题
让多台服务器运行相同的数据库服务
-
数据库的本质
在不同层面数据库的认识
层面 | 认识 | 作用 |
---|---|---|
底层原理 | 数据库指的是专用用于操作数据的进程 | 运行在内存中的代码 |
现实应用 | 数据库指的是拥有操作界面的应用程序 | 用于操作进程的界面 |
数据库的本质就是一款 cs 架构的应用程序
数据库的分类
数据库分为关系型数据库和非关系型数据库
-
关系型数据库
-
数据的组织方式有明确的表结构
id name password
关系型数据库存取数据的方式可以看成是表格
-
表与表之间可以建立数据库层面的关系
用户表 房屋表
只要获取到用户表的一条数据 就可以获取到与之相关的其他表数据
-
关系型数据库的软件
软件名 软件类型 用途 mysql 开源 使用最为广泛 数据库学习必学 PostgreSQL 开源 支持二次开发 MariaDB 开源 与MySQL是同一个作者 用法也极其相似 Oracle 收费 安全性极高 主要用于银行及各大重要机关 sqlite 小型数据库 主要用于本地测试(django框架自带该数据库)
-
-
非关系型数据库
-
数据的组织方式没有明确的表结构 是以k:v键值对的形式组织的
-
数据之间无法直接建立数据库层面的关系
-
非关系型数据库的软件
软件 当前状态 redis 目前最火 使用频率最高的缓存型数据库 mongoDB 稳定型数据库 最像关系型的非关系型 主要用于爬虫、大数据 memcache 已经被redis淘汰
-
数据库的重要概念
类别 | 含义 | 举例 |
---|---|---|
库 | 存放数据的总体单位 | 文件夹 |
表 | 在存放数据的库中分别存放不同的数据类型 | 文件夹里面的文件 |
记录 | 在存放不同数据类型的表中的一个个数据 | 文件里一行行的数据 |
MySQL 简介
在数据库软件中底层操作几乎一致,而MySQL最为普遍更易接受,学了MySQL基本就可以快速上手所有的关系型数据库甚至非关系型数据库
-
MySQL的版本
MySQL的版本 使用情况 5.6X 前几年使用频率最高的版本 5.7X 最近尝试迁移的版本(频率+) 8.0X 最新版 功能很强大 但是线上环境几乎不用(本地自己用非常好用) 虽然版本有区别 但是操作上几乎没有区别 主要体现在底层运作
-
下载与安装
- 访问MySQL的官网
- 点击DOWNLOADS
- 点击GPL
- 点击community server
- 点击archives
- 点击download下周压缩包
下载的压缩包里含有服务端和客户端 支持本地操作
-
MySQL中的主要文件
主要文件 主要功能 bin文件夹 mysqld.exe服务端
mysql.exe客户端data文件夹 存取数据 my-default.ini 默认配置文件 -
MySQL的基本使用
命令 功能 启动服务端 查找mysqld文件位置 mysqld cmd窗口就是服务端 不要关闭 .再次开启新的cmd窗口 mysql 直接回车会以游客模式进入 功能很少 用户名密码登录 mysql -u用户名 -p密码 mysql默认管理员账号 用户名是root 密码是空 退出 exit
quit返回上一层
退出 -
用cmd查看数据库中的数据
命令 作用 show databases; 查看所有的数据库 show tables; 查看所有的表 select * from mysql.user 查看user表里面所有的记录
系统服务制作
-
如何解决每次都需要切换路径查找文件的缺陷
添加环境变量
-
将mysql服务端制作成系统服务(随着计算机的开启而启动 关闭而结束)
-
以管理员身份打开cmd窗口
-
执行系统服务命令
mysqld --install -
启动服务端
-
右键直接点击启动
-
命令启动
net start mysql
-
- 查看开机自启动服务系统
- 查看系统服务的命令
services.msc - 关闭mysql服务端(在管理员身份的cmd窗口下)
net stop mysql - 移除系统服务
1. 先确保服务已经关闭
2. 执行移除命令
mysqld --remove
- 查看系统服务的命令
-
密码相关操作
-
修改密码
mysqladmin命令
通用方式: # 直接在cmd中写
mysqladmin -u用户名 -p原密码 password 新密码
第一次修改
mysqladmin -uroot -p password 123
第二次修改
mysqladmin -uroot -p123 password 321
偏门方式(有些版本无法使用): # 需要先登录
set password=PASSWORD(新密码); -
忘记密码
-
直接重装\拷贝对应文件
先关闭服务端 然后以不需要校验用户身份的方式启动 再修改 最后再安装正常方式启动 -
在cmd中操作
-
net stop mysql
-
mysqld --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
-
-
SQL与NoSQL
-
数据库的服务端支持各种语言充当的客户端
以MySQL为例 : MySQL客户端、python代码编写的客户端、java代码编写的客户端
-
为了能够兼容所有类型的客户端 有两种策略
-
服务端兼容
不合理 消耗数据库服务端资源!!!
-
制定统一标准
SQL语句、NoSQL语句
-
-
SQL与NoSQL
语句 含义 SQL 操作关系型数据库的语法 NoSQL 操作非关系型数据库的语法 SQL有时候也用来表示关系型数据库 NoSQL也用来表示非关系型数据库
SQL语句
-
SQL语句结束与取消
符号 含义 ; SQL语句结束符是分号 \c 取消SQL语句的执行 -
基本的SQL语句
-
针对库中的SQL语句
功能 语句 作用 增 create database 库名; 创建一个库 删 drop database 库名; 删除库 改 alter database 库名 charset='gbk'; 修改字符编码 查 show databases;
show create database 库名;查看所有库的名称
指定查看某个库的信息 -
针对表中的sql语句
查看当前所在的库名: select database();
如果没有切换指定的库 那么默认是NULL
切换或进入库:use 库名;
功能 语句 作用 增 create table 表名(字段名 字段类型,
字段名 字段类型,字段名 字段类型);创建一个表,表里含有字段1和2 删 drop table 表名; 删除表 改 alter table 旧表名 rename 新表名; 修改表名 查 show tables;
show create table 表名;
describe 表名;
desc 表名;查看当前库下所有的表的名称
指定查看某个表的信息
指定查看表的字段信息
describe 表名;的简写 -
针对记录中的SQL语句
前提:要想操作记录,必须得先有库和表。
功能 语句 作用 增 insert into 表名 values(数据,数据);
insert into 表名 values(数据,数据),(数据,数据);增加单条数据
增加多条数据删 delete from 表名;
delete from 表名 where 筛选条件删除表里所有数据
根据条件删除数据改 update 表名 set 字段名=新数据 where 筛选条件; 根据条件筛选数据并修改 查 select * from 表名;
select 字段1,字段2 from 表名;查看表里所有的数据
查看表里指定的字段
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)