Skip to content

TDSQL 内置命令参考

连接与会话管理命令

1. 连接数据库

sql
mysql -h hostname -P port -u username -p

参数说明

  • -h: 指定TDSQL实例的主机名或IP地址
  • -P: 指定TDSQL实例的端口号
  • -u: 指定用户名
  • -p: 提示输入密码

示例

bash
mysql -h tdsql-instance -P 3306 -u root -p

2. 显示当前连接信息

sql
STATUS;

功能:显示当前连接的详细信息,包括连接ID、用户、数据库、服务器版本等。

3. 切换数据库

sql
USE database_name;

功能:切换到指定的数据库。

示例

sql
USE test;

4. 显示当前数据库

sql
SELECT DATABASE();

功能:显示当前正在使用的数据库。

5. 退出会话

sql
EXIT;

sql
QUIT;

功能:退出当前数据库会话。

数据库与表管理命令

1. 显示所有数据库

sql
SHOW DATABASES;

功能:显示TDSQL实例中的所有数据库。

2. 创建数据库

sql
CREATE DATABASE database_name [CHARACTER SET charset_name] [COLLATE collation_name];

参数说明

  • database_name: 要创建的数据库名称
  • CHARACTER SET: 指定数据库的字符集
  • COLLATE: 指定数据库的排序规则

示例

sql
CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 删除数据库

sql
DROP DATABASE database_name;

功能:删除指定的数据库及其所有表。

示例

sql
DROP DATABASE test_db;

4. 显示数据库中的所有表

sql
SHOW TABLES [FROM database_name];

功能:显示指定数据库中的所有表。

示例

sql
SHOW TABLES FROM test;

5. 查看表结构

sql
DESCRIBE table_name;

sql
SHOW COLUMNS FROM table_name;

功能:显示表的列信息,包括列名、数据类型、约束等。

示例

sql
DESCRIBE users;

6. 查看表创建语句

sql
SHOW CREATE TABLE table_name;

功能:显示创建表的SQL语句。

示例

sql
SHOW CREATE TABLE users;

7. 查看表索引

sql
SHOW INDEX FROM table_name;

功能:显示表的索引信息。

示例

sql
SHOW INDEX FROM users;

数据查询与操作命令

1. 简单查询

sql
SELECT column1, column2 FROM table_name;

功能:从表中查询指定列的数据。

示例

sql
SELECT id, name FROM users;

2. 查询所有列

sql
SELECT * FROM table_name;

功能:查询表中的所有列。

示例

sql
SELECT * FROM users;

3. 带条件查询

sql
SELECT * FROM table_name WHERE condition;

功能:根据条件查询数据。

示例

sql
SELECT * FROM users WHERE age > 18;

4. 插入数据

sql
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

功能:向表中插入一条数据。

示例

sql
INSERT INTO users (name, age) VALUES ('John', 25);

5. 更新数据

sql
UPDATE table_name SET column1 = value1 WHERE condition;

功能:更新表中符合条件的数据。

示例

sql
UPDATE users SET age = 26 WHERE name = 'John';

6. 删除数据

sql
DELETE FROM table_name WHERE condition;

功能:删除表中符合条件的数据。

示例

sql
DELETE FROM users WHERE id = 1;

7. 事务管理

sql
-- 开始事务
START TRANSACTION;

-- 执行SQL语句
INSERT INTO users (name, age) VALUES ('Alice', 30);
UPDATE users SET age = 31 WHERE name = 'Bob';

-- 提交事务
COMMIT;

-- 或回滚事务
-- ROLLBACK;

功能:管理数据库事务。

权限管理命令

1. 创建用户

sql
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

功能:创建新用户。

示例

sql
CREATE USER 'test_user'@'%' IDENTIFIED BY 'password123';

2. 授予权限

sql
GRANT privileges ON database_name.table_name TO 'username'@'host';

功能:授予用户指定的权限。

示例

sql
GRANT SELECT, INSERT ON test.* TO 'test_user'@'%';

3. 撤销权限

sql
REVOKE privileges ON database_name.table_name FROM 'username'@'host';

功能:撤销用户的指定权限。

示例

sql
REVOKE INSERT ON test.* FROM 'test_user'@'%';

4. 查看用户权限

sql
SHOW GRANTS FOR 'username'@'host';

功能:显示用户的权限信息。

示例

sql
SHOW GRANTS FOR 'test_user'@'%';

5. 删除用户

sql
DROP USER 'username'@'host';

功能:删除指定用户。

示例

sql
DROP USER 'test_user'@'%';

系统信息与状态命令

1. 显示服务器状态

sql
SHOW GLOBAL STATUS;

功能:显示服务器的全局状态信息。

示例

sql
SHOW GLOBAL STATUS LIKE 'Threads_connected';

2. 显示系统变量

sql
SHOW GLOBAL VARIABLES;

功能:显示服务器的全局系统变量。

示例

sql
SHOW GLOBAL VARIABLES LIKE 'max_connections';

3. 显示引擎状态

sql
SHOW ENGINE INNODB STATUS;

功能:显示InnoDB引擎的详细状态信息。

4. 显示二进制日志信息

sql
SHOW BINARY LOGS;

功能:显示服务器上的二进制日志文件列表。

5. 显示主服务器状态

sql
SHOW MASTER STATUS;

功能:显示主服务器的状态,包括当前二进制日志文件名和位置。

6. 显示从服务器状态

sql
SHOW SLAVE STATUS\G

功能:显示从服务器的复制状态。

性能监控与优化命令

1. 显示慢查询日志状态

sql
SHOW VARIABLES LIKE 'slow_query_log';

功能:显示慢查询日志是否启用。

2. 设置慢查询日志阈值

sql
SET GLOBAL long_query_time = 1;

功能:设置慢查询的时间阈值(秒)。

3. 显示进程列表

sql
SHOW PROCESSLIST;

功能:显示当前正在运行的进程列表。

4. 杀死进程

sql
KILL process_id;

功能:终止指定ID的进程。

示例

sql
KILL 1234;

5. 优化表

sql
OPTIMIZE TABLE table_name;

功能:优化表,回收碎片空间。

示例

sql
OPTIMIZE TABLE users;

6. 分析表

sql
ANALYZE TABLE table_name;

功能:分析表,更新统计信息。

示例

sql
ANALYZE TABLE users;

7. 检查表

sql
CHECK TABLE table_name;

功能:检查表的完整性。

示例

sql
CHECK TABLE users;

备份与恢复命令

1. 锁定表

sql
LOCK TABLES table_name [AS alias] lock_type [, table_name [AS alias] lock_type] ...;

功能:锁定表,用于备份操作。

示例

sql
LOCK TABLES users READ;

2. 解锁表

sql
UNLOCK TABLES;

功能:解锁所有表。

3. 导出表数据

sql
SELECT * INTO OUTFILE '/path/to/file.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM table_name;

功能:将表数据导出到文件。

示例

sql
SELECT * INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users;

4. 导入表数据

sql
LOAD DATA INFILE '/path/to/file.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

功能:从文件导入数据到表中。

示例

sql
LOAD DATA INFILE '/tmp/users.csv' INTO TABLE users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

复制管理命令

1. 启动复制

sql
START SLAVE;

功能:启动从服务器的复制进程。

2. 停止复制

sql
STOP SLAVE;

功能:停止从服务器的复制进程。

3. 重置复制

sql
RESET SLAVE;

功能:重置从服务器的复制信息。

4. 配置主从复制

sql
CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='repl_password',
    MASTER_LOG_FILE='binlog.000001',
    MASTER_LOG_POS=154;

功能:配置从服务器的主服务器信息。

存储引擎命令

1. 显示支持的存储引擎

sql
SHOW ENGINES;

功能:显示服务器支持的存储引擎。

2. 设置默认存储引擎

sql
SET GLOBAL default_storage_engine = InnoDB;

功能:设置默认的存储引擎。

3. 查看表的存储引擎

sql
SHOW TABLE STATUS LIKE 'table_name';

功能:显示表的存储引擎信息。

示例

sql
SHOW TABLE STATUS LIKE 'users';

缓存管理命令

1. 刷新查询缓存

sql
FLUSH QUERY CACHE;

功能:刷新查询缓存。

2. 重置查询缓存

sql
RESET QUERY CACHE;

功能:重置查询缓存,清除所有缓存的查询结果。

3. 刷新权限

sql
FLUSH PRIVILEGES;

功能:刷新权限表,使新的权限设置生效。

4. 刷新日志

sql
FLUSH LOGS;

功能:刷新日志文件,生成新的日志文件。

常见问题(FAQ)

Q1: 如何查看TDSQL版本?

A1: 可以使用以下命令查看TDSQL版本:

sql
SELECT VERSION();

Q2: 如何查看当前用户?

A2: 可以使用以下命令查看当前用户:

sql
SELECT USER();

Q3: 如何查看当前时间?

A3: 可以使用以下命令查看当前时间:

sql
SELECT NOW();

Q4: 如何获取表的行数?

A4: 可以使用以下命令获取表的行数:

sql
SELECT COUNT(*) FROM table_name;

Q5: 如何查看数据库的大小?

A5: 可以使用以下命令查看数据库的大小:

sql
SELECT table_schema AS 'Database', SUM(data_length + index_length) / 1024 / 1024 AS 'Size (MB)' FROM information_schema.tables GROUP BY table_schema;

Q6: 如何查看表的大小?

A6: 可以使用以下命令查看表的大小:

sql
SELECT table_name AS 'Table', ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size (MB)' FROM information_schema.tables WHERE table_schema = 'database_name' ORDER BY (data_length + index_length) DESC;

Q7: 如何查看慢查询日志的位置?

A7: 可以使用以下命令查看慢查询日志的位置:

sql
SHOW VARIABLES LIKE 'slow_query_log_file';

Q8: 如何启用慢查询日志?

A8: 可以使用以下命令启用慢查询日志:

sql
SET GLOBAL slow_query_log = ON;

Q9: 如何查看二进制日志的位置?

A9: 可以使用以下命令查看二进制日志的位置:

sql
SHOW VARIABLES LIKE 'log_bin_basename';

Q10: 如何查看当前事务隔离级别?

A10: 可以使用以下命令查看当前事务隔离级别:

sql
SELECT @@GLOBAL.tx_isolation, @@SESSION.tx_isolation;

命令使用注意事项

  1. 权限要求:某些命令需要特定的权限才能执行,如创建用户、授予权限等需要SUPER或ALL PRIVILEGES权限。

  2. 事务安全:在生产环境中执行修改数据的命令时,建议使用事务管理,确保数据的一致性。

  3. 性能影响:某些命令(如OPTIMIZE TABLE、ANALYZE TABLE)可能会对数据库性能产生影响,建议在业务低峰期执行。

  4. 日志记录:重要的操作建议记录到日志中,便于后续审计和排查问题。

  5. 版本差异:不同版本的TDSQL可能支持的命令和参数有所不同,建议参考对应版本的官方文档。

  6. 备份重要:在执行删除、修改等危险操作前,建议先备份相关数据,以防止数据丢失。

  7. 谨慎使用KILL命令:KILL命令会强制终止进程,可能导致数据不一致,建议谨慎使用。

  8. 定期清理:定期清理无用的日志文件和临时文件,释放磁盘空间。

  9. 监控命令执行时间:对于可能执行时间较长的命令,建议监控其执行时间,避免影响数据库性能。

  10. 遵循最佳实践:遵循TDSQL的最佳实践,合理使用命令,确保数据库的稳定运行。