当前位置: 首页 > news >正文

《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(创建、读取、更新、删除)操作。

    步骤

    1. 安装 mysql-connector-python 包。

      pip install mysql-connector-python
      
    2. 连接到 MySQL 数据库。

      import mysql.connectorconn = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="blogdb"
      )
      cursor = conn.cursor()
      
    3. 创建表格。

      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))")
      
    4. 插入数据。

      query = "INSERT INTO users (name, email) VALUES (%s, %s)"
      values = ("John Doe", "john@example.com")
      cursor.execute(query, values)
      conn.commit()
      
    5. 查询数据。

      cursor.execute("SELECT * FROM users")
      for (name, email) in cursor:print(f"Name: {name}, Email: {email}")
      

1.1.3 拓展案例 1:使用 Python 实现 MySQL 数据备份**

对于生产环境中的数据库,定期备份是一项重要的维护任务。我们可以使用 Python 脚本来自动化这个过程。

步骤

  1. 使用 subprocess 模块调用 mysqldump 工具。

    import subprocesssubprocess.run(["mysqldump", "-u", "username", "-p", "database_name", ">","backup.sql"])
    
  2. 可以将此脚本设置为定期执行,实现自动化备份。

1.1.4 拓展案例 2:使用 Python 分析 MySQL 数据

在这个案例中,我们将使用 Python 的 pandas 库从 MySQL 数据库中读取数据,并进行简单的数据分析。

步骤

  1. 安装 pandassqlalchemy

    pip install pandas sqlalchemy
    
  2. 读取数据并分析。

    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 是一个快速开始的好方法。

步骤

  1. 打开终端,安装 Homebrew(如果尚未安装)。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
  2. 使用 Homebrew 安装 MySQL。

    brew install mysql
    
  3. 启动 MySQL 服务。

    brew services start mysql
    
  4. 运行安全安装脚本。

    mysql_secure_installation
    
  5. 连接到 MySQL。

    mysql -u root -p
    

1.2.3 拓展案例 1:配置 MySQL 以优化 Mac OS 上的性能

开发者和数据库管理员经常需要调整 MySQL 配置,以优化本地环境中的性能。

步骤

  1. 找到 MySQL 的配置文件 my.cnf。如果不存在,请创建一个。

    nano /usr/local/etc/my.cnf
    
  2. 添加或修改以下配置,以优化性能(根据你的机器配置调整数值)。

    [mysqld]
    max_connections = 50
    innodb_flush_log_at_trx_commit = 1
    innodb_log_file_size = 128M
    query_cache_size = 0
    query_cache_type = 0
    
  3. 重启 MySQL 服务以应用更改。

    brew services restart mysql
    

1.2.4 拓展案例 2:使用 Python 连接到配置好的 MySQL 实例并创建一个数据库

一旦 MySQL 安装并配置好,下一步就是开始使用它了。这个案例将展示如何使用 Python 连接到 MySQL 并创建一个新的数据库。

步骤

  1. 确保安装了 mysql-connector-python

    pip install mysql-connector-python
    
  2. 使用 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 创建数据库和表,并插入数据

假设你需要为一个小型电商平台创建一个数据库,其中包含用户信息和订单信息。

步骤

  1. 连接到 MySQL。

    import mysql.connectorconn = mysql.connector.connect(host="localhost",user="root",password="yourpassword"
    )
    cursor = conn.cursor()
    
  2. 创建数据库 ecommerce

    cursor.execute("CREATE DATABASE ecommerce")
    cursor.execute("USE ecommerce")
    
  3. 创建 usersorders 表。

    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)
    )
    """)
    
  4. 插入数据到 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 执行数据查询操作

在电商平台数据库中查询特定用户的所有订单。

步骤

  1. 查询 Alice 的用户 ID。

    cursor.execute("SELECT id FROM users WHERE name = 'Alice'")
    user_id = cursor.fetchone()[0]
    
  2. 查询基于用户 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:更新和删除数据

修改特定订单的数量,然后删除一个用户。

步骤

  1. 更新订单数量。

    cursor.execute("UPDATE orders SET amount = 3 WHERE id = 1")
    conn.commit()
    
  2. 删除用户 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接口和服务的平台&#xff0c;促进生态系统的建设和业务拓展。本文将介绍开放平台技术架构的设计原则和实现方法&#xff0c;帮助读者了解如何构建一个稳健、安全且易于扩展的开放平台。 1. 什么是开放平台&#xff1f; - 解释了开放平台…...

飞桨自然语言处理框架 paddlenlp的 trainer

飞桨&#xff08;PaddlePaddle&#xff09;的NLP库PaddleNLP中的Trainer类是一个用于训练和评估模型的简单但功能完整的循环。它被优化用于与PaddleNLP一起使用。Trainer类简化了训练过程&#xff0c;提供了自动的批处理、模型保存、日志记录等特性。 以下是Trainer类的主要参数…...

SQL世界之命令语句Ⅲ

目录 一、SQL JOIN 1.JOIN 和 Key 2.使用 JOIN 3.不同的 SQL JOIN 二、SQL INNER JOIN 关键字 1.SQL INNER JOIN 关键字 2.INNER JOIN 关键字语法 3.内连接&#xff08;INNER JOIN&#xff09;实例 三、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&#xff0c;关于指令微调 Llama 2 的扩展说明。旨在聚焦构建指令数据集&#xff0c;有了它&#xff0c;我们则可以使用自己的指令来微调 Llama 2 基础模型。 目标是构建一个能够基于输入内容来生成指令的模型。这么做背后的逻辑是&#xff0c;模型如…...

VUE 全局设置防重复点击

请求后端防止重复点击&#xff0c;用户点击加入遮罩层&#xff0c;请求完毕关闭遮罩层 我们利用请求拦截器&#xff0c;在用户点击的时候&#xff0c;弹出遮罩层 本文采用i18n国际化 element plus UI&#xff0c;提取你想要的&#xff0c;这里不做简化 完整代码如下&#xf…...

备战蓝桥杯---动态规划(基础1)

先看几道比较简单的题&#xff1a; 直接f[i][j]f[i-1][j]f[i][j-1]即可&#xff08;注意有马的地方赋值为0&#xff09; 下面是递推循环方式实现的AC代码&#xff1a; #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协议&#xff08;因特网消息访问协议&#xff09;它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息&#xff0c;下载邮件等。它运行在TCP/IP协议之上&#xff0c;使用的端口是143。在php中调用的是imap_open函数。 PHP 的…...

Python爬虫实战:抓取猫眼电影排行榜top100#4

爬虫专栏系列&#xff1a;http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中&#xff0c;我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便&#xff0c;而且目前我们还没有系统学习 HTML 解析库&#xff0c;所以这里就…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...