python基础入门之MySQL
目录
存取数据的演变史
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/json
数据格式还是没有得到统一
文本 json格式 对象
3.数据库服务
统一路径,统一操作方式
降低学习成本,提高开发效率
数据库软件应用史
1.单机模式
在不同计算机上的相同程序,数据是无法共享,因为数据库服务全部在本地完成。
2.网络游戏
在不同计算机上的相同程序,数据可以共享,因为数据库服务单独在网络架构(远程数据库服务)
"""
数据库服务集群:提升数据的安全性
"""
ps:远程数据库服务含有数据库集群,数据库集群可以解决数据安全问题、服务器负载问题,让多台服务器运行相同的数据库服务。
数据库的本质
1.站在底层原理的角度
数据库指的是操作数据的进程(一堆代码)
2.站在实际应用的角度
数据库指的是可视化操作界面(一些软件)
ps:以后不做特殊说明的情况下讲数据库其实指的是数据库软件
3.数据库软件本质也是CS架构的程序
意味着所有的程序员其实都有资格编写一款数据库软件
数据库的分类
- 数据库分为关系型数据库和非关系数据库
#关系型数据库
1.数据的组织方式有明确的表结构
eg: id name password
ps:关系型数据库存取数据的方式可以看成是表格
2.表与表之间可以建立数据层面上的关系
eg:用户表 房屋表
ps:只要获取到某一表的一条数据,就可以获取到与之相关的其他表数据
3.常用的关系型数据库:MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、SQL、server
MySQL:是开源的,使用最为广泛的,数据库学习必须要学习的
PostgreSQL:是开源的,支持二次开发的
MariaDB:是开源的,与MySQL是同一作者,用法也极其相似
Oracle:收费,安全性极高,主要用于银行及各大重要机关
sqlite:小型数据库,主要用于本地测试(Django框架自带该数据库)
#非关系型数据库
1.数据的组织方式没有明确的表结构,是以K:V键值对的形式组织的
eg:{'name':'jason','pwd':123}
{'username':'liz'}
2.数据之间无法直接建立数据库层面的关系
3.常用的非关系数据库:redis、MongoDB、memcache
redis:目前最火的,使用频率最高的缓存型数据库
MongoDB:稳定型数据库,最像关系型的非关系型,主要用于爬虫、大数据
memcache:已经被redis淘汰
MySQL简介
-
MySQL版本问题
5.6x是前几年使用频率最高的版本;
5.7x是最近尝试迁移的版本(频率+);
8.0x是最新版,功能强大,但是线上环境几乎不用(本地自己使用好用)
MySQL的下载与安装
1.访问官网
https://www.mysql.com/
2、点击DOWNLOADS
3.点击MySQL Community(GPL) Downloads
4.点击MySQL Community Server

5.点击Archives(选择版本)

6.点击Download
7.解压
将下好的压缩包解压到D盘根目录(下载的压缩包里面有服务端和客户端,支持本地操作)
MySQL主要文件介绍
1.bin文件夹
里面有mysqld.exe是服务端启动程序;mysql.exe是客户端启动程序
2.data文件夹
data文件夹是用来存取数据
3.my-default.ini
my-default.ini是默认的配置文件
4.readme
软件说明
MySQL基本使用
cmd建议使用管理员身份打开
1.先启动服务端(需要知道mysqld文件位置)
在cmd命令提示符窗口中启动服务端,可能会报错(百度解决);启动之后不要关 闭,此时cmd窗口就是服务端
2.再次进入cmd窗口,进入mysql的文件路路径
直接mysql回车,会以游客的模式进入,功能很少
3.用户名密码登陆
输入:mysql-u用户名/-p密码;
那mysql默认管理员账号:用户名是root,密码是空
4.退出
直接输入exit或者quit
系统服务的制作
1.如何解决每次都需要切换路径查找文件的缺陷
将bin文件夹路径添加到添加环境变量(属性、高级系统设置、环境变量、系统变量里的Path、编辑、新建、输入bin文件夹路径)
2.将mysql服务端制作成系统服务(随着计算机的开启而启动,关闭而结束)
2.1 以管理员身份打开cmd窗口
2.2 执行系统服务命令mysqld --install
ps:可通过查看系统服务的命令(services.msc)有没有MySQL自动运行
2.3 启动服务端
方式一:右键直接点击启动
方式二:命令启动:直接输入:net start mysql
3.补充知识:
3.1 查看系统服务的命令:services.msc
3.2 关闭mysql服务端:net stop mysql
3.3 移除系统服务
3.3.1 先确保服务已经关闭
3.3.2 执行移除命令:mysql --remove
密码相关操作
1.修改密码
方式1:mysqladmin
mysqladmin -u用户名 -p原密码 password 新密码
方式2:直接修改存储用户数据的表
方式3:冷门操作 有些版本可能还不支持
set password=password('新密码') # 修改当前登录用户的密码
2.忘记密码
方式1:卸载重新装
方式2:把data目录删除 拷贝同桌的目录
方式3:小把戏操作
1.关闭正常的服务端
2.以跳过授权表的方式重启服务端(不校验密码)
3.以管理员身份进入然后修改mysql.user表数据即可
net stop mysql
mysqld --skip-grant-table
mysql -uroot -p
update mysql.user set password=password('123') where Host='localhost' and User='root';
4.关闭服务端 然后以正常方式启动即可
SQL与NoSQL
1.数据库的服务端支持各种语言充当客户端
eg:以MySQL服务端为例,可以有MySQL客户端python代码编写的客户端,java代码编写的客户端,为了能够兼容所有类型的客户端,有两种策略:
1.1 服务端兼容:是不合理的,消耗数据库服务daunt资源
1.2指定统一标准:SQL语句、Nosql语句
2.SQL与NoSQL
SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思是操作非关系型数据库的语法
ps:SQL有时候也用来表示关系型数据库,NoSQL也用来表示非关系型数据库
数据库重要概念
1.库,表示文件夹,用(show databases)查看所有数据库
2.表,表示文件夹里面的文件,用(show tables)查看所有的表
3.记录,表示文件里一行行的数据,用(select*from mysql.表名)来查看表里面所有的记录
4.SQL语句结束符是分号( ;)
5.取消SQL语句的执行 (\c)
6.查看当前所在的库名:select database();
如果没有切换指定的库,那么默认就是none
7.切换库:use 库名;
基本SQL语句
1.sql语句必须以分号结尾
2.sql语句编写错误之后不用担心 可以直接执行报错即可
'''基于库的增删改查'''
1.创建库
create database 库名;
2.查看库
show databases; #查看所有的库名称
show create database 库名; #查看指定库信息
3.编辑库
alter database 库名 charset='utf8';
4.删除库
drop database 库名;
'''基于表的增删改查'''
操作表之前需要先确定库
create database db1;
切换操作库
use db1;
1.创建表
create table 表名(字段名 字段类型,字段名 字段类型);
2.查看表
show tables; #查看库下所有的表名称
show create table 表名; #查看指定表信息
describe 表名; #查看表结构
desc 表名;
"""
ps:如果想跨库操作其他表只需要在表名前加库名即可
desc mysql.user;
"""
3.编辑表
alter table 表名 rename 新表名;
4.删除表
drop table 表名;
'''基于记录的增删改查'''
1.插入数据
insert into 表名 values(数据值1,数据值2);
2.查询数据
select * from 表名; #查询表中所有的数据
3.编辑数据
update 表名 set 字段名=新数据 where 筛选条件;
4.删除数据
delete from 表名;
delete from 表名 where id=2;