1. 数据库管理指令
1.1 创建数据库
CREATE DATABASE database_name [DEFAULT CHARACTER SET charset_name] [DEFAULT COLLATE collation_name];
-
功能: 创建一个新的数据库。
-
语法参数:
database_name
: 数据库名称,遵循命名规则(如不能包含空格,长度限制等)。DEFAULT CHARACTER SET
: 可选,指定数据库的默认字符集(如utf8
、utf8mb4
等)。DEFAULT COLLATE
: 可选,指定默认排序规则。
-
示例:
CREATE DATABASE my_database DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
1.2 查看数据库
SHOW DATABASES;
-
功能: 显示当前服务器上的所有数据库。
-
使用场景: 当你需要查看已有的数据库以选择操作时。
-
示例:
SHOW DATABASES;
1.3 删除数据库
DROP DATABASE database_name;
-
功能: 删除指定的数据库及其所有数据。
-
注意: 此操作不可恢复,执行前需谨慎。
-
示例:
DROP DATABASE my_database;
2. 表管理指令
2.1 创建表
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
) ENGINE=storage_engine;
-
功能: 创建一个新表。
-
语法参数:
table_name
: 表的名称。column1
,column2
: 列的名称及数据类型(如INT
,VARCHAR(255)
,DATE
等)。constraints
: 列的约束条件,如PRIMARY KEY
、NOT NULL
、UNIQUE
等。ENGINE
: 可选,指定存储引擎(如InnoDB
,MyISAM
等)。
-
示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
2.2 查看表结构
DESCRIBE table_name;
-
功能: 显示表的结构,包括列名、数据类型和约束。
-
解析: 提供表中每列的详细信息,包括
Field
(列名)、Type
(数据类型)、Null
(是否允许为空)、Key
(索引类型)、Default
(默认值)、Extra
(其他信息)。 -
示例:
DESCRIBE users;
2.3 删除表
DROP TABLE table_name;
-
功能: 删除指定的表及其所有数据。
-
注意: 一旦执行,表及数据将永久删除。
-
示例:
DROP TABLE users;
2.4 修改表
ALTER TABLE table_name
ADD column_name datatype constraints; -- 添加列
ALTER TABLE table_name
MODIFY column_name new_datatype; -- 修改列的数据类型
ALTER TABLE table_name
DROP COLUMN column_name; -- 删除列
-
功能: 修改现有表的结构。
-
解析: 可以添加、修改或删除列。
-
示例:
ALTER TABLE users ADD email VARCHAR(100);
ALTER TABLE users MODIFY password VARCHAR(128);
ALTER TABLE users DROP COLUMN email;
3. 数据操作指令
3.1 插入数据
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
-
功能: 向表中插入新记录。
-
解析: 插入的数据类型必须与列的数据类型匹配。
-
示例:
INSERT INTO users (username, password) VALUES ('john_doe', 'securepassword');
3.2 查询数据
SELECT column1, column2 FROM table_name WHERE condition;
-
功能: 从表中查询特定记录。
-
解析:
- 可以使用
*
查询所有列。 WHERE
子句用于过滤记录。
- 可以使用
-
示例:
SELECT * FROM users WHERE username = 'john_doe';
SELECT username, created_at FROM users WHERE created_at > '2024-01-01';
3.3 更新数据
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
-
功能: 更新表中的现有记录。
-
注意: 若不加
WHERE
条件,将更新表中的所有记录。 -
示例:
UPDATE users SET password = 'new_secure_password' WHERE username = 'john_doe';
3.4 删除数据
DELETE FROM table_name WHERE condition;
-
功能: 删除表中的记录。
-
注意: 不加
WHERE
将删除所有记录。 -
示例:
DELETE FROM users WHERE username = 'john_doe';
4. 索引管理指令
4.1 创建索引
CREATE INDEX index_name ON table_name (column_name);
-
功能: 在指定列上创建索引以提高查询性能。
-
解析: 使用索引可以加快数据检索速度。
-
示例:
CREATE INDEX idx_username ON users (username);
4.2 删除索引
DROP INDEX index_name ON table_name;
-
功能: 删除指定的索引。
-
解析: 删除后索引将不再存在,可能会影响查询性能。
-
示例:
DROP INDEX idx_username ON users;
5. 事务管理指令
5.1 开始事务
START TRANSACTION;
-
功能: 开始一个新的事务。
-
使用场景: 当需要保证多条操作的原子性时。
-
示例:
START TRANSACTION;
5.2 提交事务
COMMIT;
-
功能: 提交当前事务的所有更改。
-
解析: 在事务中所有操作成功后,持久化更改。
-
示例:
COMMIT;
5.3 回滚事务
ROLLBACK;
-
功能: 撤销当前事务中的所有更改。
-
解析: 用于恢复到事务开始前的状态。
-
示例:
ROLLBACK;
6. 用户管理指令
6.1 创建用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-
功能: 创建一个新用户。
-
解析: 用户权限设置在后续授权中完成。
-
示例:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';
6.2 授权用户
GRANT privileges ON database.table TO 'username'@'host';
-
功能: 授权用户在指定数据库和表上的权限。
-
解析:
privileges
: 权限类型(如SELECT
,INSERT
,UPDATE
,DELETE
,ALL PRIVILEGES
等)。database.table
: 指定的数据库和表。
-
示例:
GRANT SELECT, INSERT ON my_database.* TO 'new_user'@'localhost';
6.3 撤销用户权限
REVOKE privileges ON database.table FROM 'username'@'host';
- 功能: 撤销用户在指定数据库和表上的权限。
- 示例:
REVOKE INSERT ON my_database.* FROM 'new_user'@'localhost';
6.4 查看用户权限
SHOW GRANTS FOR 'username'@'host';
- 功能: 显示指定用户的权限。
- 示例:
SHOW GRANTS FOR 'new_user'@'localhost';
7. 其他常用指令
7.1 备份数据库
mysqldump -u username -p database_name > backup.sql
-
功能: 备份指定数据库到一个 SQL 文件。
-
解析:
-u username
: 数据库用户名。-p
: 提示输入密码。database_name
: 要备份的数据库名称。
-
示例:
mysqldump -u username -p database_name > backup.sql