关系型数据库(MySQL)

应用分类:

MySQL 是一款流行的开源关系型数据库管理系统,以其易用性、性能和可靠性而广泛应用于各种 Web 应用和数据存储场景。

原价为:1.00¥。当前价格为:0.00¥。

关系型数据库 MySQL 介绍

一、MySQL 主要特点及核心功能

MySQL 是一款广泛使用的开源关系型数据库管理系统 (RDBMS),以其易用性、高性能、可靠性和可扩展性而闻名。它适用于各种规模的应用,从个人网站到大型企业级系统。

主要特点:

  • 成熟稳定: MySQL 经过长时间的发展和广泛的应用,拥有成熟稳定的架构和丰富的功能。
  • 高性能: MySQL 采用多线程、优化的查询执行引擎和各种缓存机制,能够提供良好的读写性能。
  • 易于使用: MySQL 提供了简单直观的 SQL 语法和丰富的客户端工具,方便用户进行管理和开发。
  • 可扩展性: MySQL 支持主从复制、读写分离和集群等技术,可以满足高并发和大数据量的需求。
  • 数据一致性: MySQL 支持事务处理,保证数据的原子性、一致性、隔离性和持久性 (ACID)。
  • 安全性: MySQL 提供了完善的用户权限管理、数据加密等安全特性,保护数据的安全。
  • 丰富的存储引擎: MySQL 支持多种存储引擎,如 InnoDB、MyISAM 等,不同的存储引擎适用于不同的应用场景。InnoDB 是最常用的事务型存储引擎,支持行级锁和外键。
  • 广泛的社区支持: MySQL 拥有庞大而活跃的开源社区,提供了丰富的文档、教程和支持。
  • 跨平台: MySQL 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。

核心功能:

  • 数据存储和管理: 安全可靠地存储和管理结构化数据。
  • SQL 查询: 支持标准的 SQL 语言,用于数据的检索、插入、更新和删除等操作。
  • 事务处理: 支持事务的提交和回滚,保证数据的一致性。
  • 用户和权限管理: 控制用户对数据库和表的访问权限。
  • 数据备份和恢复: 提供数据备份和恢复工具,保障数据的安全性。
  • 复制和高可用: 支持主从复制等机制,实现数据的冗余和读写分离,提高系统的可用性。

二、基础使用流程

本部分描述在 MySQL 服务已经成功运行并可以访问的前提下,用户进行基本数据库操作的流程。

  1. 连接到 MySQL 服务器: 使用 MySQL 提供的客户端工具 mysql 连接到服务器。您需要指定服务器地址、端口、用户名和密码等信息。

    mysql -h <服务器地址> -P <端口号> -u <用户名> -p
    

    例如,连接到本地服务器上的 MySQL 服务,使用用户 root

    mysql -h localhost -P 3306 -u root -p
    

    系统会提示您输入密码。

  2. 创建数据库 (如果需要): 如果您需要操作的数据库不存在,可以使用 CREATE DATABASE 命令创建。

    CREATE DATABASE mydatabase;
    
  3. 选择数据库: 使用 USE 命令选择要操作的数据库。

    USE mydatabase;
    
  4. 创建表 (Create Table): 使用 CREATE TABLE 命令定义表的结构,包括列名、数据类型、约束等。

    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) UNIQUE NOT NULL,
        email VARCHAR(100) NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  5. 插入数据 (Insert Data): 使用 INSERT INTO 命令向表中插入新的数据行。

    INSERT INTO users (username, email) VALUES ('john_doe', 'john.doe@example.com');
    INSERT INTO users (username, email) VALUES ('jane_doe', 'jane.doe@example.com');
    
  6. 查询数据 (Select Data): 使用 SELECT 命令从表中检索数据。可以指定要查询的列、使用 WHERE 子句进行条件过滤、使用 ORDER BY 子句进行排序等。

    SELECT * FROM users;
    SELECT username, email FROM users WHERE id = 1;
    SELECT * FROM users ORDER BY created_at DESC;
    
  7. 更新数据 (Update Data): 使用 UPDATE 命令修改表中已有的数据。通常需要使用 WHERE 子句指定要更新的行。

    UPDATE users SET email = 'john.new@example.com' WHERE username = 'john_doe';
    
  8. 删除数据 (Delete Data): 使用 DELETE FROM 命令从表中删除数据行。务必谨慎使用,通常需要使用 WHERE 子句指定要删除的行。

    DELETE FROM users WHERE id = 2;
    
  9. 修改表结构 (Alter Table): 使用 ALTER TABLE 命令修改表的结构,例如添加列、删除列、修改列的数据类型、添加索引等。

    ALTER TABLE users ADD COLUMN full_name VARCHAR(100);
    ALTER TABLE users ALTER COLUMN email VARCHAR(120);
    ALTER TABLE users ADD UNIQUE INDEX email_unique (email);
    
  10. 删除表 (Drop Table): 使用 DROP TABLE 命令删除整个表。请谨慎使用,删除后数据将无法恢复。

    DROP TABLE users;
    
  11. 断开连接:mysql 交互式界面中,可以使用 exit\q 命令断开与 MySQL 服务器的连接。

三、简单使用实例

假设我们已经连接到名为 mydatabase 的 MySQL 数据库。

  1. 创建 products 表:

CREATE TABLE products ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, price DECIMAL(10, 2) NOT NULL, stock_quantity INT DEFAULT 0 );

  1. 插入一些产品数据:

    INSERT INTO products (name, price, stock_quantity) VALUES ('Laptop', 1200.50, 10);
    INSERT INTO products (name, price, stock_quantity) VALUES ('Mouse', 25.99, 50);
    INSERT INTO products (name, price, stock_quantity) VALUES ('Keyboard', 75.00, 25);
    
  2. 查询所有价格大于 50 的产品名称和价格:

    SELECT name, price FROM products WHERE price > 50.00;
    

    预期输出:

    +----------+---------+
    | name     | price   |
    +----------+---------+
    | Laptop   | 1200.50 |
    | Keyboard |   75.00 |
    +----------+---------+
    2 rows in set (0.00 sec)
    
  3. 将名为 ‘Mouse’ 的产品的库存增加 10:

    UPDATE products SET stock_quantity = stock_quantity + 10 WHERE name = 'Mouse';
    
  4. 查询更新后的 ‘Mouse’ 的库存:

    SELECT name, stock_quantity FROM products WHERE name = 'Mouse';
    

    预期输出:

    +-------+----------------+
    | name  | stock_quantity |
    +-------+----------------+
    | Mouse |             60 |
    +-------+----------------+
    1 row in set (0.00 sec)
    
  5. 查询库存数量小于 20 的产品名称和库存:

    SELECT name, stock_quantity FROM products WHERE stock_quantity < 20;
    

    预期输出:

    +--------+----------------+
    | name   | stock_quantity |
    +--------+----------------+
    | Laptop |             10 |
    +--------+----------------+
    1 row in set (0.00 sec)