MySQL 简介
数据存取演变史
-
文本文件
基于文本文件储存数据,通过代码写入文本文件永久保存数据。
文本文件没有统一的标准格式,文件路径及文件数据可以是各式各样的
写的代码基于文本文件储存数据,会导致程序的兼容性非常差。
-
软件开发目录规范
软件开发目录规范,规定了数据文件存储位置,列如:db文件夹
虽然文件路径做到了统一,但是存储的数据格式没有做到统一。
-
数据库服务
数据库应用规定了统一存取的位置,也统一了存取数据的格式。
让代码基于数据库应用写的程序兼容性更强。
数据库软件应用史
-
单级游戏
在单级游戏阶段,不同计算机上的相同程序数据无法共享。
只能在本机上使用,数据库服务全部在本地完成。
-
网络游戏
网络游戏阶段,不同计算机上的相同程序数据可以共享。
基于网络通信数据库服务单独在网络架设(远程数据库服务)
单个服务器运行远程数据库服务,存在数据的安全性问题,服务器的负载问题。
为了避免这种问题让多个服务器运行相同的数据库服务,被称之为数据库集群。
数据库的本质
数据库三个字在不同角度下描述的意思不一样。
-
站在底层原理的角度
数据库指专门用于操作数据的进程,运行在内存中的代码
-
站在现实应用的角度
数据库指的是拥有操作界面的应用程序,用于操作进程的界面
在没有做特殊说明的前提下数据库一般指的就是一款存储数据的应用软件
也就是一款c/s架构的应用程序,言外之意就是理论上只要是能力足够的程序员都可以编写
目前市面上已经有很多数据库软件。如MySQL、PostgreSQL、MariaDB....
数据库的分类
其中常见的数据库软件也可以分为俩种类型。
-
关系型数据库
关系型数据库数据的组织方式有明确的表结构,存取数据的方式可以看成是表格。
表与表之间可以建立数据库层面的关系,只要获取到用户表的一条数据就可以获取都与之相关的其他表数据。
关系型数据库有:MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、sql、server
MySQL:目前是一块开源软件,使用最为广泛。学习数据库中深受喜爱的一款数据库软件
PostgreSQL:目前是一款开源软件,支持二次开发。
MariaDB:目前是一款开源软件,与MySQL是同一个作者用法也及其相似。
Oracle:是一款收费的软件,安全性较高,主要用于银行及各大重要机关。
sqlite:小型数据库,主要用于本地测试(django框架都自带该数据库)
-
非关系型数据库
数据的组织方式没有明确的表结构,是以KV键值对的形式组织的。
数据之间无法直接建立数据库层面的关系
redis、mongoDB、memcache
redis:目前最火使用频率最高的缓存型数据库
mongoDB:稳定型数据库,最像关系型的非关系型数据库,主要用于爬虫、大数据
memcache:已经被redis淘汰。
MySQL简介
MySQL版本问题
5.6X:前几年使用频率最高的版本
5.7X:最近尝试迁移的版本
8.0X:最新版 功能很强大 但是线上环境几乎不用。
虽然版本有区别,但是操作上几乎美誉区别主要体现在底层运作。
系统服务制作
-
如何解决每次都需要切换路径查找文件的缺陷
将下载好的MySQL添加到电脑系统的环境变量。
-
将MySQL服务端制作成电脑的系统服务随着计算机的开机而启动,关闭而结束
首先以管理员身份打开CMD命令窗口,输入:mysqld --install 执行该命令
然后通过手动启动服务端或者命令窗口内输入:net start mysql启动服务端
查看系统服务可以数据:services.msc
关闭mysql服务端:net stop mysql
移除系统服务: 先确保服务是否关闭,关闭先后执行移除命名>>> mysqld --remove
密码相关操作
-
修改密码
CMD命令窗口内输入 mysqladmin关键字,它是一种管理员脚本工具作用于修改想要修改的用户密码
第一次修改:mysql初始密码默认是空 只需输入 mysql -uroot -p password 新密码即可。
第二次修改: mysql -uroot -p 旧密码 password 新密码
偏门方式:有些版本可能无法使用,修改密码之前需要先登录后输入命令 set password=PASSWORD(’新密码‘);
-
忘记密码
简单粗暴的方式:直接重装或者拷贝对应文件账户信息一般放置在mysql>>>data>>>user文件内,拷贝别人账户文件。
先关闭服务端,然后以不需要验证用户身份的方式启动该再来修改最后再安装正常启动方式
- net stop mysql 关闭服务端
- mysqld --skip -grant -tables 跳过授权表的方式启动
- mysql -uroot -p 不需要密码只要是个账户都可以进入
- undate mysql.user set password=password(新密码)where Host='localhost' and User='root'
- net stop mysql
- net start mysql
SQL与NoSQL
数据库的服务端支持各种语言充当的服务端
以MySQL服务端为例
MySQL服务端、python代码编写的客户端、Java代码编写的客户端
为了能够兼容所有类型的客户端有俩种策略
服务端兼容:消耗数据库服务端的资源,不合理
制定统一标准:SQL语句、NoSQL语句。
SQL语句:操作关系型数据库的一种语法。
NoSQL语句:操作非关系型数据库的一种语法
数据库的重要概念
下述概念只是为了能够快速的理解而定义的并不是完全准确。
库>>>>>>>>>文件夹
表>>>>>>>>>文件夹里面的文件
记录>>>>>>>>文件里一行行的数据
show databases ; 查看所有的数据库
show tables;查看所有的表
select * from 库名.表名 查看某个库下某个表里面所有的记录。
补充
- SQL语句结束符号是分号,输入结束后需要在最后填写;作为结束标志。
- 取消SQL语句的执行,当输入SQL语句后不想让这段语句执行则在最后面输入\c来取消执行。
针对库的基本SQL语句
库可以简单的理解成是一个文件夹。
-
增加库
增加一个库:create database 库名;
-
删除库
删除一个库:drop database 库名;
-
改
修改库中使用的编码:alter database 库名 charset = 'gbk';
-
查
查看当前所有的库:show databases;
查看指定的库:show create database 库名;
针对表的基本SQL语句
表可以简单的理解为存在库中的文件。
查看当前所在的库的名字:select database();
如果没有在库中则默认是NULL,也就是空的意思,可以使用use 库名;切换到指定的库。
-
增加表
增加表里面字段名至少要一个及其以上。
create table 表名(字段名,字段类型......);
-
删除表
删除指定的表
drop table 表名;
-
修改表名
修改指定表的名称
alter table 旧表名 rename 新表名;
-
查看表
查看当前库下所有的表:show tables;
查看当前库下指定表:show create table 表名;
查看当前库下指定表:describe 表名;
查看当前库下指定表:desc 表名;
-
针对字段的操作
默认增加字段到表的尾部:alter table 表名 add 字段名 字段类型(宽度) 约束条件;
默认增加字段到表的开头:alter table 表名 add 字段名 字段类型(宽度) 约束条件 alter;
指定增加字段到表的某处:alter table 表名 add 字段名 字段类型(宽度) 约束条件 first 字段名;
删除字段:alter table 表名 drop 字段名;
修改字段类型:alter table 表名 modify 字段名 字段类型(宽度)约束条件;
修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型(宽度)约束条件;
针对记录的基本SQL语句
记录可以简单的理解为存在于文件中的数据。
-
增加记录
insert into 表名 values(数据);
insert into 表名 values (数据),(数据);
-
删除记录
删除表中所有的数据:delete from 表名;
删除表中指定数据:delete from 表名 where 筛选条件(字段名=需要删除的数据);
-
修改记录
修改表中指定数据:update 表名 set 字段名 = 新数据 where 筛选条件(字段名=需要修改的数据);
-
查看记录
查看表中所有数据: select * from 表名; * 表示所有的意思
查看表中指定字段的数据:select 字段1,字段2 from 表名;
如果在cmd窗口下查看的表中显示数据错乱可以在查看格式的结尾加上\G来解决错乱
列如: select * from db1\G; 或 select name ,pwd from db1\G; name和pwd是字段名。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现