首页 > 数据库 >MySQL 使用方法以及教程

MySQL 使用方法以及教程

时间:2024-06-02 23:58:34浏览次数:24  
标签:语句 教程 数据库 使用 pymysql cursor MySQL 方法

一、引言

MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于Web开发、数据分析等领域。它提供了高效、稳定的数据存储和查询功能。同时,Python作为一种强大的编程语言,也提供了多种与MySQL交互的库,其中pymysql就是其中之一。本文将介绍MySQL数据库的基础使用,并通过Python的pymysql库进行实际操作。

二、MySQL数据库基础

注意

文章中前面的MySQL部分特意使用了MySQL服务器自带的名为mysql的系统数据库,这个数据库用于存储与MySQL服务器自身操作和维护相关的元数据(metadata)和系统表。比如里面有个user表,这个表存储了MySQL的用户账号信息,包括用户名、密码、主机地址、权限等。其他的几个表由于配置MySQL一般不用,这里我就不解释了,可以自行上网查找资料了解一下。

1.安装MySQL

  • 在Linux系统中,可以通过包管理器(如apt、yum)进行安装。命令行输入:sudo apt install mysql-server和sudo apt install mysql-client。
  • 在Windows系统中,可以访问MySQL官网下载并安装MySQL安装包。或者用我网盘里的资源。链接:https://pan.baidu.com/s/1lO_XBxy9FOsvSis6zpPY8A?pwd=5as7 
    提取码:5as7

2.连接到MySQL

在命令行中输入mysql -u 用户名 -p,然后输入密码连接到MySQL。成功连接后,将看到MySQL的命令行提示符。一般都是root用户,直接输入mysql -u root -p回车然后输入密码就行了。Ubuntu上和Windows都是这样。

3.退出数据库

在mysql>提示符下输入quit或者exit就可以退出MySQL交互操作界面。

4.显示当前服务器版本

使用SELECT VERSION();命令可以查看当前MySQL服务器的版本信息。

5.显示当前时间

使用SELECT NOW();命令可以查看当前的日期和时间。

6.显示当前用户

使用SELECT USER();命令可以查看当前连接的MySQL用户。


7.显示所有数据库名称

使用SHOW DATABASES;命令可以列出MySQL服务器上的所有数据库。

8.使用数据库

使用USE my_db;命令可以选择一个数据库作为当前操作的数据库,其中my_db是数据库的名称。

9.创建数据库和表

创建数据库和表的语句就是sql语句中的CREATE DATABASECREATE TABLE,不熟悉的可以去我前两篇文章看一下。这里要说的是在MySQL里要想创建表,需要先选中一个数据库,选择数据库就是上面说的USE语句,比如use mydb就选择了MySQL里的mydb数据库,然后就可以在这个数据库创建表了。

10.显示当前数据库所有表

在选择了数据库之后,可以使用SHOW TABLES;命令列出该数据库中的所有表。

11.查看数据库字符集编码

使用SHOW CREATE DATABASE my_db;命令可以查看指定数据库的创建语句,从而得知数据库的字符集编码等信息。

12.查看数据表创建语句

使用SHOW CREATE TABLE my_tb;命令可以查看指定表的创建语句,包括表的字段、索引等信息。

13.查看数据表字段信息

使用SHOW COLUMNS FROM my_tb;或者describe my_tb;命令可以查看指定表的字段信息,包括字段名、数据类型、是否允许为空等。

14.查看警告信息

在某些情况下,MySQL会返回警告信息而不是错误。使用SHOW WARNINGS;命令可以查看这些警告信息。

三、Python中使用pymysql库操作MySQL

1.安装pymysql库

在Python中,我们可以使用pymysql库来执行上述的MySQL命令。首先,需要安装pymysql库,可以使用pip命令进行安装:

pip install pymysql

2.连接到MySQL数据库

使用pymysql库的connect()方法连接到MySQL数据库,并指定主机名、用户名、密码、数据库名等参数。或者使用pymysql库的Connection()对象来连接数据库,代码如下:

import pymysql

# 使用connect方法
# 创建连接
connection = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123456',
    database='py_sql',
    charset='utf8mb4'  # 使用utf8mb4字符集支持全字符集
)

# 使用Connection对象
conn = pymysql.Connection(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
)
# 参数是通用的,这里没有指定连接的database后面也可以用conn.select_db("py_sql")来选择要操作的数据库

3.执行SQL语句

使用游标对象的execute()方法执行SQL语句。

cursor = conn.cursor()    # 获取游标对象
cursor.execute("select * from student")  # 执行sql语句

4.获取查询结果

对于查询语句,可以使用游标对象的fetchone()fetchall()方法获取查询结果。

注意:这两个方法是有类似于指针的效果的,当你使用 fetchone() 方法时,它会从结果集的当前位置获取一条记录,并将内部的位置指针向后移动一位。如果你之后调用 fetchall(),它将从当前位置开始获取所有剩余的记录。

比如我现在数据库student表里有6条数据,分别为

(1, '小明', 31, '男')
(2, '小红', 33, '女')
(3, '小黑', 35, '男')
(4, '小王', 31, '男')
(5, '小米', 37, '女')
(6, '小哈', 32, '女')

我现在执行了一句sql语句select * from student,当我调用了一次fetchone()语句之后,打印这个结果是(1, '小明', 31, '男'),当我再调用fetchall()语句的时候,打印的结果为(2, '小红', 33, '女'),(3, '小黑', 35, '男'),(4, '小王', 31, '男'),(5, '小米', 37, '女'),(6, '小哈', 32, '女')。

两者的区别:

  • fetchone() 方法用于从查询结果中获取单条记录。这个方法在处理大量数据时特别有用,因为它允许你逐条处理记录,而不是一次性加载所有记录到内存中。
  • fetchall() 方法用于获取查询结果中的所有剩余记录。使用 fetchall() 时需要小心,因为如果查询结果很大,它会消耗大量内存来存储所有记录。不过在处理小量数据或确保结果集不会过大的情况下,使用 fetchall() 可以更方便地一次性获取所有数据。
result: tuple = cursor.fetchone()
print(result)
results: tuple = cursor.fetchall()
print(results)

5.关闭游标和连接

在操作完成后,使用close()方法关闭游标和连接,释放资源。

# 关闭游标对象
cursor.close()
# 关闭数据库的链接
conn.close()

6.代码汇总

import pymysql

# 创建连接
connection = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='123456',
    database='py_sql',
    charset='utf8mb4'  # 使用utf8mb4字符集支持全字符集
)
try:
    with connection.cursor() as cursor:
        # 执行SQL命令,例如查看当前时间
        # cursor.execute("SELECT NOW();")
        # 显示当前服务器版本
        cursor.execute("SELECT VERSION();")
        result = cursor.fetchone()
        print("当前时间:", result[0])
finally:
    connection.close()  # 关闭连接

标签:语句,教程,数据库,使用,pymysql,cursor,MySQL,方法
From: https://blog.csdn.net/qq_64192931/article/details/139398847

相关文章

  • 基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法
    基于docker的oracle12.2.0.1部署及oracle使用与docker镜像容器制作迁移方法本文介绍了基于docker的oracle12.2.0.1部署,包含了oracle基本配置、监听器和实例启动方法、PDB和CDB操作方法、表空间建立和用户数据库建立、常见启动问题解决等,并介绍了镜像制作、镜像打包、镜像迁移......
  • DVWA靶场---csrf遇到的问题解决方法
    1.解决low等级不携带cookie访问诈骗网站:设置---隐私与安全---浏览器隐私---增强型跟踪保护---自定义---cookie---跨站跟踪型cookie。2.解决medium等级referer显示不完整解决方法:在服务器的html上加一段:<metaname="referrer"content="no-referrer-when-downgrade">当从......
  • [ Python ] 常用运算符对应的魔法方法
    https://www.cnblogs.com/yeungchie/Python中的运算符丰富多样,它们可以分为多个类别,包括算术运算符、比较运算符、逻辑运算符、位运算符、身份运算符、成员运算符等。每个运算符都有其对应的魔法方法(也称为特殊方法或dunder方法,即双下划线方法),这些方法在特定情况下会被Python调用......
  • Eclipse 下 Activiti Designer 插件安装教程
    Activiti开源工作流引擎简介:什么是工作流?工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。个人理解:工......
  • 《Linux内核完全注释》学习笔记:2.5 Linux内核对内存的使用方法
    在Linux0.11内核中,为了有效地使用机器中的物理内存,内存被划分成几个功能区域,如图2-9所示。图2-9物理内存使用的功能区域分布图Linux内核程序占据在物理内存的开始部分,接下来是用于供硬盘或软盘等块设备使用的高速缓冲区部分。当一个进程需要读取块设备中的数据时,系统会......
  • MYSQL 移机重装步骤(windows11)
     MYSQL移机重装步骤(windows11) 目的:已有电脑A,D盘安装有mysql(安装方式为免安装),准备在另一台电脑B上,复制安装电脑A上的mysql(8.0.23版本)。要求:电脑A的 mysql数据库表都恢复,且设置的用户和密码等都恢复。 步骤: 1 先从电脑A复制mysql文件夹到电脑B的D盘,如:D:\mysql......
  • MySQL进阶之索引
    1索引概述  索引(index)是帮助MySOL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。  索引的优缺点优势劣势......
  • 在Macos上,使用homebrew下载并配置mysql
    下载mysqlbrewinstallmysql启动mysql注意:由于启动mysql的指令会先将在Github上的官方维护的tap克隆到homebrew-services文件夹中,因此需要先确定能够稳定地访问Github如果很不幸你无法稳定的访问Github,我们可以更改homebrew主仓库的git远程地址和homebrew核心软件仓库的git......
  • springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行解决方法
    问题描述:springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行说明:以下两种打包方式均在IDEA软件内完成,上传服务器使用宝塔面板管理1.第一次打包方式; 设置完打包路径后,进入build菜单进行打包:  选择build或rebuild进行打包,打包后上传jar包到服务器,运......
  • OpenCV 的几种查找图像中轮廓边缘的方法
     原始图片: 1、Sobel()Sobel算子结合了高斯平滑和微分,用于计算图像的梯度,从而突出显示边缘。importcv2#读取图像image=cv2.imread('image.png',cv2.IMREAD_GRAYSCALE)#使用Sobel算子查找水平和垂直边缘sobel_x=cv2.Sobel(image,cv2.CV_64F,1,0,ksize......