LZ问的问题很经典,但是可以明确的回答LZ,没用SQL语句可以做到批量删除表的,
只有手动,如果你用的有界面的数据库的话,可以用里面的功能来进行删除。

解决方案 »

  1.   

    自己写脚本删除也可以。
    貌似没见过可以用SQL语句进行批量删表的。脚本:
    echo "select concat('drop table ',  table_name ,';') from TABLES where TABLE_SCHEMA ='wap' and table_name like 'cdb2_%' ;" | mysql information_schema | sed -n '2,$p' | mysql wap脚本解析:
    如:我要删除的表:
    drop table cdb2_XXXX;
    drop table cdb2_XXXX;
    drop table cdb2_XXXX;
    drop table cdb2_XXXX;
    drop table cdb2_XXXX;

    1.information_schema数据库是MySQL的信息库,用于管理MySQL其他数据库中表,存储过程,索引等的定义和状态的,其中TABLES表是用来描述表结构信息的。
    2.利用concat来构造sql语句。3.sed -n '2,$p' 的作用是跳过第一行。因为echo "select ..." | mysql information_schema会带一个头,利用sed跳过一行,从第二行开始输出。4.把输出的sql语句传递回mysql wap,这样就会针对于wap数据库逐条执行drop table操作。
      

  2.   

    我是在phpmyadmin 中执行下面语句时
    MySQL 返回: #1044 - Access denied for user 'latola'@'localhost' to database 'information_schema'
    DELETE FROM information_schema.tables 
    WHERE table_name LIKE 'cdb2_%'
      

  3.   

    提供给楼主个思路,间接的.
    1.用mysql_list_tables()函数配合mysql_tablename ()得到所有表名称(具体可参考手册)
    2.遍历 上面表名称:对于每个表名称用函数substr()取前四个字符,比对前四个字符是否为'cdb2_'.如果是将该表名存入数组(比如$del_tablename_arr)
    3.删除以$del_tablename_arr的元素为表名的所有表
    //得到所有表名称
    <?php
        mysql_connect("localhost", "mysql_user", "mysql_password");
        $result = mysql_list_tables("mydb");    for ($i = 0; $i < mysql_num_rows($result); $i++)
        $del_tablename_arr[$i]=mysql_tablename($result, $i));
        mysql_free_result($result);
    ?> 
      

  4.   

    你用的既然是phpmyadmin,那它里面应该有功能选项可以删除表的。