MySQL 基础教程:数据库管理、SQL 操作与数据类型解析
                           
天天向上
发布: 2025-02-14 23:11:52

原创
564 人浏览过

本文详细探讨 MySQL 基础知识的各个方面,我们将细化每个知识点,讲解相关原理、使用方法以及常见的最佳实践。

1. MySQL 概述与架构

  • MySQL 的架构
    MySQL 是一个客户端-服务器架构的数据库管理系统。其主要组件包括:
  • 客户端:MySQL 客户端用于发送 SQL 查询请求,可以是命令行工具、图形化界面(如 MySQL Workbench)或编程语言(如 Python、PHP)。
  • 服务器:MySQL 服务器负责执行客户端发送的查询,返回查询结果。
  • 查询解析器:将 SQL 查询语句解析为执行计划。
  • 优化器:优化器负责选择最优的查询执行路径。它会分析查询的结构、表的索引和数据分布来决定执行计划。
  • 存储引擎:存储引擎是 MySQL 的核心组件之一,负责如何存储、读取和管理数据。常见的存储引擎有 InnoDB(支持事务、外键)和 MyISAM(速度快,但不支持事务和外键)。
  • MySQL 的安装与配置
    安装 MySQL 通常有两种方式:使用包管理工具(如 aptyum)或直接下载安装包。安装后,主要的配置文件是 my.cnf(Linux)或 my.ini(Windows)。常见的配置项有:
  • innodb_buffer_pool_size:决定 InnoDB 存储引擎的数据缓存大小。
  • max_connections:设置最大允许的连接数。
  • query_cache_size:设置查询缓存的大小(注意:在 MySQL 8.0 版本中已被移除)。
  • tmp_table_sizemax_heap_table_size:设置临时表的大小限制。 配置文件修改后需要重启 MySQL 服务,命令为:
  sudo systemctl restart mysql
  • MySQL 客户端与命令行操作
    通过 MySQL 客户端命令行进行基本操作:
  • 连接 MySQL:
    bash mysql -u root -p
  • 退出 MySQL 客户端:
    bash EXIT;
  • 查看当前数据库:
    sql SELECT DATABASE();
  • 显示所有数据库:
    sql SHOW DATABASES;
  • 使用指定数据库:
    sql USE database_name;

2. 数据库与表管理

  • 创建数据库与表
  • 创建数据库:
    sql CREATE DATABASE database_name;
  • 创建表:
    sql CREATE TABLE table_name ( column1_name column1_type, column2_name column2_type, ... );
    示例:
  CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      username VARCHAR(50) NOT NULL,
      email VARCHAR(100),
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  );
  • 删除数据库与表
  • 删除表:
    sql DROP TABLE table_name;
  • 删除数据库: DROP DATABASE database_name;
  • 修改表结构
  • 添加列:
    sql ALTER TABLE table_name ADD column_name column_type;
  • 删除列:
    sql ALTER TABLE table_name DROP COLUMN column_name;
  • 修改列: ALTER TABLE table_name MODIFY COLUMN column_name new_column_type;
  • 数据类型
  • 数值类型
    • INT: 用于存储整数,支持符号和无符号整数,范围根据大小不同(如 INT(11))。
    • FLOATDOUBLE: 用于存储浮动的小数。FLOAT 精度较低,DOUBLE 精度较高。
  • 字符串类型
    • VARCHAR(n): 可变长度的字符串,最多存储 n 个字符。
    • TEXT: 用于存储长文本数据,最多可以存储 65,535 字符。
  • 日期时间类型
    • DATE: 存储日期(如 2023-05-12)。
    • DATETIME: 存储日期和时间(如 2023-05-12 14:30:00)。
    • TIMESTAMP: 存储从 1970 年 1 月 1 日开始的秒数,常用于表示事件发生的时间。

3. SQL 基础操作

  • SELECT 查询
  • 选择所有列:
    sql SELECT * FROM users;
  • 选择指定列: SELECT id, username FROM users;
  • WHERE 条件查询
    使用 WHERE 进行数据筛选:
  SELECT * FROM users WHERE username = 'john';
  • 使用逻辑运算符:AND, OR
  SELECT * FROM users WHERE age > 25 AND gender = 'M';
  • INSERT 插入数据
    向表中插入数据:
  INSERT INTO users (username, email) VALUES ('johndoe', 'john@example.com');
  • UPDATE 更新数据
    更新表中现有的数据:
  UPDATE users SET email = 'newemail@example.com' WHERE username = 'johndoe';
  • DELETE 删除数据
    删除满足条件的数据:
  DELETE FROM users WHERE username = 'johndoe';

4. 排序与分组

  • ORDER BY 排序
    按照指定列排序:
  SELECT * FROM users ORDER BY created_at DESC;
  • GROUP BY 分组
    对数据进行分组并使用聚合函数(如 COUNTSUM 等):
  SELECT COUNT(*) AS total_users FROM users GROUP BY gender;
  • HAVING 子句
    用于过滤 GROUP BY 分组后的数据:
  SELECT gender, COUNT(*) AS total_users
  FROM users
  GROUP BY gender
  HAVING COUNT(*) > 5;

5. 常见约束

  • 主键(PRIMARY KEY)
    主键约束保证数据的唯一性和非空性。
  CREATE TABLE users (
      id INT PRIMARY KEY,
      username VARCHAR(50) NOT NULL
  );
  • 外键(FOREIGN KEY)
    外键用于在表之间建立关联:
  CREATE TABLE orders (
      order_id INT PRIMARY KEY,
      user_id INT,
      FOREIGN KEY (user_id) REFERENCES users(id)
  );
  • 唯一约束(UNIQUE)
    保证字段值唯一:
  CREATE TABLE users (
      id INT PRIMARY KEY,
      email VARCHAR(100) UNIQUE
  );
  • 非空约束(NOT NULL)
    强制列不能为空:
  CREATE TABLE users (
      id INT PRIMARY KEY,
      username VARCHAR(50) NOT NULL
  );

6. 索引

  • 创建索引
    创建普通索引:
  CREATE INDEX idx_username ON users (username);

创建唯一索引:

  CREATE UNIQUE INDEX idx_email ON users (email);
  • 索引的作用
    索引用于加速查询,但会影响数据插入、更新和删除的性能。在大型数据表中,合理创建索引可以显著提高查询效率。

总结

这一部分介绍了 MySQL 的核心基础,涉及数据库与表的管理、SQL 基本操作以及常见约束和索引的使用。通过理解和掌握这些内容,你将能够高效地管理和操作 MySQL 数据库。

发表回复 0

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