python三十九期---mysql数据库简介,下载,服务端启动,系统服务的制作,修改密码相关操作,数据库重要概念,基本SQL基础语句
今日内容概要
- 存取数据的演变史
- 数据库软件应用史
- 数据库的本质
- 数据库的分类
- MySQL简介
- MySQL基本使用
- SQL与NoSQL
- 数据库相关概念
- 常见基本SQL语句
今日内容详细
存取数据的演变史
1.文本文件
文件路径不固定:C:\aaa.txt D:\bbb.txt E:\ccc.txt
数据格式不统一:jason|123 jason$123 jason 123
------
2.软件开发目录规范
规定了数据应该保存在db目录下>>>:路径偏向统一
db/user.txt db/userinfo.txt db/jason.json db/jason
数据格式还是没有得到统一
文本 json格式 对象
--------------------------------------------------------
3.数据库服务(重点)
统一路径,统一操作方式
降低学习成本,提高开发效率
.
.
数据库软件应用史
1.单机游戏
数据存储于各个计算机的本地 无法共享
2.网络游戏
数据存储于网络中 可以共享(数据库服务)
--------------------------------------
数据库服务集群:提升数据的安全性
.
.
数据库的本质
1.站在底层原理的角度
数据库指的是操作数据的进程(就是一堆代码,专门干增删改查的操作!!!)
2.站在实际应用的角度
数据库指的是可视化操作界面(一些软件)
ps:以后不做特殊说明的情况下讲数据库其实指的是数据库软件
----------------------------
数据库软件本质也是CS架构的程序!!!
意味着所有的程序员其实都有资格编写一款数据库软件
.
.
.
.
.
数据库的分类
1.关系型数据库
特征1:拥有固定的表结构(字段名 字段类型)
类似于excel表里面的表第一行的表头 id name pwd 就是字段名
字段类型:就是在字段名下面要写的数据的应该属于的数据类型,要提前固定好!!!
-----------
特征2:数据与数据之间可以建立数据库层面关系,只要拿到其中的一个,就可以拿到与该有关系的所有!!!
用户表数据
豪车表数据
豪宅表数据
-----------
关系型数据库软件:
MySQL、Oracle、MariaDB、PostgreSQL、sql server、sqlite、db2、access
1.MySQL:开源免费,使用最广,性价比贼高。
2.Oracle:收费,使用成本较高但是安全性也最高。
3.PostgreSQL:开源免费,支持二次开发,兼容性极高。
4.MariaDB:跟MySQL是一个作者,开源免费。
5.sqlite:小型数据库,主要用于本地测试。
----------------------------------------
2.非关系型数据库
特征1:没有固定的表结构 数据存储采用K:V键值对的形式
{'name':'jason'}
{'username':'kevin','pwd':123}
特征2:数据之间无法建立数据库层面的关系
但可以自己编写代码,额外的干预数据间的关系,建立代码层面的关系
----------
非关系型数据库软件:
redis、mongoDB、memcache
1.redis:目前最火 使用频率最高的非关系型数据库(缓存数据库)
虽然缓存数据库是基于内存做数据存取,但是拥有持久化的功能,优势是速度快!!!
2.mongoDB:文档型数据库,最像关系型数据库的非关系型数据库!!
主要用在爬虫以及大数据领域
3.memcache:以及被redis淘汰
-------------------------------------------
一般大型的软件都需要关系型数据库与非关系型数据库搭配使用
关系型数据库用来做持久化,数据往硬盘上存
非关系型数据库用来做数据查询,基于内存做数据存取,速度快!
-------------------------------------------
"""
虽然数据库软件有很多 但是操作方式大差不差 学会了一个几乎就可以学会所有
其中以MySQL最为典型
"""
.
.
.
.
.
.
MySQL下载相关!!!
1.版本问题
8.0:最新版
5.7:使用频率较高
5.6:学习推荐使用
ps:站在开发的角度使用哪个版本学习都没有关系
-----------------
2.下载流程
1.访问官网 https://www.mysql.com/
2.点击DOWNLOADS并点击MySQL Community (GPL) Downloads »
3.点击community server 社区服务
4.点击Archives 档案
5.选择对应系统的对应版本下载即可(zip压缩包)
---------------------------------------------
3.主要目录介绍
bin目录
存放启动文件
mysqld.exe(服务端)
mysql.exe(客户端)
---------
data目录
存放核心数据
---------
my-default.ini
默认的配置文件
---------
readme
软件说明
.
.
.
.
.
.
.
.
.
.
.
.
MySQL的启动!!!
cmd建议你使用管理员身份打开服务端!!!
1.管理员模式下打开cmd,切换到mysql的bin目录下先启动mysql的服务端!!!
mysqld
2.保持服务端窗口不关闭!!! 重新打开一个新的cmd窗口(客户端不需要用管理员身份打开cmd)
3.游客模式下打开cmd,切换到mysql的bin目录下启动客户端,输入mysql,直接回车就行了。
直接用mysql命令登录客户端是游客模式!!权限与功能比较少!!
mysql
-------------------------------------------
# 还有一种快捷的启动mysql服务端的方式
打开mysql本地文件,打开到bin目录下 D:\mysql-5.7.28-winx64\bin
然后在上面的地址栏里面,直接敲cmd,就会直接进入命令行,并且切到了bin目录下
然后直接敲mysqld 就行了
管理员身份cmd操作打开mysql的服务端!!!
.
游客模式cmd打开mysql的客户端!!!
.
.
在对应的地址栏里面直接敲cmd回车,就会直接进入命令行,并且切到了bin目录下了
.
.
.
.
.
。
直接使用mysql命令,默认是游客模式,权限和功能都很少!!!
客户端用户名与密码的方式登录方法:
mysql -u用户名 -p密码
-------------------
客户端,管理员模式,管理员初始默认没有密码, 连续回车即可!!!!!!
mysql -uroot -p
-------------------
有些同学的电脑在启动服务端的时候就会报错!!!!!!
解决方法:拷贝报错信息 然后百度搜索:mysql启动报错,粘贴错误信息,基本都能找到解决方案!!!
可能会报错的原因是缺一个文件,缺哪个文件,可以直接复制别人电脑里面的该文件,靠到你电脑里面就行了!!或者到网上找看看能把能下到该文件,或者使用360修复一下!!
-------------------
管理员模式登录客户端!!!
.
.
.
.
.
.
.
.
系统服务的制作
把mysql的服务端做成开机自启动的模式或者说是做成windows系统的守护进程
只要开机了,mysql的服务端自动后台启动,就不需要再用cmd命令了!!!
这样以后想用mysql的客户端的话,就cmd命令输入账号密码就行了,
----------------------------
1.先把bin目录添加到环境变量中
清空之前打开的cmd窗口 一定要把之前用cmd启动的服务端与客户端全部关闭直接叉掉窗口
或者在命令行里面按ctrl+c
----------------------------
2.将mysql添加到系统服务中
1.如何查看系统服务
鼠标点到桌面最下面右键一下,点击任务管理器,点击服务,就能看到所有系统服务了
或者Ctrl+Alt+Del 打开任务管理器,点击服务
装逼的方法>>: windows+R命令栏里面输入services.msc回车,也能看到系统服务
2.必须要以管理员身份打开cmd窗口!!!!!!
mysqld --install 就将mysqld服务端安装到windows的开机自启服务里面去了
----------------------------
3.首次添加不会自动启动,需要人为操作一下,启动mysql的系统服务
在服务里面先刷新一下,找到mysqld
1.鼠标右键点击启动
2.命令行启动,继续在cmd命令栏里面输入命令:
net start mysql
--------------------------------------------
4.如果想卸载重新安装mysql的系统服务
1.先关闭系统服务
net stop mysql
2.移除系统服务
mysqld --remove
这些操作都用管理员身份去打开cmd窗口!!!
.
.
.
.
.
.
密码相关操作 重要!!!
修改密码 在原密码知道的情况下,先登录mysql后,再改密码
方式一在cmd主界面输入命令:mysqladmin -u用户名 -p原密码 password 新密码
方式二在cmd界面已经登录成功的情况下输入命令:set password=password('新密码');
1.管理员账号 修改密码
方式1:mysqladmin 注意要先exit退出mysql,回到cmd终端初始窗口,
mysqladmin -u用户名 -p原密码 password 新密码
如果是一开始管理员没有密码的时候,-p后面可以不写,该方法可以改密码。
如果管理员已经改过密码了,但是现在忘了以前的密码了,那就不能用该方法来改密码了!!!
----------------------------------------------------
方式2:直接修改存储用户数据的表(主要是管理员改其他人的密码的时候要用!!)
----------------------------------------------------
方式3:冷门操作 有些版本可能还不支持 当前登录的是谁,改的就是谁的密码!!!
set password=password('新密码'); # 修改当前登录用户的密码 注意后面的分号;不能少!!
-----------------------------------------------------
.第一种方法改密码!!!这个时候再不输密码就登录不上去了!!!
.
登录的话可以在mysql -uroot -p后回车一下,在Enter password:后面输密码,
这个时候密码是密文的形式,比较推荐用
如果比较急,就直接 mysql -uroot -p密码 也行就是这样密码容易被人看到,不安全
.管理员改自己密码,在mysql登录进去后,输入命令set password = password('新密码')
也可以改密码!!!
.
.
.
.
.
.
.
.
.
忘记了密码!!! 怎么改密码???
2.忘记密码
方式1:卸载重新装,把现在的mysql的文件全部删掉(先把mysql进程停掉再删文件),
找到之前安装包,重新解压安装,还需要把之前设置的mysql的服务端随着windows系统
开机自动启动的操作,将mysqld服务端安装到windows的开机自启服务里面去了,
要再设置一下,详见上面系统服务的制作里2、3两步。这样管理员密码就又恢复到系统默认的
无密码状态,就可以改密码了!!
---------------------------------------------------------
方式2:把data目录删除 拷贝别人的data目录
然后用别人的密码在你的电脑上登录mysql,然后你再改密码!!!
---------------------------------------------------------
方式3:小把戏操作
1.关闭正常的服务端
2.以跳过授权表的方式重启服务端(就可以不校验密码)
3.以管理员身份进入然后修改mysql.user表数据即可
--------------------------------------------------------
还是管理员模式打开cmd
net stop mysql # 先关闭正常的服务端,因为现在服务端已经被我们弄成开机自启了!!
mysqld --skip-grant-table # 执行完这行命令,服务端就不再校验密码了!!!
------------------------------------------------------
再用管理员模式开一个cmd命令,进去mysql客户端!!!
mysql -uroot -p # 这样就不需要输入密码也能登录进去了
update mysql.user set password=password('123') where Host='localhost' and User='root';
修改想要改的人的密码!!!
用户相关的信息都是存在mysql.user这张表里面的!!where往后的代码不写,就将该表里面所有人的密码都改成123了!!
where Host='localhost' and User='root'
只改host字段是'localhost' 并且用户名是root的那条数据!!
---------------------------------------------------------
4.改后密码后,要关闭刚刚打开服务端,然后以正常方式启动即可!!!
ctrl+c 后,再net start mysql
或者直接把服务端叉掉,重新管理员模式打开cmd,再net start mysql
.
.
.
.
三 编辑配置文件my.ini
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ---这里输入你安装的文件路径----
basedir=D:\mysql-8.0.28-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\mysql-8.0.28-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
.
.
.
.
四 安装Mysql,配置服务
# 来到mysql解压后的bin路径下(以管理员身份运行)
# 安装mysql 安装完成后Mysql会有一个随机密码(记住这个密码)
mysqld --initialize --console
# 把mysql创建成系统服务
mysqld --install mysql
# 启动mysql服务
net start mysql
------------------------------
如果使用上述方式无法创建服务可以使用如下方式
# 如果使用上述方式无法创建服务可以使用如下方式
# 创建系统服务
sc create mysql binpath= "D:\mysql-8.0.28-winx64\mysql-8.0.28-winx64\bin\mysqld --defaults-file=D:\mysql-8.0.28-winx64\mysql-8.0.28-winx64\\my.ini" start= auto displayname= "mysql8"
# sc create mysql binpath= "D:\mysql-8.0.28-winx64\mysql-8.0.28-winx64\bin\mysqld"
# 删除系统服务
sc delete mysql
.
.
.
.
五 登录修改密码
# 登录(服务启动才能登录)
mysql -uroot -p
# 输入刚刚上面生成的随机密码
# 修改密码(8.0以后)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'lqz123?';
# 修改密码(5.7)
SET PASSWORD FOR 'root'@'localhost'= "lqz123?";
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'lqz123?' WITH GRANT OPTION;
FLUSH PRIVILEGES;
.
.
六 忘记root密码修改方式
## 1 以系统管理员身份运行cmd.
## 2 查看mysql是否已经启动,如果已经启动,就停止:net stop mysql.
## 3 切换到MySQL安装路径下:D:\mysql-8.0.28-winx64\mysql-8.0.28-winx64\bin;如果已经配了环境变量,可以不用切换了。
## 4 在命令行输入:mysqld -nt --skip-grant-tables
## 5 以管理员身份重新启动一个cmd命令窗口,输入:mysql -uroot -p,Enter进入数据库。
## 6 如果不想改密码,只是想看原来的密码的话,可以在命令行执行这个语句
select host,user,password from mysql.user; # 即可查看到用户和密码
## 7 如果要修改密码的话,在命令行下 依次 执行下面的语句
use mysql
update user set password=password("new_pass") where user="root"; # 'new_pass' 这里改为你要设置的密码
flush privileges;
quit
## 8 重新启动MYSQL,输入密码登录即可!
## 9 mysql -u root -p 输入密码试试吧
.
.
.
.
.
升级mysql版本后,还想保留原版本里面的库数据,操作
升级mysql版本后,还想保留原版本里面的库数据,操作见
https://www.jb51.net/article/212626.htm
最后用新的sql去打开Backup.sql文件的,完成后刷新一下,老的数据库里的文件全过来了!!
--------------------------------------
新的数据库的客户端的运行,及服务端的运行 有问题,参考老刘博客,直接拷过来!!!
https://zhuanlan.zhihu.com/p/571585588
一 下载安装包
地址:https://downloads.mysql.com/archives/community/
.
.
二 解压并创建配置文件,创建数据目录
1 将下载的压缩包解压
2 在bin目录同级下创建一个文件,命名为my.ini
3 在bin目录同级下创建一个文件夹,命名为data
.
.
.
.
.
.
.
.
SQL与NoSQL
要想跟数据库交互就必须使用数据库指定的语言!!!!!!
数据库服务端是可以服务多种类型的客户端
客户端可以是自己开发的 也可以是python代码编写 也可以是java代码编写
---------------------------------------
SQL语句: 操作关系型数据库的语言!!!
--------------------------
NoSQL语句: 操作非关系型数据库的语言!!!
---------------------------------------
"""
SQL有时候也指代关系型数据库
NoSQL有时候也指代非关系型数据库
"""
.
.
.
数据库重要概念
"""
强调:小白阶段为了更加方便的理解 做了以下比喻 本质其实有一点点的区别
"""
库 就相当于是 文件夹
表 就相当于是 文件夹里面的文件
记录 就相当于是 文件夹里面的文件中的一行行数据
----------------------------------------
1.查看所有的库名称
show databases;
------------------------
2.查看所有的表名称
show tables;
------------------------
3.查看所有的记录
select * from mysql.user;
select * from mysql.user\G;
# 如果乱码了,是因为终端不够长导致的。加个\G就会让数据竖向展示,就正常了显示了!!
查看库mysql里面的表user里面的所有记录
查看所有的库名称 database就是数据库
.
information schema 是一个在内存里面的临时数据库,不在硬盘里,所以data文件夹里没有该文件
.
.
use mysql 这个指令就是进入到某个库里面去!!!相当于鼠标双击了某个文件夹!!!
表名就是对应文件夹里面的文件名!!! table就是表
.
.
.
.
.
.
.
基本SQL基础语句 非常重要!!!
将来是需要纯手写sql语句的!!!所以这些基本的sql语句必须滚瓜烂熟!!!!!!
sql语句不会写,数据就操作不了,数据操作不了,肯定写不出来项目!!!!!!
1. sql语句必须以分号;结尾!!! 不以分号结尾,默认你没又输入完!!!
2. sql语句编写错误之后不用担心,可以直接执行报错即可
sql这边的操作不会因为你的sql语句写错,而导致代码运行直接报错的。只需要重新再输入一遍sql语句就好了!!
3. 还可以直接在你写错的sql语句后面加一个\c 就取消该代码的执行了
.
.
.
基于库的增删改查 重要!!!!!!
一般情况下别操作mysql自带的库!!!
要想存数据,自己建一个库!!!
1.创建库
create database 库名;
对应到硬盘上就是创建了一个该库名的文件夹!!!
-----------------------------------------------
2.查看库
show databases; 查看所有的库名称
show create database 库名; 查看指定库信息
-----------------------------------------------
3.编辑库
alter database 库名 charset='utf8';
改一下库里面的编码,把原来的拉丁改为'utf8'
-----------------------------------------------
4.删除库
drop database 库名;
最好别用!!!别删mysql自带的库,万一删掉了,拷贝别人的该库文件也行!!!
.创库
.查库
.
.
.编辑库 alter 改变、修改的意思 改库里面的编码!!!
.
.
.
基于表的增删改查 重要!!!!!!
操作表之前需要先确定库
create database helloword; # 创库!!!
切换要操作库,或者说打开该库名的文件夹,这样以后所有的操作都是在该库里面进行了!!!
use helloword; # 切换到对应库里面去!!!
-----------------------------------
1.创建表
create table 表名(字段名 字段类型,字段名 字段类型);
---
例如:create table t1(id int,name varchar(1));
----------------------------------------------
2.查看表
show tables; # 查看库下所有的表名称!!!
show create table 表名; # 查看指定表信息,查看的信息更多一点!!
describe 表名; # 查看表结构 该方法能够非常快速的列出表里面都有哪些字段,字段分别是上面类型!!!通过看字段的名字和类型,大致能猜到这个表大致是用来干嘛的!!!
# 该命令以后用的较多!!!
desc 表名; # 上面命令的简写
ps:如果想跨库查看其他表结构, 只需要在表名前加库名即可
desc mysql.user; # 查看库mysql里面表user的表结构!!!
------------------------------------------------
3.编辑表
alter table 表名 rename 新表名;
4.删除表
drop table 表名;
查库里面的表名称,及查表里面的信息!!!
.查表信息!!!
.改表的名字!!!
.删表!!!
.
.
.
.
.
.
.
基于记录的增删改查 重要!!!!!!
要想操作记录首先得有库和表!!!
1.插入数据
insert into 表名 values(数据值1,数据值2);
# 有几个字段按照字段得位置一一对应得传就行了
----------------------------------------------
2.查询表里面的数据
select * from 表名; 查询表中所有的数据!!!!!!
* 的意思就是所有,如果不想看表里面的所有数据,可以就看指定的字段名(或者叫列的名字)下面的数据例如:
select name,pwd from t222222; # 这样就是只看字段名(列名)name下面对应的数据了!!!可以同时看多个列名下的数据!!!
----------------------------------------------
3.编辑数据(更新数据)
update 表名 set 字段名=新数据 where 筛选条件;
----------------------------------------------
----------------------------------------------
4.删除数据
delete from 表名; # 注意不加条件,会删除表里面所有的数据!!!
delete from 表名 where id=2; # 加删选条件,就是删对应的数据!!
. 插入数据,及查询表里的数据
.查询表里面的对应列名里面的数据
.
.编辑数据!!!
update t222222 set name='jason123' where id=1 ;
如果不写where后面的筛选条件,就直接把字段名name下面所有的数据都改成'jason123'所以必须要加筛选条件!!!加了条件后就变成将表里面id等于1的name字段对应的数据改成'jason123' 想改多个可以这样name='jason123',pwd=666 这样就改id等于1这一行的两个数据了!!!
.
.删除数据!!!delete from t222222 where id=2; 把id=2 这一行删掉了!!!
.
.
.
.
.
.
.
用CMD关闭进程的命令
cmd 里面输入tasklist 查看对应的进程号
找到需要结束进程的pid编号,输入“taskkill /pid 编号 /f”,按回车键,就可以结束该进程号的进程
我们也可以通过进程的名称来结束进程,输入“taskkill /in 进程名称 /f”,就可以关闭进程了
.
.
.
.
.
.
.
作业
1.整理今日内容及博客
2.独立完成软件下载与安装
3.熟悉课上所有的操作命令 务必滚瓜烂熟
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY