《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 解析库,所以这里就…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...