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

MySQL学习大纲

了解 MySQL 的基础知识和命令是使用此数据库的前提。以下是一些必须了解的 MySQL 概念和命令,包括基础的 CRUD(创建,读取,更新,删除)操作,以及一些高级功能:

1. 安装和启动

  • 命令
    sudo apt-get install mysql-server
    sudo service mysql start
    
  • 解析
    这些命令在基于 Debian 的系统上安装 MySQL 服务器,并启动服务。

2. 登录数据库

  • 命令
    mysql -u root -p
    
  • 解析
    使用 root 用户登录 MySQL 数据库。系统将提示您输入密码。

3. 数据库操作

a) 创建数据库
  • 命令
    CREATE DATABASE mydatabase;
    
  • 解析
    创建一个名为 “mydatabase”的新数据库。
b) 选择数据库
  • 命令
    USE mydatabase;
    
  • 解析
    选择先前创建的 “mydatabase” 数据库以进行进一步操作。
c) 查看所有数据库
  • 命令
    SHOW DATABASES;
    
  • 解析
    列出服务器上存在的所有数据库。

4. 表操作

a) 创建表
  • 命令
    CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(100)
    );
    
  • 解析
    在当前数据库中创建一个名为“users”的新表,包含 id、name 和 email 列。
b) 查看所有表
  • 命令
    SHOW TABLES;
    
  • 解析
    列出当前数据库中存在的所有表。
c) 查看表结构
  • 命令
    DESCRIBE users;
    
  • 解析
    显示“users”表的结构,包括列名、数据类型等。

5. 记录操作

a) 插入记录
  • 命令
    INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com');
    
  • 解析
    在“users”表中插入一条新记录。
b) 查询记录
  • 命令
    SELECT * FROM users;
    
  • 解析
    从“users”表中检索所有记录。
c) 更新记录
  • 命令
    UPDATE users SET email = 'john.new@example.com' WHERE name = 'John Doe';
    
  • 解析
    更新“users”表中特定记录的 email 地址。
d) 删除记录
  • 命令
    DELETE FROM users WHERE name = 'John Doe';
    
  • 解析
    从“users”表中删除特定的记录。

6. 索引

  • 命令
    CREATE INDEX idx_users_name ON users(name);
    
  • 解析
    在“users”表的 name 列上创建索引,以加快查询速度。

7. 用户和权限

a) 创建用户
  • 命令
    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    
  • 解析
    创建一个新的 MySQL 用户并设置密码。
b) 授予权限
  • 命令
    GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
    
  • 解析
    授予新用户访问特定数据库的所有权限。

8. 备份与恢复

a) 备份数据库
  • 命令
    mysqldump -u root -p mydatabase > mydatabase.sql
    
  • 解析
    将特定数据库备份到 SQL 文件。
b) 恢复数据库
  • 命令
    mysql -u root -p mydatabase < mydatabase.sql
    
  • 解析
    从 SQL 文件恢复数据库。

9. 优化与维护

a) 优化表
  • 命令
    OPTIMIZE TABLE users;
    
  • 解析
    优化特定表以回收未使用的空间,并改善性能。
b) 检查表
  • 命令
    CHECK TABLE users;
    
  • 解析
    检查表的完整性,查找错误。

这些基础知识和命令是入门 MySQL 的基础,但 MySQL 还有更多高级功能和优化技术,值得深入学习和了解。

1. 分区表

  • 命令
    CREATE TABLE employees (id INT,name VARCHAR(50),hired DATE
    )
    PARTITION BY RANGE( YEAR(hired) ) (PARTITION p0 VALUES LESS THAN (1991),PARTITION p1 VALUES LESS THAN (1999),PARTITION p2 VALUES LESS THAN MAXVALUE
    );
    
  • 解析
    这个命令创建了一个分区表,根据“hired”列的年份值将数据分成不同的部分。这可以优化查询性能,尤其是在处理大量数据时。

2. 子查询

  • 命令
    SELECT name FROM employees WHERE id IN (SELECT id FROM department WHERE name = 'HR');
    
  • 解析
    这个命令执行了一个子查询,查找属于HR部门的所有员工的名字。子查询可以用于构建更复杂的查询。

3. 视图

  • 命令
    CREATE VIEW hr_employees AS SELECT name FROM employees WHERE department = 'HR';
    
  • 解析
    这个命令创建了一个视图,列出了所有属于HR部门的员工。视图是基于SQL查询的虚拟表,可用于简化复杂的查询。

4. 存储过程

  • 命令
    DELIMITER //
    CREATE PROCEDURE GetEmployeeCount(IN dept_name VARCHAR(50), OUT count INT)
    BEGINSELECT COUNT(*) INTO count FROM employees WHERE department = dept_name;
    END //
    DELIMITER ;
    CALL GetEmployeeCount('HR', @count);
    SELECT @count;
    
  • 解析
    这个命令定义了一个存储过程,用于获取特定部门的员工数量。存储过程是存储在数据库中的一组SQL语句,可以通过单个调用来执行。

5. 触发器

  • 命令
    DELIMITER //
    CREATE TRIGGER before_employee_update
    BEFORE UPDATE ON employees
    FOR EACH ROW
    BEGINSET NEW.updated_at = NOW();
    END; //
    DELIMITER ;
    
  • 解析
    这个命令创建了一个触发器,在每次更新“employees”表之前自动设置“updated_at”字段。触发器可以用于自动执行数据库操作。

6. 事务

  • 命令
    START TRANSACTION;
    UPDATE account SET balance = balance - 100 WHERE name = 'John';
    UPDATE account SET balance = balance + 100 WHERE name = 'Jane';
    COMMIT;
    
  • 解析
    这个命令执行了一个事务,将一笔金额从John的账户转到Jane的账户。事务可以确保一组操作的原子性,要么全部成功,要么全部失败。

7. 索引优化

  • 命令
    ALTER TABLE employees ADD INDEX idx_department (department);
    
  • 解析
    通过为经常用于搜索和排序的列添加索引,可以显著提高查询性能。

8. 查询缓存

  • 解析
    MySQL有内建的查询缓存。当启用查询缓存时,MySQL会存储SELECT查询的结果,当收到完全相同的查询时,它会从缓存中直接返回结果,而不是重新执行查询。

9. 性能分析

  • 命令
    EXPLAIN SELECT * FROM employees WHERE department = 'HR';
    
  • 解析
    使用EXPLAIN命令,可以看到MySQL是如何执行查询的,这对于优化查询性能非常有用。

10. 数据库归档

  • 解析
    为了提高性能和管理大量数据,您可以定期归档旧的数据记录。

11. 全文搜索

  • 命令
    ALTER TABLE articles ADD FULLTEXT(title, content);
    SELECT * FROM articles WHERE MATCH(title, content) AGAINST('keyword');
    
  • 解析
    MySQL 支持对 CHAR、VARCHAR 和 TEXT 列执行全文搜索。全文索引可用于快速查找包含特定单词或短语的记录。

12. 外键和参照完整性

  • 命令
    ALTER TABLE orders ADD FOREIGN KEY (customer_id) REFERENCES customers(id);
    
  • 解析
    外键用于确保表之间的数据完整性。在这个例子中,orders 表中的 customer_id 列被定义为 customers 表中 id 列的外键。

13. 事件调度器

  • 命令
    SET GLOBAL event_scheduler = ON;
    CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DOUPDATE mytable SET mycolumn = mycolumn + 1;
    
  • 解析
    事件调度器用于定时执行数据库命令或操作。这个例子中,一个事件被创建来在一个小时后更新表中的一个列。

14. 表空间和分区管理

  • 解析
    表空间允许您管理数据库的物理结构。分区可以将一个物理表分割成多个小的子表,这可以优化大表的查询性能。

15. 在线DDL操作

  • 命令
    ALTER TABLE tablename ADD COLUMN newcol INT, ALGORITHM=INPLACE, LOCK=NONE;
    
  • 解析
    在线 DDL 操作允许您在不阻塞对现有表的访问的情况下,修改表的结构。

16. 窗口函数

  • 命令
    SELECT name, salary, AVG(salary) OVER(PARTITION BY department) as avg_salary_department
    FROM employees;
    
  • 解析
    窗口函数允许您在每行的基础上执行计算,这在计算聚合值时特别有用,例如每个部门的平均工资。

17. Common Table Expressions (CTE)

  • 命令
    WITH cte_name AS (SELECT department, AVG(salary) as avg_salaryFROM employeesGROUP BY department
    )
    SELECT * FROM cte_name;
    
  • 解析
    CTE 提供了定义临时结果集的方法,这个结果集可以在一个 SELECT、INSERT、UPDATE 或 DELETE 查询中引用。

18. 优化器

  • 解析
    MySQL 查询优化器会自动选择最有效的查询执行计划。您可以使用提示和索引来影响优化器的决策,以及使用 EXPLAIN 命令来查看优化器的选择。

19. 资源组

  • 命令
    CREATE RESOURCE GROUP rg1
    TYPE = USER
    VCPU = 2,4
    PRIORITY = 10;
    
  • 解析
    资源组允许您将系统资源分配给特定的查询,以便在多租户环境中管理工作负载。

这些是 MySQL 的一些额外高级功能和优化技术,这些功能和技术有助于高效地管理和查询数据库。

相关文章:

MySQL学习大纲

了解 MySQL 的基础知识和命令是使用此数据库的前提。以下是一些必须了解的 MySQL 概念和命令&#xff0c;包括基础的 CRUD&#xff08;创建&#xff0c;读取&#xff0c;更新&#xff0c;删除&#xff09;操作&#xff0c;以及一些高级功能&#xff1a; 1. 安装和启动 命令su…...

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…...

驱动开发练习,platform实现如下功能

实验要求 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of_gpio.h> #include <linux/unistd.h> #include <linux/interrupt…...

QT之QString的用法介绍

QT之QString的用法介绍 成员函数常见用法 成员函数 1&#xff09;QString &append(const QString &str) 将 str 字符串追加到当前字符串末尾&#xff0c;并返回修改后的 QString 对象的引用。 2&#xff09;QString &prepend(const QString &str) 将 str 字符…...

基于Java+SpringBoot+Vue3+Uniapp前后端分离考试学习一体机设计与实现2.0版本(视频讲解,已发布上线)

博主介绍&#xff1a;✌全网粉丝4W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…...

springboot 获取参数

1.获取简单参数 2.实体对象参数...

【笔记】离线Ubuntu20.04+mysql 5.7.36 + xtrabackup定时增量备份脚本

一、环境 ● Ubuntu版本查看 lsb_release -a● mysql 版本查看 mysql --version我的是ubuntu 20.04&#xff0c;mysql是5.7.36&#xff0c;所以要用 install_percona-xtrabackup-24 二、原理 备份 通过ubuntu自带的定时器运行增量备份脚本备份文件可以存储在映射后的其他…...

树哈希与换根dp:CF763D

采用的树哈希函数是&#xff1a; d p x w x ∑ y ∈ x d p y 2 w x 2 \Large dp_xw_x\times \sum_{y\in x}dp_y^2w_x^2 dpx​wx​y∈x∑​dpy2​wx2​ 发现从 x x x 到 y y y 时只有 x x x 与 y y y 的哈希值会变化&#xff0c;分别维护即可 #include<bits/stdc.h&…...

npm、yarn、pnpm如何清除缓存?

前端工程化创建项目会经常使用各种安装包管理工具&#xff0c;安装各种前端依赖包。例如&#xff0c;npm、yarn、pnpm等。时间一长&#xff0c;各种安装包管理工具的在安装依赖时&#xff0c;留下的缓存文件就会变得很大&#xff0c;以至于影响系统的运行&#xff0c;因此必要时…...

12款最火的AI画图软件,助你探索创新设计

ChatGPT火爆出圈&#xff0c;AI画图软件也如雨后春笋般流行起来。各类AI画图的软件工具横空出世&#xff0c;设计师与其焦虑工作会不会被人工智能取代&#xff0c;不如践行“工欲善其事必先利其器”&#xff0c;开拓思路&#xff0c;打开格局&#xff0c;好好地探索下如何利用好…...

cookie信息无法获取问题研究

背景 在oneapi这个前后端都有的开源项目中&#xff0c;我想接入chatnextweb到oneapi的后端。 由于需要二开chatnextweb&#xff0c;添加登录注册功能&#xff0c;考虑到java后端的性能问题和内存占用&#xff0c;决定不重启写个服务&#xff0c;而是将登录注册接入到oneapi的…...

Linux:冯诺依曼系统和操作系统的概念

文章目录 冯诺依曼体系结构冯诺依曼体系的理解 操作系统操作系统的基本定位操作系统的理解1 操作系统的理解2总结 本篇主要总结的是操作系统的基本认知和一些概念 冯诺依曼体系结构 那么上图表示的就是冯诺依曼体系结构&#xff0c;那这个体系结构是什么&#xff1f;为什么要先…...

【操作系统笔记十一】进程间通信

Linux文件系统 inode 节点 &#xff08;index node&#xff09;&#xff1a;给每个文件赋予一个称为 i 节点的数据结构。 inode 一开始是存储在硬盘中的&#xff0c;只有当文件被打开的时候&#xff0c;其对应的 i 节点才加载到内存中。 总结&#xff1a; Linux 中&#xff0c…...

【操作系统】聊聊Linux软中断

什么是中断 中断是系统用来响应硬件设备请求的一种机制&#xff0c;会打断进程的正常调度和执行&#xff0c;转而去执行内核中的中断处理程序。 比如你正在看书&#xff0c;你女朋友叫你出去逛街。你就需要先放下手里的事情&#xff0c;然后逛街。回来之后&#xff0c;在接着看…...

公众号迁移个人可以迁移吗?

公众号账号迁移的作用是什么&#xff1f;只能变更主体吗&#xff1f;很多小伙伴想做公众号迁移&#xff0c;但是不知道公众号迁移有什么作用&#xff0c;今天跟大家具体讲解一下。首先公众号迁移最主要的就是修改公众号的主体了&#xff0c;比如我们公众号原来是A公司的&#x…...

全国职业技能大赛云计算--高职组赛题卷⑤(容器云)

全国职业技能大赛云计算--高职组赛题卷⑤&#xff08;容器云&#xff09; 第二场次题目&#xff1a;容器云平台部署与运维任务2 基于容器的web应用系统部署任务&#xff08;15分&#xff09;任务3 基于容器的持续集成部署任务&#xff08;15分&#xff09;任务4 Kubernetes容器…...

支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答

很多投资者都知道&#xff0c;Renko图表和普通日本烛台都会采用相同的交易信号&#xff0c;即支撑位和阻力位。那么支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答。 这些信号在任何时间框架上都会出现&#xff0c;且在蜡烛图交易中颇受欢迎。对于Renko图表而言…...

如何在32位MCU用printf()函数打印64位数据

1. 在32位MCU上定义64位变量&#xff1a; unsigned long long time_base; unsigned long long temp_time;2. 调用打印函数&#xff1a; printf("RFID:time_base:%d\r\n",time_base); printf("RFID:temp_time:%d\r\n",temp_time); printf("RFID:Ru…...

Python爬虫程序设置代理常见错误代码及解决方法

Python爬虫程序设置代理是爬虫程序中常用的技巧&#xff0c;可以有效地绕过IP限制&#xff0c;提高爬虫程序的稳定性和效率。然而&#xff0c;在设置代理时&#xff0c;常会出现各种错误代码&#xff0c;这些错误代码可能会影响程序的正常运行&#xff0c;甚至导致程序崩溃。本…...

3D点云目标检测:Centerformer训练waymo数据集

一、环境准备 项目地址:centerformer 1.0、基础环境 python 3.8.0 torch 1.9.1cu111 waymo-open-dataset-tf-2-6-0 1.4.9 spconv 1.2.1 其余按照requirement.txt里安装就行 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt由于我本人是在…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...