MySql常用操作

52
0
0
2021-04-03
MySql常用操作

MySql常用操作

  1. 登录 MySQL 服务器:

    mysql -u username -p

    输入密码后即可登录 MySQL 服务器。如果是本地服务器,可以省略 -u username 部分。

  2. 显示数据库列表:

    SHOW DATABASES;

    这将列出所有可用的数据库。

  3. 创建新数据库:

    CREATE DATABASE dbname;

    创建一个名为 "dbname" 的新数据库。

  4. 切换到指定数据库:

    USE dbname;

    切换到名为 "dbname" 的数据库。

  5. 显示当前数据库中的表:

    SHOW TABLES;

    这将列出当前数据库中的所有表。

  6. 显示表结构:

    DESCRIBE tablename;

    或者

    SHOW COLUMNS FROM tablename;

    这将显示表 "tablename" 的结构,包括字段名、类型、键信息等。

  7. 创建表:

    CREATE TABLE tablename ( column1 datatype1, column2 datatype2, ... );

    创建一个名为 "tablename" 的新表,指定列名和数据类型。

  8. 插入数据:

    INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);

    向表 "tablename" 中插入数据。

  9. 查询数据:

    SELECT column1, column2, ... FROM tablename WHERE condition;

    查询表 "tablename" 中满足条件的数据。

  10. 更新数据:

    UPDATE tablename SET column1 = value1, column2 = value2 WHERE condition;

    更新表 "tablename" 中满足条件的数据。

  11. 删除数据:

    DELETE FROM tablename WHERE condition;

    删除表 "tablename" 中满足条件的数据。

  12. 删除表:

    DROP TABLE tablename;

    删除名为 "tablename" 的表。

  13. 授予权限:

    GRANT permissions ON dbname.tablename TO 'username'@'localhost';

    授予用户对数据库和表的特定权限。

  14. 查看用户权限:

    SHOW GRANTS FOR 'username'@'localhost';

    查看用户 'username' 在 'localhost' 上的权限。

  15. 退出 MySQL:

    EXIT;

    或者

    QUIT;

    退出 MySQL 客户端。

这些是一些基本的 MySQL 命令及其用法。实际使用时,根据具体的需求和情境,可能会涉及到更复杂的查询、连接、事务等操作。

更复杂的查询、连接、事务等操作示例:

在下面的示例中,我们将使用两个表,一个用于存储用户信息,另一个用于存储订单信息,来演示更复杂的查询、连接和事务操作。

  1. 创建用户表和订单表:

    CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(255) NOT NULL ); CREATE TABLE orders ( order_id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, amount DECIMAL(10, 2) NOT NULL, FOREIGN KEY (user_id) REFERENCES users(user_id) );

  2. 插入一些示例数据:

    INSERT INTO users (username) VALUES ('John'), ('Alice'), ('Bob'); INSERT INTO orders (user_id, amount) VALUES (1, 50.00), (2, 75.50), (3, 30.00), (1, 20.00);

  3. 简单查询:

    -- 查询所有用户 SELECT * FROM users; -- 查询所有订单 SELECT * FROM orders; -- 查询用户 John 的订单 SELECT * FROM orders WHERE user_id = 1;

  4. 连接查询(INNER JOIN):

    -- 查询用户和他们的订单 SELECT users.user_id, users.username, orders.order_id, orders.amount FROM users INNER JOIN orders ON users.user_id = orders.user_id;

  5. 左连接查询(LEFT JOIN):

    -- 查询所有用户以及他们的订单(如果有的话) SELECT users.user_id, users.username, orders.order_id, orders.amount FROM users LEFT JOIN orders ON users.user_id = orders.user_id;

事务操作:

-- 开始事务 START TRANSACTION; -- 插入一条新用户记录 INSERT INTO users (username) VALUES ('Charlie'); -- 查询用户表 SELECT * FROM users; -- 提交事务 COMMIT; -- 查询用户表,此时应包含新插入的用户记录 SELECT * FROM users;

在这个例子中,如果没有发生错误,COMMIT 语句将提交事务,否则可以使用 ROLLBACK 进行回滚。

以上示例演示了一些较复杂的查询、连接和事务操作。在实际应用中,根据具体需求和数据模型,可能会涉及更多复杂的查询条件、连接操作和事务控制。

MySQL 存储引擎

MySQL 支持多种存储引擎,每个存储引擎都有其独特的特性和用途。以下是 MySQL 中常用的一些存储引擎:

  1. InnoDB: 支持事务、行级锁、外键约束等特性,适用于大部分应用场景。

  2. MyISAM: 不支持事务和行级锁,但具有较高的性能,适用于读密集的场景。

  3. Memory: 将表存储在内存中,适用于小型临时表。

  4. Archive: 专用于存储和检索大量归档数据,不支持索引。

  5. CSV: 将数据存储在 CSV 文件中,适用于数据交换和导入导出。

  6. Blackhole: 丢弃所有写入的数据,用于测试和日志复制。

在创建表时,可以通过 ENGINE 关键字指定存储引擎。以下是一个简单的示例:

CREATE TABLE example_table (
    id INT PRIMARY KEY,
    name VARCHAR(255)
) ENGINE=InnoDB;

MySQL 事务

事务是一组 SQL 操作,要么全部执行,要么全部不执行。MySQL 使用 START TRANSACTION 开始一个事务,COMMIT 提交事务,ROLLBACK 回滚事务。以下是一个简单的示例:

-- 开始事务
START TRANSACTION;

-- 插入数据
INSERT INTO example_table (id, name) VALUES (1, 'John');

-- 提交事务
COMMIT;

MySQL 复杂连接

复杂连接通常指的是多表连接,可以通过 JOIN 关键字实现。以下是一个示例:

-- 创建两个表
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(255)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_amount DECIMAL(10, 2),
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- 插入数据
INSERT INTO customers (customer_id, customer_name) VALUES (1, 'John');
INSERT INTO orders (order_id, customer_id, order_amount) VALUES (101, 1, 50.00);

-- 多表连接查询
SELECT customers.customer_name, orders.order_amount
FROM customers
JOIN orders ON customers.customer_id = orders.customer_id;

在这个示例中,customersorders 表通过 customer_id 列建立了关联,通过 JOIN 连接两个表,查询了客户名称和订单金额。

请注意,实际场景中可能需要更复杂的连接,可以使用不同类型的 JOIN(如 LEFT JOININNER JOIN)来满足需求。

这只是 MySQL 存储引擎、事务和复杂连接的简单示例。在实际应用中,根据具体的业务需求和数据模型,可能涉及更多复杂的操作和优化。