MySQL命令笔记+Python案例

简介: MySQL命令笔记+Python案例

MySQL数据库


1. 概要


  • MySQL安装 & 配置
  • MySQL的启动和关闭
  • 指令
  • Python第三方模块,发送指令并获取MySQL返回的结果。


2. 安装MySQL


MySQL,本质上就是一个软件。


  • 8.x
  • 5.x,在这里安装5.7.31版本


2.1 下载


https://downloads.mysql.com/archives/community/


2.2 安装


解压安装包放在自己知道的目录


2.3 创建配置文件


2.4 初始化


管理员终端cmd输入:

>>> "D:\mysql-5.7.31-winx64\bin\mysqld.exe" --initialize-insecure



安装完成后在mysql目录下会生成一个data目录


3. 启动MySQL


启动MySQL一般有两种方式:


  • 临时启动(不建议)


回车后无保存即启动成功,关闭cmd窗口则关闭MySQL

>>> D:\mysql-5.7.31-winx64\bin\mysqld.exe


制作成Windows服务,服务来进行关闭和开启


  • 制作服务
    57为命名
>>> "D:\mysql-5.7.31-winx64\bin\mysqld.exe" --install mysql57



命令模式启动和关闭服务

>>> net start mysql57 // 开启服务
>>> net stop mysql57  // 关闭服务


图形化模式启动和关闭服务


4. 连接测试


发送MySQL指令分类:


  • 代码类:Python/Java
  • 工具类:Navicat Premium
  • MySQL自带工具


MySQL自带工具(命令行):


规范操作:-h 连接地址 、-P 连接端口、-u 用户名、-p 密码

>>> "D:\mysql-5.7.31-winx64\bin\mysql.exe" -h 127.0.0.1 -P 3306 -u root -p 


简化操作1:如果是在本机上进行连接可不用-h、-P 命令为:

>>> "D:\mysql-5.7.31-winx64\bin\mysql.exe" -u root -p


简化操作2:如果将D:\mysql-5.7.31-winx64\bin添加到环境变量,命令为:

>>> mysql -u root -p



4.1 设置密码

>>> set password = password("root");



4.2 查看已有的文件夹(数据库)

>>> show databases;



4.3 退出(关闭连接)

>>> exit;



4.4 再连接MySQL(输入密码)


5. 忘记密码(解决:重置密码)


Step1:关闭mysql服务


Step2:在my.ini中添加一行

skip-grant-tables=1



Step3:重新启动MySQL服务


Step4:此时进入MySQL命令行无需密码


Step5:设置新密码(执行两步命令)

>>> use mysql;
>>> update user set authentication_string = password('新密码'),password_last_changed=now() where user='root';



Step6:在my.ini配置文件中删除 skip-grant-tables=1


Step7:登录测试


6. MySQL指令


MySQL与平时认知比较

MySQL 认知
数据库 文件夹
数据表 文件


6.1 数据库管理(文件夹)


  • 查看已有的数据库(文件夹)
show databases;


  • 创建数据库(文件夹)
create database 数据库名字;


加编码 & 排序

create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;


  • 删除数据库(文件夹)
drop database 数据库名字;


  • 进入数据库(文件夹)
use 数据库名字;


  • 查看文件夹下所有的数据表(文件)
show tables;


6.2 数据表的管理(文件)


  • 进入数据库(进入文件夹)
use 数据库;


  • 查看当前数据库下的所有表(文件)
show tables;


  • 创建表(文件)
create table tb1(
  id int,
  name varchar(16),
  age int
) default charset=utf8;
create table tb1(
  id int,
  name varchar(16) not null,  -- 不允许为空
  age int null        -- 允许为空(默认)
) default charset=utf8;
create table tb1(
  id int,
  name varchar(16),
  age int default 3   -- 插入数据时,age列的值默认为3
) default charset=utf8;
create table tb1(
  id int primary key,   -- 主键(不允许为空,不允许重复)
  name varchar(16),
  age int
) default charset=utf8;
create table tb1(
  id int auto_increament primary key,   -- 主键(不允许为空,不允许重复)、自递增
  name varchar(16),
  age int
) default charset=utf8;
  • 删除表
drop table 表名称;


  • 查看表属性
desc 表名称;


常用数据类型:


  • tinyint
有符号,取值范围:-128 ~ 127 (有正有负)
无符号,取值范围:0 ~ 255 (只有正)


  • int
int         表示有符号,取值范围:-2147483648 ~ 2147483647
int unsigned    表示无符号,取值范围:0 ~ 4294967295


  • bigint
有符号,取值范围:-9223372036854775808 ~ 9223372036854775807
无符号,取值范围:0 ~ 18446744073709551615


练习:

# 创建表
create table tb1(
  id bigint not null auto_increment primary key,    
  salary int,
  age tinyint
)default charset=utf8;
# 插入数据
insert into tb1(salary,age) values(10000,19); # 单行插入
insert into tb1(salary,age) values(10000,19),(50000,20);  #批量插入
# 查看表中的数据
select * from tb1;


  • float
  • double
  • decimal


准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,d最大值为30。
例如:
create table tb2(
  id bigint not null auto_increment primary key,    
  salary decimal(8,2)
)default charset=utf8;
insert into tb2(salary) values(1.28);
insert into tb2(salary) values(122115.11);


  • char,速度快
定长字符串。最多容纳255个字符。
char(11),固定用11个字符串进行存储,若没有11个字符,也会按照11个字符存储。
create table tb3(
  id bigint not null auto_increment primary key,    
  mobile char(11)
)default charset=utf8;
insert into tb3(mobile) values("aaa");


  • varchar,节省空间
变长字符串。
varchar(11),真实数据有多长就按照多长存储。
create table tb4(
  id bigint not null auto_increment primary key,    
  mobile varchar(11)
)default charset=utf8;
insert into tb3(mobile) values("aaa");


  • text
text数据类型用于保存大字符串,最多可到65535个字符
一般情况下,用于文章、新闻等。
create table tb5(
  id bigint not null auto_increment primary key,    
  title varchar(128),
  content text
)default charset=utf8;


  • mediumtext
范围:16777215


  • longtext
范围:4GB


  • datetime
YYYY-MM-DD HH:MM:SS


  • date
YYYY-MM-DD


练习:

create table tb6(
  id bigint not null auto_increment primary key,    
  name varchar(64) not null,
    password char(64) not null,
    email varchar(64) not null,
    age tinyint,
    salary decimal(10,2),
  ctime datetime
)default charset=utf8;
insert into tb7(name,password,email,age,salary,ctime) values("刘备","123","xx@qq.com",50,1000.11,"2023-1-1 11:11:10");



6.3 数据行操作


1. 新增数据

insert into 表名(列名,列名) values(值,值);
insert into 表名(列名,列名) values(值,值),(值,值),(值,值);


2. 删除数据

delete from 表名;
delete from 表名 where 条件;
delete from tb6
delete from tb6 where id = 3;
delete from tb6 where id = 4 and name="刘备";
delete from tb6 where id > 4;


3. 修改数据

update 表名 set 列=值;
update 表名 set 列=值,列=值;
update 表名 set 列=值 where 条件;
update tb6 set password="aaa";
update tb6 set email="aaa" where id > 5;


4. 查询数据

select * from 表名称;
select * 列名称,列名称 from 表名称;
select 列名称,列名称 from 表名称 where 条件;
select * from tb6;
select id,name from tb6;
select id,name from tb6 where id > 10;
select id,name from tb6 where name="xx" and password="xx";


7.案例:员工管理


7.1 创建表结构


  • 使用MySQL内置工具(命令)


  • 创建数据库:unicom
  • 数据一张表:admin
表名:admin
列:
id,整形,自增,主键。
username 字符串 不为空
password 字符串 不为空
mobile 字符串 不为空


  • Python代码实现:


  • 添加用户
  • 删除用户
  • 查看用户
  • 更新用户信息
# 创建数据库
create database unicom;
# 创建表
create table admin(
 id bigint not null auto_increment primary key,
 username char(30) not null,
 password char(30) not null,
 mobile char(30) not null
 )default charset=utf8;


7.2 Python操作MySQL


1. 写入数据


使用Python写入数据

import pymysql
# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 2.发送指令
cursor.execute("insert into admin(username,password,mobile) values('liubei','123456','12345678900')")
conn.commit()
# 3.关闭连接
cursor.close()
conn.close()


占位符写法:

import pymysql
# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 2.发送指令
sql = "insert into admin(username,password,mobile) values(%s,%s,%s)"
cursor.execute(sql, ["zhangfei", "456789", "12222222222"])
conn.commit()
# 3.关闭连接
cursor.close()
conn.close()


动态写入数据:

import pymysql
while True:
    user = input('请输入用户名:')
    if user.upper() == 'Q':         # upper小写字母转换为大写
        break
    pwd = input('请输入密码:')
    mobile = input('手机号:')
    # 1.连接MySQL
    conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 2.发送指令
    sql = "insert into admin(username,password,mobile) values(%s,%s,%s)"
    cursor.execute(sql, [user, pwd, mobile])
    conn.commit()
    # 3.关闭连接
    cursor.close()
    conn.close()


2. 查询数据

import pymysql
# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 2.执行查询的指令
cursor.execute("select * from admin where id > %s", [1])
data_list = cursor.fetchall()       # fetchall获取数据,fetchone获取符合条件的第一条数据
# 循环按照每行显示
for row_dict in data_list:
    print(row_dict)
# 3.关闭连接
cursor.close()
conn.close()


3. 删除数据

import pymysql
# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 2.执行删除的指令
cursor.execute("delete from admin where id=%s", [3])
conn.commit()
# 3.关闭连接
cursor.close()
conn.close()


4. 修改数据

import pymysql
# 1.连接MySQL
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', passwd='abc123.', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 2.执行删除的指令
cursor.execute("update admin set password=%s where id=%s", ["15555555555", 2])
conn.commit()
# 3.关闭连接
cursor.close()
conn.close()


注意:


  • 在进行 新增、删除、修改时,一定要记得commit,不然没有数据。
  • 在查询时,不需要commit,但需要使用fetchall、fetchone获取数据
  • 不用用Python的字符串格式化进行拼接(会被SQL注入),一定要用execute+参数
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
5月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
3月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
3月前
|
关系型数据库 MySQL 索引
MySQL多表练习笔记
链接可行,多表查询语法
122 0
|
3月前
|
设计模式 缓存 运维
Python装饰器实战场景解析:从原理到应用的10个经典案例
Python装饰器是函数式编程的精华,通过10个实战场景,从日志记录、权限验证到插件系统,全面解析其应用。掌握装饰器,让代码更优雅、灵活,提升开发效率。
267 0
|
5月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
6月前
|
数据可视化 算法 数据挖掘
Python 3D数据可视化:7个实用案例助你快速上手
本文介绍了基于 Python Matplotlib 库的七种三维数据可视化技术,涵盖线性绘图、散点图、曲面图、线框图、等高线图、三角剖分及莫比乌斯带建模。通过具体代码示例和输出结果,展示了如何配置三维投影环境并实现复杂数据的空间表示。这些方法广泛应用于科学计算、数据分析与工程领域,帮助揭示多维数据中的空间关系与规律,为深入分析提供技术支持。
248 0
Python 3D数据可视化:7个实用案例助你快速上手
|
5月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
5月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
5月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,

推荐镜像

更多