MySql常用操作

MySql常用操作
登录 MySQL 服务器:
mysql -u username -p
输入密码后即可登录 MySQL 服务器。如果是本地服务器,可以省略
-u username
部分。显示数据库列表:
SHOW DATABASES;
这将列出所有可用的数据库。
创建新数据库:
CREATE DATABASE dbname;
创建一个名为 "dbname" 的新数据库。
切换到指定数据库:
USE dbname;
切换到名为 "dbname" 的数据库。
显示当前数据库中的表:
SHOW TABLES;
这将列出当前数据库中的所有表。
显示表结构:
DESCRIBE tablename;
或者
SHOW COLUMNS FROM tablename;
这将显示表 "tablename" 的结构,包括字段名、类型、键信息等。
创建表:
CREATE TABLE tablename ( column1 datatype1, column2 datatype2, ... );
创建一个名为 "tablename" 的新表,指定列名和数据类型。
插入数据:
INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...);
向表 "tablename" 中插入数据。
查询数据:
SELECT column1, column2, ... FROM tablename WHERE condition;
查询表 "tablename" 中满足条件的数据。
更新数据:
UPDATE tablename SET column1 = value1, column2 = value2 WHERE condition;
更新表 "tablename" 中满足条件的数据。
删除数据:
DELETE FROM tablename WHERE condition;
删除表 "tablename" 中满足条件的数据。
删除表:
DROP TABLE tablename;
删除名为 "tablename" 的表。
授予权限:
GRANT permissions ON dbname.tablename TO 'username'@'localhost';
授予用户对数据库和表的特定权限。
查看用户权限:
SHOW GRANTS FOR 'username'@'localhost';
查看用户 'username' 在 'localhost' 上的权限。
退出 MySQL:
EXIT;
或者
QUIT;
退出 MySQL 客户端。
这些是一些基本的 MySQL 命令及其用法。实际使用时,根据具体的需求和情境,可能会涉及到更复杂的查询、连接、事务等操作。
更复杂的查询、连接、事务等操作示例:
在下面的示例中,我们将使用两个表,一个用于存储用户信息,另一个用于存储订单信息,来演示更复杂的查询、连接和事务操作。
创建用户表和订单表:
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) );
插入一些示例数据:
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);
简单查询:
-- 查询所有用户 SELECT * FROM users; -- 查询所有订单 SELECT * FROM orders; -- 查询用户 John 的订单 SELECT * FROM orders WHERE user_id = 1;
连接查询(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;
左连接查询(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 中常用的一些存储引擎:
InnoDB: 支持事务、行级锁、外键约束等特性,适用于大部分应用场景。
MyISAM: 不支持事务和行级锁,但具有较高的性能,适用于读密集的场景。
Memory: 将表存储在内存中,适用于小型临时表。
Archive: 专用于存储和检索大量归档数据,不支持索引。
CSV: 将数据存储在 CSV 文件中,适用于数据交换和导入导出。
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;
在这个示例中,customers
和 orders
表通过 customer_id
列建立了关联,通过 JOIN
连接两个表,查询了客户名称和订单金额。
请注意,实际场景中可能需要更复杂的连接,可以使用不同类型的 JOIN
(如 LEFT JOIN
、INNER JOIN
)来满足需求。
这只是 MySQL 存储引擎、事务和复杂连接的简单示例。在实际应用中,根据具体的业务需求和数据模型,可能涉及更多复杂的操作和优化。