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()  # 关闭连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/673722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国人工智能区域竞争力研究报告(2024)

来源:赛迪顾问 近期历史回顾:2024年NoETL开启自动化数据管理新时代白皮书.pdf 创新引领用户“换新生活”-从AWE2024看家电及消费电子行业发展趋势报告(精简版).pdf 2024智能网联汽车“车路云一体化”规模建设与应用参考指南&#…

字节裁员!开启裁员新模式。。

最近,互联网圈不太平,裁员消息此起彼伏。而一向以“狼性文化”著称的字节跳动,却玩起了“低调裁员”,用一种近乎“温柔”的方式,慢慢挤掉“冗余”的员工。 “细水长流”:裁员新模式? 不同于以往…

FreeRTOS基础(九):FreeRTOS的列表和列表项

今天我们将探讨FreeRTOS中的一个核心概念——列表(List)和列表项(List Item)。在实时操作系统(RTOS)中,任务的管理和调度是至关重要的,而FreeRTOS使用列表来实现这一功能。列表可以说…

城市低空经济“链接力”指数报告(2024)

来源:城市进化论&火石创造 近期历史回顾:2024年NoETL开启自动化数据管理新时代白皮书.pdf 创新引领用户“换新生活”-从AWE2024看家电及消费电子行业发展趋势报告(精简版).pdf 2024智能网联汽车“车路云一体化”规模建设与应用…

鬼刀画风扁平化粒子炫动引导页美化版

源码介绍 分享一款引导页,响应式布局,支持移动PC 添加背景图片,美化高斯模糊 ,删除蒙版人物部分,更图片人物画风更美好 删除雪花特效 替换字体颜色 添加底备案号 预留友情连接 效果预览 源码下载 https://www.qqmu.com/3381.h…

总结2024/6/3

省流,蓝桥杯国优,还是太菜了,听说都是板子题但是还是写不出来,靠暴力好歹没有爆0,还是得多练,明年加油了

分享5款.NET开源免费的Redis客户端组件库

前言 今天大姚给大家分享5款.NET开源、免费的Redis客户端组件库,希望可以帮助到有需要的同学。 StackExchange.Redis StackExchange.Redis是一个基于.NET的高性能Redis客户端,提供了完整的Redis数据库功能支持,并且具有多节点支持、异步编…

Python中的元素相乘与矩阵相乘(附Demo)

目录 前言1. 元素相乘2. 矩阵相乘3. 差异 前言 深度学习的矩阵相乘引发的Bug,由此深刻学习这方面的相关知识 在Python中,特别是使用NumPy库时,元素相乘和矩阵相乘是处理数组和矩阵时的常见操作 1. 元素相乘 元素相乘是指对两个相同形状的…

Windows端口本地转发

参考 微软Netsh interface portproxy 命令 界面端口代理的 Netsh 命令 | Microsoft Learn 使用Windows系统的portproxy功能配置端口转发 使用Windows系统的portproxy功能配置端口转发-阿里云帮助中心 (aliyun.com) 将来自0.0.0.0地址对端口35623的访问转发到172.18.106.16…

Python中degrees怎么用

degrees() 函数可以将弧度转换为角度。 语法 以下是 degrees() 方法的语法: import math math.degrees(x) 注意:degrees() 是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。 参数 x -- 一个数值。 返…

苹果设备mac/Paid/phone 下载使用anki记忆卡

安卓的设备直接可以下 如果你这个,如图。 首先点击下列网址,下载,在里面搜索anki记忆卡 https://www.i4.cn 下载好,打开应用软件爱思助手。搜索anki记忆卡,下载,然后用数据线一端连接电脑一端连接手机或者…

【C++练级之路】【Lv.23】C++11——可变参数模板、lambda表达式和函数包装器

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 一、可变参数模板1.1 参数包的概念1.2 参数包的展开1.3 emplace系列 二、lambda表达式2.1 lambda的格式2.2 捕…

二级指针简单介绍

我们之前学习的&#xff1a;变量的地址是存入指针变量中的&#xff0c;然而指针变量也是变量&#xff0c;是变量就有地址&#xff0c;那么指针变量的地址存放在哪里 &#xff1f; 这也就是二级指针 #include<stdio.h> int main() {int a10;int*p&a;int**pp&p;re…

假指纹与活体指纹检测

目录 1. 假指纹简介 2. 假指纹制作流程 3. 活体指纹检测 4. 活体指纹检测竞赛 1. 假指纹简介 随着科学技术的发展&#xff0c;指纹技术以各种各样的形式进入了我们的生活。在大多数情况下&#xff0c;指纹识别应用于移动设备和桌面设备解决方案&#xff0c;以提供安全方便的…

Linux命令篇(一):文件管理部分

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 1、cat命令常用参…

2.3Docker部署java工程

2.3Docker部署java工程 1.导入jar包 2.在Docker部署jdk&#xff08;容器名为myjdk17&#xff09; 3.修改jar包名 mv 原包名 新包名4. 配置启动脚本 Dockerfile是一个文本文件&#xff0c;其中包含了构建 Docker 镜像所需的一系列步骤和指令。通过编写 Dockerfile 文件&…

华为交换机的基本配置

实验拓扑&#xff1a; 实验目的&#xff1a;认识二层交换机和二层交换技术的工作原理&#xff1b;认识三层交换和三层交换技术。 三层功能简而言之就是了具有路由的功能&#xff0c;设备可以充当网关和路由器。 实验要求&#xff1a;公司的两个部门用vlan进行划分&#xff0c…

Vitis HLS 学习笔记--HLS流水线类型

目录 1. 简介 2. 优缺点对比 2.1 Stalled Pipeline 2.2 Free-Running/Flushable Pipeline 2.3 Flushable Pipeline 3. 设置方法 4. FRP的特殊优势 5. 总结 1. 简介 Vitis HLS 会自动选择正确的流水线样式&#xff0c;用于流水打拍函数或循环。 停滞的流水线&#xff…

MaxKey本地运行实战指南

MaxKey 本地运行总结 概述开发环境准备 主页传送门 &#xff1a; &#x1f4c0; 传送 概述 MaxKey单点登录认证系统&#xff0c;谐音为马克思的钥匙寓意是最大钥匙&#xff0c;是业界领先的IAM-IDaas身份管理和认证产品&#xff1b;支持OAuth 2.x/OpenID Connect、SAML 2.0、J…

Layui2.5.6树形表格TreeTable使用

1、问题概述? Layui2.5.6的树形表格-TreeTable终于用明白了,步骤详细,提供源码下载。 如果你使用的是Layui2.8+版本,那么点个赞,赶紧去官网看吧,官网更行了。 更新地址:树表组件 treeTable - Layui 文档 最近在项目中需要使用到树形表格,用来显示菜单的层级关系,当…