MySQL学习系列(2)-每天学习10个知识

2023-09-20 22:05:44


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


1. INNER JOIN 和 ON 子句

INNER JOIN 用于合并两个或多个表中的数据,返回符合条件的行。ON 子句指定连接条件,即确定如何将表连接起来。INNER JOIN 和 ON 通常一起使用,以便根据指定的条件连接表。

SELECT customers.name, orders.order_number
FROM customers
INNER JOIN orders ON customers.id = orders.customer_id;

在上述示例中,INNER JOIN 用于连接 “customers” 表和 “orders” 表,ON 子句指定了连接条件,即 “customers.id” 等于 “orders.customer_id”。

2. 死锁

死锁是指两个或多个事务互相等待对方释放资源的情况,导致它们都无法继续执行。MySQL 使用锁机制来保护数据的完整性。当多个事务同时请求资源并且互相持有对方需要的资源时,可能会发生死锁。

MySQL 处理死锁的方法通常包括超时机制和死锁检测。当检测到死锁时,MySQL会选择一个事务作为死锁牺牲者,并回滚该事务,以释放资源,允许其他事务继续。

3. SELECT * 和 SELECT column1, column2

  • SELECT * FROM table_name:这将检索指定表中的所有列和所有行的数据。
  • SELECT column1, column2 FROM table_name:这将仅检索指定表中的列 “column1” 和 “column2” 的数据,而不检索其他列的数据。

使用 **SELECT * ** 会导致检索所有列的数据,可能浪费带宽和内存,而且不容易维护。因此,最好明确指定需要的列,以减小数据集的大小。

4. 数据库的视图

数据库的视图是虚拟表,其内容基于一个或多个实际表的查询结果。视图不存储数据,而是根据查询的定义动态生成结果。视图的作用包括:

  • 简化复杂的查询:将复杂的查询逻辑封装在视图中,以便用户可以轻松执行查询。
  • 数据安全性:通过视图,可以限制用户只能访问他们需要的数据,而不是整个表。
  • 数据抽象:视图可以隐藏底层表的细节,使用户更容易理解和使用数据。

5. MySQL的触发器类型

MySQL支持以下类型的触发器:

  • BEFORE INSERT:在插入数据之前触发。
  • AFTER INSERT:在插入数据之后触发。
  • BEFORE UPDATE:在更新数据之前触发。
  • AFTER UPDATE:在更新数据之后触发。
  • BEFORE DELETE:在删除数据之前触发。
  • AFTER DELETE:在删除数据之后触发。

触发器允许您在数据库中定义自动化操作,以响应特定的数据更改事件。

6. MySQL表的备份和恢复

备份MySQL表可以使用工具如mysqldump或通过复制数据文件来完成。要备份单个表,可以使用以下命令:

mysqldump -u username -p dbname tablename > table_backup.sql

要恢复备份的表,可以使用以下命令:

mysql -u username -p dbname < table_backup.sql

7. MySQL存储引擎

MySQL支持多种存储引擎,包括:

  • InnoDB:支持事务、外键和行级锁,适用于事务性应用。
  • MyISAM:不支持事务,但速度快,适用于只读或读写很少的应用。
  • MEMORY:将数据存储在内存中,速度非常快,但不持久。
  • CSV:用于读写CSV文件格式的数据。
  • ARCHIVE:用于存储大量归档数据。
  • 等等。

每种存储引擎都有其独特的特点和适用场景。

8. 索引优化

索引优化是通过创建适当的索引来提高数据库查询性能的过程。索引可以加速查询,特别是在大型表中。在MySQL中,优化索引是非常重要的,因为它可以大幅提高查询效率。

正确选择哪些列创建索引、使用合适的索引类型和定期维护索引都是索引优化的关键方面。

9. MySQL中的子查询

子查询是一个查询嵌套在另一个查询内部的查询。它可以用于WHERE子句、FROM子句和SELECT子句中。

例如,使用子查询来查找某个表中某个列的最大值:

SELECT column1
FROM table_name
WHERE column2 = (SELECT MAX(column2) FROM table_name);

10. 使用连接(JOIN)从多个表中检索数据

使用连接(JOIN),您可以从多个相关联的表中检索数据。例如,使用INNER JOIN连接两个表:

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

上述查询将检索包含订单ID和客户名称的数据,连接了 “orders” 表和 “customers” 表。

更多推荐

PCIE研究-1

PCI-Express(peripheralcomponentinterconnectexpress)是一种高速串行计算机扩展总线标准,PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。PCI

【大数据实训】基于Hadoop的2019年11月至2020年2月宁波天气数据分析(五)

博主介绍:✌全网粉丝6W+,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战✌🍅文末获取项目联系🍅基于Hadoop的2019年11月至2020年2月宁波天气数据分析2019—2020学年第二学期《分布式系统原理与技术》期

如何使用Java爬取指定链接的网页内容

在当今信息时代,互联网上的数据量庞大且不断增长。为了获取特定网页的内容,爬虫技术成为了一种非常有用的工具。本文将介绍如何使用Java编程语言来实现爬取指定链接的网页内容。首先,我们需要准备好Java开发环境。确保你已经安装了JavaDevelopmentKit(JDK)并配置好了环境变量。接下来,我们将使用Java提供

面向Java开发者的ChatGPT提示词工程(7)

在如今信息爆炸的时代,我们面临着海量的文字信息,很难抽出足够的时间去阅读所有感兴趣的内容。然而,大语言模型为我们提供了一种有效的解决方案:通过自动文本摘要,帮助我们快速获取文章的核心内容。这种技术已经被广泛应用于各种软件应用程序中。以ChatGPT为例,它提供了一个简洁的网页界面,让用户能够轻松地对文章进行摘要。这种方

关于C#.Net网页跳转的7种方法

一、目前在ASP.NET中页面传值共有这么几种方式:1.Response.Redirect("http://www.hao123.com",false);目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。跳转向新的页面,原窗口被代替。浏览器中的URL为新路径。Respons

运算符——“MySQL数据库”

各位CSDN的uu们好呀,今天,小雅兰的内容是MySQL数据库里面的操作符,下面,让我们进入操作符的世界吧!!!算术运算符比较运算符逻辑运算符位运算符运算符的优先级拓展:使用正则表达式查询算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/

您的开发团队是否面临效率陷阱?

“努力还是摸鱼?”这是一个职场老笑话了,当被问到这句话,人们往往回以礼貌一笑或单纯点头、做个鬼脸。这个笑话无伤大雅,但它总让人想起一个根深蒂固的观念:在工作时,我们必须时刻保持高效。在谷歌搜索“工作效率”,会弹出数百万结果,无论是关于自我提升的书籍,还是TED演讲,又或是提高工作效率的应用程序,比如“如何在工作中提高工

(10)(10.9) 术语表(三)

文章目录1Oilpan2OSD3PCB4PCM5PDB6PIC7PID8POI9PPM10PWM11PX4FMU/PX4IO12RTL13SiRFIII14Sketch15SVN16TelemetrySystem17Thermopile18UAV19VLOS20WAAS21Xbee22ZigBee1OilpanOilp

开学好用的电容笔有哪些推荐?平价触控笔推荐

尽管ApplePencil很贵,但是如果你有足够的预算的话,也可以考虑买一款。此外,iPad配备了一款电容笔,它不但能用于画画,也能用于记录笔记。苹果的原装电容笔,虽然功能强大,但是价格非常昂贵,而国产的平替型电容笔,无论是从手感上,还是从配置上,都能和苹果原装的Pencil相抗衡,最关键的是,价格只要一二百块钱。以下

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )

文章目录一、实用性增强-变量任意位置定义二、register关键字增强-自动进行寄存器优化一、实用性增强-变量任意位置定义C语言定义变量位置:在C语言中,函数作用域中使用到的变量,必须在作用域开始的位置定义,一旦开始编写代码逻辑后,在逻辑代码行之间,不能定义变量;新版本的C语言编译器不会报错,可以在逻辑代码之间定义变量

初识canvas

对于一个前端人员来说,canvas是必须掌握的技能之一。如果你想像画画一样在浏览器上作画,那么canvas就可以做你的画布。接下啦我们就以画画的标准来初步认识下canvas1.画布画画的第一步你得有一张画纸或者画布,canvas标签就是我们的画布。画布都是有尺寸的,如果你想要做大一点的画那就需要大一点的画布,反之也是,

热文推荐