《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录
- 1.1 MySQL 概览:版本、特性和生态系统
- 1.1.1 基础知识
- 1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作
- 1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**
- 1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据
- 1.2 安装和配置 MySQL
- 1.2.1 基础知识
- 1.2.2 重点案例:使用 Homebrew 安装 MySQL 并进行初步配置
- 1.2.3 拓展案例 1:配置 MySQL 以优化 Mac OS 上的性能
- 1.2.4 拓展案例 2:使用 Python 连接到配置好的 MySQL 实例并创建一个数据库
- 1.3 基础命令和操作
- 1.3.1 基础知识
- 1.3.2 重点案例:使用 Python 创建数据库和表,并插入数据
- 1.3.3 拓展案例 1:使用 Python 执行数据查询操作
- 1.3.4 拓展案例 2:更新和删除数据
1.1 MySQL 概览:版本、特性和生态系统
在这一节中,我们将深入探索 MySQL,这个在全球广泛使用的关系型数据库管理系统。无论你是初学者还是经验丰富的开发者,了解 MySQL 的基础知识都是至关重要的。
1.1.1 基础知识
-
版本:MySQL 的版本历史可以追溯到 1995 年,经历了从 3.x 到 8.0 的演变。每个主要版本的发布都带来了性能改进、新特性和安全性增强。当前,MySQL 8.0 是最新的稳定版本,它引入了诸如窗口函数、公共表表达式(CTE)、角色管理、JSON 支持扩展等先进特性。
-
特性:
- 存储引擎:MySQL 支持多种存储引擎,包括 InnoDB(支持事务处理,提供高可靠性)、MyISAM(适用于读取密集型应用)、Memory(数据存储在 RAM 中,提供快速访问)等。
- 复制:MySQL 提供主从复制功能,支持数据的实时备份和读写分离,提高了数据库的可用性和扩展性。
- 分区:通过将表中的数据分布到不同的分区来提高性能,特别是在处理大量数据时。
- 安全性:包括网络层加密、SHA-256 密码认证、角色基的权限控制等。
-
生态系统:MySQL 被广泛应用于各种在线应用、数据仓库、e-commerce 解决方案等场景。它与许多编程语言和框架(如 PHP、Java、Python、Ruby)紧密集成,支持跨平台运行(Linux、Windows、MacOS)。
1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作
-
假设我们正在开发一个博客系统,需要存储用户信息和博文内容。我们会使用 Python 的
mysql-connector-python包来执行基本的 CRUD(创建、读取、更新、删除)操作。步骤:
-
安装
mysql-connector-python包。pip install mysql-connector-python -
连接到 MySQL 数据库。
import mysql.connectorconn = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="blogdb" ) cursor = conn.cursor() -
创建表格。
cursor.execute("CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255))") cursor.execute("CREATE TABLE posts (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), content TEXT, user_id INT, FOREIGN KEY(user_id) REFERENCES users(id))") -
插入数据。
query = "INSERT INTO users (name, email) VALUES (%s, %s)" values = ("John Doe", "john@example.com") cursor.execute(query, values) conn.commit() -
查询数据。
cursor.execute("SELECT * FROM users") for (name, email) in cursor:print(f"Name: {name}, Email: {email}")
-
1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**
对于生产环境中的数据库,定期备份是一项重要的维护任务。我们可以使用 Python 脚本来自动化这个过程。
步骤:
-
使用
subprocess模块调用mysqldump工具。import subprocesssubprocess.run(["mysqldump", "-u", "username", "-p", "database_name", ">","backup.sql"]) -
可以将此脚本设置为定期执行,实现自动化备份。
1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据
在这个案例中,我们将使用 Python 的 pandas 库从 MySQL 数据库中读取数据,并进行简单的数据分析。
步骤:
-
安装
pandas和sqlalchemy。pip install pandas sqlalchemy -
读取数据并分析。
from sqlalchemy import create_engine import pandas as pdengine = create_engine('mysql+mysqlconnector://username:password@localhost/blogdb') df = pd.read_sql_table('posts', con=engine) print(df.describe())
通过以上案例,我们不仅了解了 MySQL 的基础知识,还通过实际应用案例深入探讨了如何使用 Python 与 MySQL 交互,涵盖了数据操作、备份和分析等常用场景,为读者提供了实用性强、贴近实际生产的学习资源。

1.2 安装和配置 MySQL
安装和配置 MySQL 是每个数据库管理员和开发者的基本技能。在 Mac OS 上,这个过程可以通过多种方式完成,包括使用 Homebrew、下载官方的 MySQL 安装包,或者通过 Docker。这一节将引导你通过这些步骤,确保你的 MySQL 服务器运行顺畅并准备好执行任务。
1.2.1 基础知识
- 使用 Homebrew 安装:Homebrew 是 Mac OS 上最受欢迎的包管理器之一,它可以让安装 MySQL 变得非常简单。
- 配置文件:MySQL 的配置文件通常位于
/etc/my.cnf或者/usr/local/etc/my.cnf,通过编辑这个文件,你可以调整 MySQL 服务器的设置,例如内存使用、端口号和默认的存储引擎。 - 启动和停止 MySQL 服务:安装完成后,你需要知道如何启动和停止 MySQL 服务,以及如何设置为开机自启动。
- 安全配置:运行
mysql_secure_installation脚本来增强 MySQL 安装的安全性是一个好习惯,这包括设置 root 密码、删除匿名用户、禁用远程 root 登录等。
1.2.2 重点案例:使用 Homebrew 安装 MySQL 并进行初步配置
假设你是一个开发者,正在 Mac OS 上配置本地开发环境。使用 Homebrew 安装 MySQL 是一个快速开始的好方法。
步骤:
-
打开终端,安装 Homebrew(如果尚未安装)。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" -
使用 Homebrew 安装 MySQL。
brew install mysql -
启动 MySQL 服务。
brew services start mysql -
运行安全安装脚本。
mysql_secure_installation -
连接到 MySQL。
mysql -u root -p
1.2.3 拓展案例 1:配置 MySQL 以优化 Mac OS 上的性能
开发者和数据库管理员经常需要调整 MySQL 配置,以优化本地环境中的性能。
步骤:
-
找到 MySQL 的配置文件
my.cnf。如果不存在,请创建一个。nano /usr/local/etc/my.cnf -
添加或修改以下配置,以优化性能(根据你的机器配置调整数值)。
[mysqld] max_connections = 50 innodb_flush_log_at_trx_commit = 1 innodb_log_file_size = 128M query_cache_size = 0 query_cache_type = 0 -
重启 MySQL 服务以应用更改。
brew services restart mysql
1.2.4 拓展案例 2:使用 Python 连接到配置好的 MySQL 实例并创建一个数据库
一旦 MySQL 安装并配置好,下一步就是开始使用它了。这个案例将展示如何使用 Python 连接到 MySQL 并创建一个新的数据库。
步骤:
-
确保安装了
mysql-connector-python。pip install mysql-connector-python -
使用 Python 脚本连接到 MySQL 并创建数据库。
import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="yourpassword" )cursor = conn.cursor() cursor.execute("CREATE DATABASE mydatabase")
通过这些案例,你不仅学会了如何在 Mac OS 上安装和配置 MySQL,还学会了如何通过 Python 脚本与 MySQL 互动,从而为各种开发和生产任务打下坚实的基础。

1.3 基础命令和操作
掌握 MySQL 的基础命令和操作是进行有效数据库管理和开发的关键。这一节将涵盖如何使用这些基础命令来创建和管理数据库、表、以及执行数据的 CRUD(创建、读取、更新、删除)操作。
1.3.1 基础知识
- 创建数据库:
CREATE DATABASE database_name; - 选择数据库:
USE database_name; - 创建表:
CREATE TABLE table_name (column1 datatype, column2 datatype, ...); - 插入数据:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); - 查询数据:
SELECT * FROM table_name;或更具体的查询SELECT column1, column2 FROM table_name WHERE condition; - 更新数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; - 删除数据:
DELETE FROM table_name WHERE condition; - 删除表:
DROP TABLE table_name; - 删除数据库:
DROP DATABASE database_name;
1.3.2 重点案例:使用 Python 创建数据库和表,并插入数据
假设你需要为一个小型电商平台创建一个数据库,其中包含用户信息和订单信息。
步骤:
-
连接到 MySQL。
import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="yourpassword" ) cursor = conn.cursor() -
创建数据库
ecommerce。cursor.execute("CREATE DATABASE ecommerce") cursor.execute("USE ecommerce") -
创建
users和orders表。cursor.execute(""" CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255),email VARCHAR(255) UNIQUE ) """)cursor.execute(""" CREATE TABLE orders (id INT AUTO_INCREMENT PRIMARY KEY,product_name VARCHAR(255),amount INT,user_id INT,FOREIGN KEY(user_id) REFERENCES users(id) ) """) -
插入数据到
users表。query = "INSERT INTO users (name, email) VALUES (%s, %s)" values = [("Alice", "alice@example.com"), ("Bob", "bob@example.com")] cursor.executemany(query, values) conn.commit()
1.3.3 拓展案例 1:使用 Python 执行数据查询操作
在电商平台数据库中查询特定用户的所有订单。
步骤:
-
查询
Alice的用户 ID。cursor.execute("SELECT id FROM users WHERE name = 'Alice'") user_id = cursor.fetchone()[0] -
查询基于用户 ID 的订单。
cursor.execute(f"SELECT * FROM orders WHERE user_id = {user_id}") for (id, product_name, amount, user_id) in cursor:print(f"Order ID: {id}, Product: {product_name}, Amount: {amount}")
1.3.4 拓展案例 2:更新和删除数据
修改特定订单的数量,然后删除一个用户。
步骤:
-
更新订单数量。
cursor.execute("UPDATE orders SET amount = 3 WHERE id = 1") conn.commit() -
删除用户
Bob。cursor.execute("DELETE FROM users WHERE name = 'Bob'") conn.commit()
通过以上案例,你不仅学会了如何使用 Python 连接 MySQL 执行基本的数据库操作,还掌握了如何在实际项目中应用这些操作来管理数据。这些技能在数据库管理和数据操作中非常重要,可以为开发各种应用程序和服务提供坚实的基础。
相关文章:
《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)
文章目录 1.1 MySQL 概览:版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例:使用 Python 实现 MySQL 数据的 CRUD 操作1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据 1.2 安…...
Linux 软件管理(YUM RPM)
1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…...
【Makefile语法 05】动静态库编译链接
目录 一、多文件项目源代码 二、静态库编译链接 三、动态库编译链接 一、多文件项目源代码 // include/add.hpp#pragma once int add(int a, int b); // include/sub.hpp#pragma once int sub(int a, int b); // src/add.cpp#include "add.hpp"int add(int a, …...
JS - 处理元素滚动
业务功能中时常有元素滚动的功能,现在就总结一下一些常用的事件。 一、定位滚动元素 做一切滚动操作之前都应该先定位到滚动元素,再做其他操作,如滚动顶部,获取滚动距离、禁止滚动等。 把以下代码复制粘贴到浏览器 Console 面板…...
JavaScript滚动事件
🧑🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ✨ 前言 滚动是网页交互不可或缺的一部分。监听页面和元素的滚动事件,可以帮助…...
4.0 Zookeeper Java 客户端搭建
本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。 IntelliJ IDEA 相关介绍:…...
C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
目录 1.使用动态数组(ArrayList): 2.使用 jagged array(不规则数组): 3.使用 List : 4.使用数组复制: 在C#中,数组的长度是固定的,一旦声明和初始化&…...
3.1 Verilog 连续赋值
关键词:assign, 全加器 连续赋值语句是 Verilog 数据流建模的基本语句,用于对 wire 型变量进行赋值。: 格式如下 assign LHS_target RHS_expression ; LHS(left hand side) 指赋值操作…...
【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
文章目录 一、Origin 含义二、跨源资源共享:**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests:预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…...
LangChain pdf的读取以及向量数据库的使用
以下使用了3399.pdf, Rockchip RK3399 TRM Part1 import ChatGLM from langchain.chains import LLMChain from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain.chains import Simp…...
VUE学习——事件修饰符
阻止默认事件 <template><a click"onClickHandle" href"https://www.baidu.com">baidu</a><a click.prevent"onClickHandle" href"https://www.baidu.com">baidu</a> </template> <script>…...
开放平台技术架构设计与实现的实战总结
开放平台是企业向外部开发者提供API接口和服务的平台,促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法,帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台? - 解释了开放平台…...
飞桨自然语言处理框架 paddlenlp的 trainer
飞桨(PaddlePaddle)的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程,提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...
SQL世界之命令语句Ⅲ
目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接(INNER JOIN)实例 三、SQL LEFT JOIN 关键字 1.SQL LEFT JOIN 关键字 2.LEFT JOIN 关…...
Snoop Version 2 Packet Capture File Format
RFC1761 - Snoop Version 2 Packet Capture File Format, FEBRUARY 1995 本备忘录的状态 本备忘录为互联网社区提供帮助信息。 本备忘录不作为任何类型的互联网标准。 本备忘录的分发不受限制。 Status of this Memo This memo provides information for the Internet communit…...
扩展说明: 指令微调 Llama 2
这篇博客是一篇来自 Meta AI,关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集,有了它,我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是,模型如…...
VUE 全局设置防重复点击
请求后端防止重复点击,用户点击加入遮罩层,请求完毕关闭遮罩层 我们利用请求拦截器,在用户点击的时候,弹出遮罩层 本文采用i18n国际化 element plus UI,提取你想要的,这里不做简化 完整代码如下…...
备战蓝桥杯---动态规划(基础1)
先看几道比较简单的题: 直接f[i][j]f[i-1][j]f[i][j-1]即可(注意有马的地方赋值为0) 下面是递推循环方式实现的AC代码: #include<bits/stdc.h> using namespace std; #define int long long int a[30][30]; int n,m,x,y; …...
CVE-2018-19518 漏洞复现
CVE-2018-19518 漏洞介绍 IMAP协议(因特网消息访问协议)它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。它运行在TCP/IP协议之上,使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...
Python爬虫实战:抓取猫眼电影排行榜top100#4
爬虫专栏系列:http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中,我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便,而且目前我们还没有系统学习 HTML 解析库,所以这里就…...
ubuntu linux虚拟机安装部署hermes详细教程(安装、问题处理)
文章目录 前言 一、Hermes 介绍 1. 什么是 Hermes Agent? 2. 核心特性 3. 为什么选择 Hermes Agent? 4. 适用场景 二、安装Hermes 1.安装 2.配置 3.开始对话 4.接入多平台(可选) 5.保持更新 三、Hermes接入微信 四、常见错误解决 1.Failed to connect to github.com port 4…...
告别内网穿透:OpenWrt软路由IPv6配置实战与DDNS部署指南
1. 为什么我们需要IPv6? 最近几年,越来越多的朋友发现家里的宽带已经拿不到IPv4公网地址了。我自己用的移动宽带就是这样,光猫改桥接后用软路由拨号,拿到的永远是个100开头的内网IP。打电话给运营商,客服很客气地告诉我…...
Eviews面板数据建模保姆级教程:从Hausman检验到模型选择,一次讲透固定效应与随机效应
Eviews面板数据建模实战指南:从数据导入到模型选择的完整流程 面板数据分析作为计量经济学中的重要工具,能够同时捕捉时间和个体维度的信息。对于刚接触Eviews的研究者来说,如何正确建立面板模型往往令人困惑——从数据准备到模型选择&#x…...
告别NuWriter!手把手教你用命令行打包新唐NUC980 SPI NAND完整系统镜像
新唐NUC980 SPI NAND量产化镜像构建实战指南 在嵌入式设备量产过程中,传统烧录方式往往成为效率瓶颈。当面对新唐NUC980这类基于SPI NAND的工控设备时,产线工程师常需要反复切换工具链、分步烧录不同组件,不仅耗时费力,还容易因人…...
如何快速批量添加专业水印:3分钟掌握摄影作品保护终极指南
如何快速批量添加专业水印:3分钟掌握摄影作品保护终极指南 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils semi-utils是一款专为摄影师…...
MQTT QoS压力测试:RyanMqtt消息可靠性深度剖析与实战避坑
1. 项目概述:为什么我们要死磕MQTT的QoS?最近在折腾一个物联网项目,后台服务用的是RyanMqtt。项目上线前,团队里有个兄弟随口问了句:“咱们这消息到底靠不靠谱?别设备上报的数据丢了,或者指令发…...
代码评审可视化:基于图计算与数据驱动提升团队协作效率
1. 项目概述:从代码评审的“混沌”到“清晰”如果你是一名开发者,或者是一名技术团队的负责人,那么“代码评审”这个词对你来说一定不陌生。它几乎是现代软件工程中保障代码质量、促进知识共享、统一编码风格的核心环节。然而,一个…...
免费开源的终极分子绘图神器:5分钟快速上手Ketcher完整指南
免费开源的终极分子绘图神器:5分钟快速上手Ketcher完整指南 【免费下载链接】ketcher Web-based molecule sketcher 项目地址: https://gitcode.com/gh_mirrors/ke/ketcher 你是否厌倦了笨重的化学绘图软件?想找一款既专业又轻量的分子结构编辑器…...
Cursor Pro功能完整破解指南:三步实现免费无限使用
Cursor Pro功能完整破解指南:三步实现免费无限使用 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial …...
AIStoryBuilders:基于LangChain与向量数据库的智能故事创作框架解析
1. 项目概述:当AI成为你的故事合伙人如果你和我一样,既痴迷于天马行空的叙事,又时常被“灵感枯竭”或“情节卡壳”折磨,那么“AIStoryBuilders”这个项目,绝对值得你花时间深入了解。它不是一个简单的AI写作工具&#…...
