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
		软件说明

image
.
image
.
image
.
image
.
image
.
.
.
.
.
.
.
.

MySQL的启动!!!

cmd建议你使用管理员身份打开服务端!!!
image



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的服务端!!!
image
.
游客模式cmd打开mysql的客户端!!!
image
.
.
在对应的地址栏里面直接敲cmd回车,就会直接进入命令行,并且切到了bin目录下了
image
image
image
.
.
.
.
.

直接使用mysql命令,默认是游客模式,权限和功能都很少!!!


客户端用户名与密码的方式登录方法:
	mysql -u用户名 -p密码

-------------------

客户端,管理员模式,管理员初始默认没有密码, 连续回车即可!!!!!!
	mysql -uroot -p

-------------------

有些同学的电脑在启动服务端的时候就会报错!!!!!!
解决方法:拷贝报错信息 然后百度搜索:mysql启动报错,粘贴错误信息,基本都能找到解决方案!!!
可能会报错的原因是缺一个文件,缺哪个文件,可以直接复制别人电脑里面的该文件,靠到你电脑里面就行了!!或者到网上找看看能把能下到该文件,或者使用360修复一下!!

-------------------

管理员模式登录客户端!!!
image
.
.
.
.
.
.
.
.

系统服务的制作

把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('新密码');    # 修改当前登录用户的密码 注意后面的分号;不能少!!

-----------------------------------------------------

image
.第一种方法改密码!!!这个时候再不输密码就登录不上去了!!!
image
.
登录的话可以在mysql -uroot -p后回车一下,在Enter password:后面输密码,
这个时候密码是密文的形式,比较推荐用
如果比较急,就直接 mysql -uroot -p密码 也行就是这样密码容易被人看到,不安全
image
.管理员改自己密码,在mysql登录进去后,输入命令set password = password('新密码')
也可以改密码!!!
image
.
.
.
.
.
.
.
.
.

忘记了密码!!! 怎么改密码???


2.忘记密码
	方式1:卸载重新装,把现在的mysql的文件全部删掉(先把mysql进程停掉再删文件),
	找到之前安装包,重新解压安装,还需要把之前设置的mysql的服务端随着windows系统
	开机自动启动的操作,将mysqld服务端安装到windows的开机自启服务里面去了,
	要再设置一下,详见上面系统服务的制作里23两步。这样管理员密码就又恢复到系统默认的
	无密码状态,就可以改密码了!!
---------------------------------------------------------


	方式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/
image
.
.
二 解压并创建配置文件,创建数据目录
1 将下载的压缩包解压
2 在bin目录同级下创建一个文件,命名为my.ini
3 在bin目录同级下创建一个文件夹,命名为data
image
.
.
.
.
.
.
.
.

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就是数据库
image
.
information schema 是一个在内存里面的临时数据库,不在硬盘里,所以data文件夹里没有该文件
image
.
.

use mysql 这个指令就是进入到某个库里面去!!!相当于鼠标双击了某个文件夹!!!

表名就是对应文件夹里面的文件名!!! table就是表
image
.
.
.
.
.
.
.

基本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自带的库,万一删掉了,拷贝别人的该库文件也行!!!

.创库
image
.查库
image
.
image
.
.编辑库 alter 改变、修改的意思 改库里面的编码!!!
image
.
.
.

基于表的增删改查 重要!!!!!!

操作表之前需要先确定库
	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 表名;

查库里面的表名称,及查表里面的信息!!!
image
.查表信息!!!
image
.改表的名字!!!
image
.删表!!!
image
.
.
.
.
.
.
.

基于记录的增删改查 重要!!!!!!

要想操作记录首先得有库和表!!!

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;  # 加删选条件,就是删对应的数据!!



. 插入数据,及查询表里的数据
image
.查询表里面的对应列名里面的数据
image
.
.编辑数据!!!
update t222222 set name='jason123' where id=1 ;
如果不写where后面的筛选条件,就直接把字段名name下面所有的数据都改成'jason123'所以必须要加筛选条件!!!加了条件后就变成将表里面id等于1的name字段对应的数据改成'jason123' 想改多个可以这样name='jason123',pwd=666 这样就改id等于1这一行的两个数据了!!!
image
.
.删除数据!!!delete from t222222 where id=2; 把id=2 这一行删掉了!!!
image
.
.
.
.
.
.
.

用CMD关闭进程的命令



cmd 里面输入tasklist  查看对应的进程号

找到需要结束进程的pid编号,输入“taskkill /pid 编号 /f”,按回车键,就可以结束该进程号的进程

我们也可以通过进程的名称来结束进程,输入“taskkill /in 进程名称 /f”,就可以关闭进程了


image
.
image
.
.
.
.
.
.

作业

1.整理今日内容及博客
2.独立完成软件下载与安装
3.熟悉课上所有的操作命令 务必滚瓜烂熟
posted @   tengyifan  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示