如何在docker中的mysql容器内执行命令与执行SQL文件

通过 docker ps -a 查询当前运行的容器,找到想执行命令的容器名称。

docker ps -a

若想执行sql文件,则将sql文件放入当前文件夹下后将项目内的 SQL 文件拷贝到 mysql 容器内部的 root下。

sudo docker cp /root/enterprise.sql mysql:/root/

然后进入 mysql 容器内部。

docker exec -it mysql /bin/bash

进入mysql容器内部执行以下命令后回车,输入数据库密码进入 mysql 数据库

mysql -u root -p

如图:

切换到对应的数据库下,例如数据库 zd,记得后面要加分号

use zd;

现在就可以对此数据库执行相关命令了,若想执行sql文件,则运行以下命令,_/root/enterprise.sql_为刚刚复制进来的文件路径,具体路径请根据个人调整。

source /root/enterprise.sql

如果没有出现报错,则此sql文件执行成功!

以下是mysql常用命令:

MySQL清空表数据三种方法

1.1 清空表数据:truncate

sql命令:

#清空多张表、库中所有表的数据
truncate table table_name1,table_name2,...;

#清空单张表的数据
truncate table table_name;
  • 注意:
  • truncate会删除表中的所有数据、释放空间,但是保留表结构
  • 只能操作表,不能与where一起使用
  • truncate删除操作立即生效,原数据不放到rollback segment中,不能rollback,操作不触发trigger
  • truncate删除数据后会释放表空间、重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录、而非接着原来的id数
  • truncate删除数据后不写服务器log,整体删除速度快
1.2 删除表:drop

sql命令:

drop table table_name;
drop table if exists table_name;
  • 注意:
    • drop会删除整个表,包括表结构和数据,释放空间
    • 立即执行,执行速度最快
    • 不可回滚
1.3 删除/清空表数据:delete
  • sql命令

    #删除部分数据

    delete from tb_name where clause;

    #清空表,仅删除数据、保留表结构,同时也不释放表空间

    delete from tb_name;

  • 注意:

    • 删除表中数据而不删除表结构,也不释放空间
    • delete可以删除一行、多行、乃至整张表
    • 每次删除一行,都在事务日志中为所删除的每行记录一项,可回滚
    • 如果不加where条件,表示删除表中所有数据,仅删除数据、保留表结构,同时也不释放表空间

MySQL、Mariadb、PostgreSQL删除表数据、清空表命令 都可用以上三种命令。

使用原则

使用原则总结如下:

  • 当你不需要该表时(删除数据和结构),用drop;
  • 当你仍要保留该表、仅删除所有数据表内容时,用truncate;
  • 当你要删除部分记录、且希望能回滚的话,用delete;

在没有备份的情况下,谨慎使用drop、truncate。

在实际应用中,要根据具体需求和场景选择合适的操作。

相关推荐
青草地溪水旁2 小时前
Debian或Ubuntu系统中重置MySQL的root密码
mysql·ubuntu·debian
xianwu5432 小时前
反向代理模块1
开发语言·网络·数据库·c++·mysql
青草地溪水旁2 小时前
mysql_use_result的概念和使用案例
数据库·mysql
mcharleylei3 小时前
Centos 安装docker
linux·docker·centos
翻晒时光3 小时前
MySQL 8.0 备份与恢复全解析
mysql
程序研3 小时前
mysql之group by语句
数据库·mysql
ThisIsClark5 小时前
【后端面试总结】mysql的join,left join,right join,full join分别是什么意思
mysql·面试·职场和发展
鲁班班5 小时前
MySQL通过binlog恢复数据
数据库·mysql
Joeysoda7 小时前
MySQL 基础学习(1):数据类型与操作数据库和数据表
数据库·mysql·oracle·database
monstercl7 小时前
Ubuntu20彻底删除MySQL8
sql·mysql·ubuntu·c/c++