搜索

python三十九期---mysql数据库 - tengyifan -


发布时间: 2022-11-24 17:53:01    浏览次数:64 次

今日内容概要

  • 存取数据的演变史
  • 数据库软件应用史
  • 数据库的本质
  • 数据库的分类
  • 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.访问官网
	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建议你使用管理员身份打开服务端!!!
image

1.管理员模式下打开cmd,切换到mysql的bin目录下先启动mysql的服务端!!!
	mysqld
2.保持服务端窗口不关闭!!! 重新打开一个新的cmd窗口(客户端不需要用管理员身份打开cmd)
3.游客模式下打开cmd,切换到mysql的bin目录下启动客户端,输入mysql,直接回车就行了。
直接用mysql命令登录客户端是游客模式!!权限与功能比较少!!
	mysql

管理员身份cmd操作打开mysql的服务端!!!
image
.
游客模式cmd打开mysql的客户端!!!
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

.
.
.

密码相关操作 重要!!!

修改密码 在原密码知道的情况下,先登录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的开机自启服务里面去了,要再设置一下,详见上面系统服务的制作里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

.
.
.
.

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
.
.
.

作业

1.整理今日内容及博客
2.独立完成软件下载与安装
3.熟悉课上所有的操作命令 务必滚瓜烂熟
免责声明 python三十九期---mysql数据库 - tengyifan - ,资源类别:文本, 浏览次数:64 次, 文件大小:-- , 由本站蜘蛛搜索收录2022-11-24 05:53:01。此页面由程序自动采集,只作交流和学习使用,本站不储存任何资源文件,如有侵权内容请联系我们举报删除, 感谢您对本站的支持。 原文链接:https://www.cnblogs.com/tengyifan888/p/16915551.html