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

目录

    • 1. INNER JOIN 和 ON 子句
    • 2. 死锁
    • 3. SELECT * 和 SELECT column1, column2
    • 4. 数据库的视图
    • 5. MySQL的触发器类型
    • 6. MySQL表的备份和恢复
    • 7. MySQL存储引擎
    • 8. 索引优化
    • 9. MySQL中的子查询
    • 10. 使用连接(JOIN)从多个表中检索数据


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

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

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


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” 表。

你可能感兴趣的:(MySQL学习,mysql,学习,android,数据库)