7天掌握SQL - 第三天:MySQL实践与索引优化

目录

  1. 安装MySQL
  2. 创建数据库和表结构
  3. SQL语句实操练习
  4. MySQL高级特性
  5. 索引设计与优化
  6. 总结

1. 安装MySQL

1.1 下载与安装

MySQL可以通过官方网站下载安装包。以下是安装MySQL的基本步骤:

  • 访问MySQL官方网站 MySQL Downloads。
  • 选择适合您操作系统的版本进行下载。
  • 安装MySQL,并在安装过程中设置root用户密码。
1.2 配置环境变量

确保MySQL的bin目录被添加到系统的环境变量中,以便在命令行中直接使用mysql命令。

2. 创建数据库和表结构

2.1 创建数据库
CREATE DATABASE mydatabase;
2.2 创建表结构
USE mydatabase;CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,first_name VARCHAR(50),last_name VARCHAR(50),position VARCHAR(100),hire_date DATE,salary DECIMAL(10, 2)
);

3. SQL语句实操练习

3.1 数据查询
SELECT * FROM employees;
3.2 数据插入
INSERT INTO employees (first_name, last_name, position, hire_date, salary) 
VALUES ('John', 'Doe', 'Developer', '2024-01-01', 70000.00);
3.3 数据更新
UPDATE employees 
SET salary = salary * 1.10
WHERE id = 1;
3.4 数据删除
DELETE FROM employees WHERE id = 1;

4. MySQL高级特性

4.1 视图
CREATE VIEW high_earners AS
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 50000;
4.2 存储过程
DELIMITER //
CREATE PROCEDURE AddEmployee(IN fname VARCHAR(50),IN lname VARCHAR(50),IN pos VARCHAR(100),IN hired DATE,IN sal DECIMAL(10, 2)
)
BEGININSERT INTO employees (first_name, last_name, position, hire_date, salary)VALUES (fname, lname, pos, hired, sal);
END //
DELIMITER ;
4.3 触发器
DELIMITER //
CREATE TRIGGER AfterEmployeeInsert
AFTER INSERT ON employees
FOR EACH ROW
BEGININSERT INTO employee_audit (employee_id, action, action_date)VALUES (NEW.id, 'INSERT', NOW());
END //
DELIMITER ;

5. 索引设计与优化

5.1 设计合理的索引

索引可以显著提高查询性能,但过多的索引会降低插入和更新的性能。以下是创建索引的示例:

CREATE INDEX idx_lastname ON employees(last_name);
5.2 分析查询执行计划

使用EXPLAIN关键字来分析查询的执行计划:

EXPLAIN SELECT * FROM employees WHERE last_name = 'Doe';

6. 总结

在今天的学习中,我们安装并使用了MySQL作为实践平台,学习了如何创建数据库和表结构,并通过编写SQL语句进行了实操练习。我们还探索了MySQL的高级特性,包括视图、存储过程和触发器。最重要的是,我们学习了如何设计合理的索引,并分析查询执行计划以优化SQL查询。

通过今天的学习,你应该能够:

  • 安装并配置MySQL。
  • 创建和管理数据库及表结构。
  • 执行基本的SQL操作,如查询、插入、更新和删除。
  • 理解和使用MySQL的高级特性。
  • 设计和优化索引以提高查询性能。

请确保在实际环境中实践这些概念,因为实践是掌握SQL的关键。记住,索引是提高查询性能的重要工具,但它们也需要谨慎使用,以避免对数据修改操作产生负面影响。

希望今天的学习对你有所帮助,明天我们将继续深入学习SQL的其他高级主题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476045.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.04升级glibc升级及降级的心路历程

想使用pip安装Isaac Sim,无奈此方法只支持 GLIBC>2.34 。使用的是Ubuntu20.04,使用 ldd --version 查看GLIBC版本,如果版本低于 2.34 则需要升级GLIBC,基于此开始了长达一天的尝试。 请注意,升级GLIBC是一个危险操作…

uniapp实现开发遇到过的问题(持续更新中....)

1. 在ios模拟器上会出现底部留白的情况 解决方案: 在manifest.json文件,找到开源码视图配置,添加如下: "app-plus" : {"safearea":{"bottom":{"offset" : "none" // 底部安…

Electron开发构建工具electron-vite(alex8088)添加VueDevTools(VitePlugin)

零、介绍 本文章的electron-vite指的是这个项目👉electron-vite仓库,electron-vite网站 本文章的VueDevTools指的是VueDevTools的Vite插件版👉https://devtools.vuejs.org/guide/vite-plugin 一、有一个用electron-vite创建的项目 略 二、…

机器学习基础05_随机森林线性回归

一、随机森林 机器学习中有一种大类叫集成学习(Ensemble Learning),集成学习的基本思想就是将多个分类器组合,从而实现一个预测效果更好的集成分类器。集成算法大致可以分为:Bagging,Boosting 和 Stacking…

Linux驱动开发(9):pinctrl子系统和gpio子系统--led实验

在前面章节,我们有过使用寄存器去编写字符设备的经历了。这种直接在驱动代码中, 通过寄存器映射来对外设进行使用的编程方式,从驱动开发者的角度可以说是灾难。 因为每当芯片的寄存器发生了改动,那么底层的驱动几乎得重写。 那么…

23种设计模式速记法

前言 在软件开发的过程中,设计模式作为解决常见问题的通用模板,一直是开发者的重要工具。尤其是在面临复杂系统架构和需求变化时,设计模式不仅能够提升代码的可复用性和扩展性,还能大大提高团队之间的协作效率。然而,…

IntelliJ+SpringBoot项目实战(十二)--设计项目多模块依赖关系和跨模块调用服务和接口

在非微服务的项目中,一个应用里有多个子系统,例如在一个电商系中,有系统管理子系统、内容管理子系统和电商管理子系统,我们想实现这样的效果: (1)只需要启动一个SpringBoot应用,不需…

MACOS开发、使用常见问题汇总

MACOS常见问题 本文记录使用macos遇到的常见问题,后面会持续更新,觉得有用的可以收藏一下。 打不开xxx.app,因为它来自身份不明的开发者解决方法(开启任何来源) 打开终端(Terminal)程序 拷贝sudo spctl --master-di…

【实用数据】上市公司数字化转型双重差分准自然实验数据(2007-2022年)

测算方式: 参考《管理评论》丁相安(2024)老师研究的做法,企业分批逐步推动自身数字化转型是一个很好的准自然实验,这符合双重差分法的使用情境。 因此,本文使用多时点双重差分模型(&#xff24…

PostgreSQL常用字符串函数与示例说明

文章目录 coalesce字符串位置(position strpos)字符串长度与大小写转换去掉空格(trim ltrim rtrim)字符串连接(concat)字符串替换简单替换(replace)替换指定位置长度(overlay)正则替换(regexp_replace) 字符串匹配字符串拆分split_part(拆分数组取指定位置的值)string_to_array…

一次需升级系统的wxpython安装(macOS M1)

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法

目录 一、工程配置 二、软件代码 1、软件代码 2、usart.h 3、usart.c 4、rtc.c 三、运行与调试 1、合规的指令 2、proBuffer[0]不是 ‘#’ 或proBuffer[4]不是 ‘;’ 3、指令长度小于5 4、proBuffer[2]或proBuffer[3]至少一个不是数字 5、; 位于proBuffer…

离散数学---概率, 期望

本文根据 MIT 计算机科学离散数学课程整理(Lecture 22 ~ Lecture 24)。 1 非负整数期望性质 用 N 表示非负整数集合,R 是 N 上的随机变量,则 R 的期望可以表示成: 证明: 换一个形式,把每一列…

AI一键生成原创花卉印花图案——创新与效率的结合

引言 在时尚界,印花图案一直是设计师们表达创意和个性的重要手段。随着人工智能技术的发展,AI在设计领域的应用越来越广泛,其中就包括了一键生成原创花卉印花图案。本文将探讨AI如何帮助设计师们提高效率,同时保持设计的创新性和…

QT实操中遇到的一些(C++)疑惑点汇总

QT实操中 遇到的一些C疑惑点汇总 1.实例化对象的两种方法及其访问方式 1.1 示例 1.2 总结 2.基类成员的访问 2.1 直接访问继承的基类成员 2.1.1示例代码 2.1.2 输出结果 2.2 使用作用域解析符来显式调用基类成员函数 2.2.1 示例代码 2.2.2 输出结果 2.3 使用 this 指针访问基类…

图形学笔记 - 4. 几何 -网格操作和阴影映射

文章目录 网格操作:几何处理细分Loop细分Catmull-Clark细分(一般网格)网格简化 阴影 Shadows可视化阴影映射阴影映射阴影贴图的问题 网格操作:几何处理 网格细分网格简化网格正则化 网格细分(上采样) 网…

OBOO鸥柏车载广告屏:28.6寸液晶一体机的技术革新与应用前景

在数字化迅速发展的今天,OBOO鸥柏推出的28.6寸车载长条形液晶广告屏一体机成为了市场的一大亮点。这款产品不仅具有超窄边框的高亮设计,还利用异形激光切割技术,支持多种形状如圆形、方形及三角形展示,极大地提升了商用和工业屏幕…

Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系

参考spring-cloud-alibaba github wiki说明:版本说明 下面截取说明: 2022.x 分支 2021.x 分支 2.2.x 分支 组件版本关系

Springboot + vue 健身房管理系统项目部署

1、前言 ​ 许多人在拿到 Spring Boot 项目的源码后,不知道如何运行。我以 Spring Boot Vue 健身房管理系统的部署为例,详细介绍一下部署流程。大多数 Spring Boot 项目都可以通过这种方式部署,希望能帮助到大家。 ​ 2、项目查看 ​ 首…

SOL链上的 Meme 生态发展:从文化到创新的融合#dapp开发#

一、引言 随着区块链技术的不断发展,Meme 文化在去中心化领域逐渐崭露头角。从 Dogecoin 到 Shiba Inu,再到更多细分的 Meme 项目,这类基于网络文化的加密货币因其幽默和社区驱动力吸引了广泛关注。作为近年来备受瞩目的区块链平台之一&…