MySQL必知必会
                           
天天向上
发布: 2024-12-12 00:48:03

原创
834 人浏览过

MySQL 应知应会涵盖了关系型数据库操作的基础知识和关键技能,这些内容是掌握 MySQL 必须熟悉的内容。


1. 基础概念

(1)关系型数据库

  • 数据以表格(行和列)的形式存储,表之间可以通过外键关联。
  • 数据库的核心是 ACID 原则:
  • Atomicity(原子性):事务是不可分割的操作单位。
  • Consistency(一致性):事务前后,数据库保持一致性。
  • Isolation(隔离性):事务之间互不干扰。
  • Durability(持久性):事务提交后数据永久保存。

(2)MySQL 的核心组成

  • 服务器:提供数据库服务的核心进程。
  • 客户端工具:命令行客户端(mysql)、图形化管理工具(如 MySQL Workbench)。
  • 存储引擎
  • InnoDB:支持事务、外键,默认存储引擎。
  • MyISAM:查询快但不支持事务。

2. 数据库操作

(1)创建与管理数据库

  • 创建数据库:
  CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 删除数据库:
  DROP DATABASE my_database;
  • 查看数据库:
  SHOW DATABASES;

(2)用户与权限管理

  • 创建用户:
  CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
  • 授权用户:
  GRANT SELECT, INSERT ON my_database.* TO 'username'@'localhost';
  • 撤销权限:
  REVOKE INSERT ON my_database.* FROM 'username'@'localhost';
  • 删除用户:
  DROP USER 'username'@'localhost';

3. 数据表操作

(1)创建表

  • 基本语法:
  CREATE TABLE employees (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(100) NOT NULL,
      position VARCHAR(50),
      salary DECIMAL(10,2),
      hire_date DATE
  );
  • 设置外键:
  CREATE TABLE orders (
      order_id INT PRIMARY KEY,
      customer_id INT,
      FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
  );

(2)修改表

  • 添加列:
  ALTER TABLE employees ADD COLUMN department_id INT;
  • 删除列:
  ALTER TABLE employees DROP COLUMN department_id;
  • 修改列类型:
  ALTER TABLE employees MODIFY COLUMN salary FLOAT;

(3)删除表

  • 删除表及数据:
  DROP TABLE employees;

4. 数据操作

(1)插入数据

  • 单条记录插入:
  INSERT INTO employees (name, position, salary, hire_date) 
  VALUES ('Alice', 'Manager', 8000.00, '2023-01-15');
  • 批量插入:
  INSERT INTO employees (name, position, salary, hire_date)
  VALUES
  ('Bob', 'Engineer', 6000.00, '2023-02-01'),
  ('Carol', 'HR', 5000.00, '2023-03-10');

(2)查询数据

  • 查询所有数据:
  SELECT * FROM employees;
  • 条件查询:
  SELECT name, salary FROM employees WHERE salary > 5000;
  • 排序:
  SELECT name, salary FROM employees ORDER BY salary DESC;
  • 分页:
  SELECT * FROM employees LIMIT 10 OFFSET 20;

(3)更新数据

  • 更新单条记录:
  UPDATE employees SET salary = 8500.00 WHERE name = 'Alice';
  • 更新多条记录:
  UPDATE employees SET salary = salary * 1.10 WHERE position = 'Engineer';

(4)删除数据

  • 删除单条记录:
  DELETE FROM employees WHERE name = 'Alice';
  • 清空表数据(保留表结构):
  TRUNCATE TABLE employees;

5. 查询优化

(1)索引

  • 创建索引:
  CREATE INDEX idx_position ON employees(position);
  • 删除索引:
  DROP INDEX idx_position ON employees;

(2)视图

  • 创建视图:
  CREATE VIEW high_salary_employees AS
  SELECT name, salary FROM employees WHERE salary > 7000;
  • 使用视图:
  SELECT * FROM high_salary_employees;

6. 事务与并发控制

(1)事务基本操作

  • 开启事务:
  START TRANSACTION;
  • 提交事务:
  COMMIT;
  • 回滚事务:
  ROLLBACK;

(2)事务隔离级别

  • 设置隔离级别:
  SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
  • 常见级别:
  • READ UNCOMMITTED:允许读取未提交数据。
  • READ COMMITTED:只能读取已提交数据。
  • REPEATABLE READ:同一事务内多次读取一致。
  • SERIALIZABLE:完全隔离,最高级别。

7. 数据备份与恢复

(1)备份

  • 备份数据库:
  mysqldump -u root -p my_database > backup.sql

(2)恢复

  • 恢复数据库:
  mysql -u root -p my_database < backup.sql

8. 性能优化

  • 分析查询:
  EXPLAIN SELECT * FROM employees WHERE position = 'Manager';
  • 优化表结构:
  OPTIMIZE TABLE employees;
  • 分区表:将大表拆分为多个小分区以提升性能。

学习建议

  • 练习基础命令:通过搭建练习环境熟悉 SQL 操作。
  • 实践真实场景:设计和实现简单数据库项目。
  • 逐步进阶:掌握高级查询、事务、索引优化。

以上为关于mysql必知必会的详细介绍,更多信息请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *