mysql基础 新手必须掌握 附上进阶知识和注意事项

  1. 数据类型

    • INT:整数类型。
    • VARCHAR:可变长度字符串。
    • TEXT:用于存储大量文本。
    • DATE:日期类型。
    • DATETIME:日期和时间类型。
    • FLOAT 和 DOUBLE:浮点数类型。
    • DECIMAL:用于存储精确的小数。
  2. 索引

    • 索引可以提高查询效率,但会降低插入和更新的速度。
    • 可以使用 CREATE INDEX 语句创建索引。
    • 可以使用 ALTER TABLE 添加或删除索引。
  3. 查询优化

    • 使用 EXPLAIN 关键字来分析查询语句的执行计划。
    • 避免在 WHERE 子句中使用函数,因为这可能导致索引失效。
    • 使用 JOIN 而不是子查询来优化关联查询。
  4. 备份与恢复

    • 可以使用 mysqldump 工具进行数据库备份。
    • 可以使用 mysql 命令行工具恢复备份。
  5. 权限管理

    • 使用 GRANT 和 REVOKE 语句来管理用户权限。
    • 可以使用 FLUSH PRIVILEGES 来重新载入权限表。
  6. 字符集和校对规则

    • 可以设置数据库、表和列的字符集和校对规则。
    • 常用的字符集包括 utf8 和 utf8mb4
  7. 视图

    • 视图是基于 SQL 语句的结果集的可视化表。
    • 可以使用 CREATE VIEW 创建视图。
  8. 触发器

    • 触发器是一种特殊的存储过程,它会在插入、更新或删除操作之前或之后自动执行。
    • 可以使用 CREATE TRIGGER 创建触发器。
  9. 分区

    • 分区可以将大型表和索引分割成更小、更易管理的部分。
    • 可以使用 PARTITION BY 子句来创建分区表,

1. 连接到MySQL服务器

首先,你需要使用MySQL客户端工具连接到MySQL服务器。如果你使用的是命令行,可以使用以下命令:

mysql -u username -p

这里的 username 是你的MySQL用户名。输入该命令后,系统会提示你输入密码。

2. 创建数据库

连接到MySQL服务器后,你可以使用 CREATE DATABASE 语句来创建一个新的数据库。例如,如果你想创建一个名为 mydatabase 的数据库,可以使用以下命令:

CREATE DATABASE mydatabase;

3. 选择数据库

创建数据库后,你需要选择(或称为“使用”)这个数据库,以便在其中创建表和执行其他操作。使用以下命令:

USE mydatabase;

4. 创建表

在数据库中,你可以创建表来存储数据。例如,创建一个名为 users 的表,包含 idnameemail 字段:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(100) NOT NULL
);

5. 查看数据库和表

你可以使用以下命令来查看所有数据库:

SHOW DATABASES;

以及查看当前数据库中的所有表:

SHOW TABLES;

6. 插入数据

users 表中插入数据:

INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]');

7. 查询数据

users 表中查询数据:

SELECT * FROM users;

8. 更新数据

更新 users 表中的数据:

UPDATE users SET email = '[email protected]' WHERE id = 1;

9. 删除数据

users 表中删除数据:

DELETE FROM users WHERE id = 1;

10. 删除数据库

如果你想要删除数据库,可以使用以下命令:

DROP DATABASE mydatabase;

注意: DROP DATABASE 是一个危险的操作,它会删除数据库及其包含的所有数据。

还有一些mysql进阶知识

1. 索引优化

  • 索引底层原理:MySQL的索引通常是基于B+树构建的,数据和索引是一起存储的,这称为Index organized(数据即索引,索引即数据)。索引可以加快检索速度,但会增加维护索引树的工作,增大表空间,同时影响表的插入和修改性能。
  • 索引的运用:包括全值精准匹配、匹配左边的列、匹配列前缀、匹配范围值、排序、分组、覆盖索引等操作。
  • 索引优化实践:在生产实践中,应考虑所有查询方式后创建合适的联合索引,而不是为每个字段单独创建二级索引。范围查询的字段应放在索引的最后,因为它们会破坏索引的有序性。
  • 索引覆盖:查询的列如果都在索引中,就不需要回表查询,这称为覆盖索引,可以提高查询效率。
  • 索引合并:MySQL可以对多个索引进行条件扫描,然后将结果进行合并,这称为索引合并。
  • 索引下推:MySQL 5.6引入的特性,可以在存储引擎层面进行部分WHERE条件的过滤,减少回表次数,提高查询效率。

2. 存储引擎选择

  • InnoDB和MyISAM对比:InnoDB支持事务、行级锁,适合需要事务支持和高并发的场景;MyISAM不支持事务和外键,查询速度快,适合读密集型应用。
  • Memory存储引擎:利用内存创建表,访问速度快,但数据容易丢失,适用于缓存场景。

3. 查询缓存

  • 查询缓存的使用:MySQL提供的内部内存缓存系统,用于缓存SELECT语句结果。但数据表的数据发生变化时,缓存会失效。

4. 架构优化

  • 分布式部署:对于高并发场景,使用分布式架构提高系统性能和扩展性。
  • 读写分离:通过主从复制和读写分离减轻主数据库服务器的压力。

5. SQL分析与优化

  • 慢查询优化:通过开启慢日志和分析慢日志来优化SQL性能。
  • EXPLAIN执行计划:使用EXPLAIN关键字分析查询语句的执行计划,优化查询效率。

6. 表结构设计

  • 字段优化:合理选择数据类型,避免过多列,使用适当的范式,垂直分割等。
  • 表分区:对于数据量过大的表,可以通过水平分表和分区表来优化查询性能。

7. 事务和锁机制优化

  • 减少锁竞争:尽量使用行锁而非表锁,减少锁范围,减少事务执行时间。

8. 高级查询优化

  • 查询重写:通过重构SQL查询来提高效率,包括消除不必要的子查询、简化复杂的连接操作和优化WHERE子句中的条件。
  • 执行计划分析:使用MySQL提供的工具来检查查询执行计划,识别瓶颈、非最优连接方法或缺失的索引。

使用mysql注意项

1. 安全性

  • 权限管理:仅授予用户所需的最小权限,避免使用root账户进行日常操作。
  • 密码策略:使用强密码,并定期更换。
  • 数据加密:对敏感数据进行加密存储,使用SSL连接来保护数据传输。
  • 定期备份:确保定期备份数据,并验证备份的完整性和可恢复性。

2. 性能优化

  • 索引使用:合理使用索引以加速查询,但避免过度索引,这会增加写操作的负担。
  • 查询优化:优化慢查询,使用EXPLAIN分析查询性能。
  • 硬件资源:根据数据库的工作负载合理分配CPU、内存和存储资源。
  • 配置调整:根据实际工作负载调整配置参数,如InnoDB缓冲池大小。

3. 数据一致性和完整性

  • 事务管理:在需要保证数据一致性的操作中使用事务。
  • 外键约束:使用外键来维护数据的引用完整性。
  • 数据类型选择:为列选择合适的数据类型,以避免不必要的空间浪费和性能问题。

4. 数据库设计

  • 规范化:设计数据库时遵循数据库规范化原则,以减少数据冗余。
  • 反规范化:在某些情况下,为了性能考虑,可以适当进行反规范化。
  • 表分区:对于大型表,使用分区来提高管理和查询效率。

5. 监控和日志

  • 监控:使用工具监控数据库性能,如慢查询日志、错误日志和性能模式。
  • 日志管理:合理配置日志,如错误日志、二进制日志和慢查询日志,以便问题追踪和性能分析。

6. 版本控制

  • 升级计划:定期更新MySQL到最新稳定版本,以获得性能改进和安全修复。
  • 兼容性测试:在升级前进行彻底的测试,确保新版本与现有应用的兼容性。

7. 高可用性和灾难恢复

  • 主从复制:设置主从复制来提高数据的可用性和容错能力。
  • 故障转移:实现故障转移机制,以便在主数据库不可用时自动切换到备用数据库。
  • 多数据中心:在多个数据中心部署数据库,以提高数据的持久性和可用性。

8. SQL编写习惯

  • **避免SELECT ***:在查询时指定需要的列,而不是使用SELECT *
  • 避免复杂的JOIN:在可能的情况下,简化JOIN操作,尤其是在大数据集上。
  • 使用参数化查询:防止SQL注入攻击。

9. 资源隔离

  • 隔离级别:根据应用需求设置适当的事务隔离级别,以避免脏读、不可重复读和幻读。

10. 文档和规范

  • 文档化:保持数据库结构和操作的文档化,以便团队成员理解和维护。
  • 遵循规范:制定并遵循数据库开发和操作的规范。

你可能感兴趣的:(mysql,数据库)