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 概念和命令,包括基础的 CRUD(创建,读取,更新,删除)操作,以及一些高级功能: 1. 安装和启动 命令su…...
【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1(HiDataPlus)
🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文…...
驱动开发练习,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)QString &append(const QString &str) 将 str 字符串追加到当前字符串末尾,并返回修改后的 QString 对象的引用。 2)QString &prepend(const QString &str) 将 str 字符…...
基于Java+SpringBoot+Vue3+Uniapp前后端分离考试学习一体机设计与实现2.0版本(视频讲解,已发布上线)
博主介绍:✌全网粉丝4W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
springboot 获取参数
1.获取简单参数 2.实体对象参数...
【笔记】离线Ubuntu20.04+mysql 5.7.36 + xtrabackup定时增量备份脚本
一、环境 ● Ubuntu版本查看 lsb_release -a● mysql 版本查看 mysql --version我的是ubuntu 20.04,mysql是5.7.36,所以要用 install_percona-xtrabackup-24 二、原理 备份 通过ubuntu自带的定时器运行增量备份脚本备份文件可以存储在映射后的其他…...
树哈希与换根dp:CF763D
采用的树哈希函数是: 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 dpxwxy∈x∑dpy2wx2 发现从 x x x 到 y y y 时只有 x x x 与 y y y 的哈希值会变化,分别维护即可 #include<bits/stdc.h&…...
npm、yarn、pnpm如何清除缓存?
前端工程化创建项目会经常使用各种安装包管理工具,安装各种前端依赖包。例如,npm、yarn、pnpm等。时间一长,各种安装包管理工具的在安装依赖时,留下的缓存文件就会变得很大,以至于影响系统的运行,因此必要时…...
12款最火的AI画图软件,助你探索创新设计
ChatGPT火爆出圈,AI画图软件也如雨后春笋般流行起来。各类AI画图的软件工具横空出世,设计师与其焦虑工作会不会被人工智能取代,不如践行“工欲善其事必先利其器”,开拓思路,打开格局,好好地探索下如何利用好…...
cookie信息无法获取问题研究
背景 在oneapi这个前后端都有的开源项目中,我想接入chatnextweb到oneapi的后端。 由于需要二开chatnextweb,添加登录注册功能,考虑到java后端的性能问题和内存占用,决定不重启写个服务,而是将登录注册接入到oneapi的…...
Linux:冯诺依曼系统和操作系统的概念
文章目录 冯诺依曼体系结构冯诺依曼体系的理解 操作系统操作系统的基本定位操作系统的理解1 操作系统的理解2总结 本篇主要总结的是操作系统的基本认知和一些概念 冯诺依曼体系结构 那么上图表示的就是冯诺依曼体系结构,那这个体系结构是什么?为什么要先…...
【操作系统笔记十一】进程间通信
Linux文件系统 inode 节点 (index node):给每个文件赋予一个称为 i 节点的数据结构。 inode 一开始是存储在硬盘中的,只有当文件被打开的时候,其对应的 i 节点才加载到内存中。 总结: Linux 中,…...
【操作系统】聊聊Linux软中断
什么是中断 中断是系统用来响应硬件设备请求的一种机制,会打断进程的正常调度和执行,转而去执行内核中的中断处理程序。 比如你正在看书,你女朋友叫你出去逛街。你就需要先放下手里的事情,然后逛街。回来之后,在接着看…...
公众号迁移个人可以迁移吗?
公众号账号迁移的作用是什么?只能变更主体吗?很多小伙伴想做公众号迁移,但是不知道公众号迁移有什么作用,今天跟大家具体讲解一下。首先公众号迁移最主要的就是修改公众号的主体了,比如我们公众号原来是A公司的&#x…...
全国职业技能大赛云计算--高职组赛题卷⑤(容器云)
全国职业技能大赛云计算--高职组赛题卷⑤(容器云) 第二场次题目:容器云平台部署与运维任务2 基于容器的web应用系统部署任务(15分)任务3 基于容器的持续集成部署任务(15分)任务4 Kubernetes容器…...
支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答
很多投资者都知道,Renko图表和普通日本烛台都会采用相同的交易信号,即支撑位和阻力位。那么支撑位和阻力位在Renko和烛台图如何使用?FPmarkets澳福3秒回答。 这些信号在任何时间框架上都会出现,且在蜡烛图交易中颇受欢迎。对于Renko图表而言…...
如何在32位MCU用printf()函数打印64位数据
1. 在32位MCU上定义64位变量: unsigned long long time_base; unsigned long long temp_time;2. 调用打印函数: printf("RFID:time_base:%d\r\n",time_base); printf("RFID:temp_time:%d\r\n",temp_time); printf("RFID:Ru…...
Python爬虫程序设置代理常见错误代码及解决方法
Python爬虫程序设置代理是爬虫程序中常用的技巧,可以有效地绕过IP限制,提高爬虫程序的稳定性和效率。然而,在设置代理时,常会出现各种错误代码,这些错误代码可能会影响程序的正常运行,甚至导致程序崩溃。本…...
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由于我本人是在…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果。…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
