关于MySql:MySql-如果不存在其他表,则创建表吗?

关于MySql:MySql-如果不存在其他表,则创建表吗?

MySql - Create Table If Not Exists Else Truncate?


shmuel613,最好是更新您的原始问题,而不是答复。最好是在一个地方包含完整的问题,而不要在讨论中分散讨论。

本的答案是合理的,除了他似乎不想回答的地方有一个"不"的意思。仅在表不存在的情况下才删除表是不正确的。

您确实需要多个语句。有条件创建然后填充:

  • 如果不存在则创建临时表fubar(id int,name varchar(80))
  • TRUNCATE TABLE fubar
  • 插入fubar SELECT * FROM barfu
  • 或者只是拖放并重新创建

  • 如果存在则删除表fubar
  • 创建临时表fubar SELECT ID,名称为barfu
  • 使用纯SQL,这是您真正的两种解决方案。我喜欢第二更好。

    (通过存储过程,您可以将其简化为一条语句。类似:TruncateAndPopulate(fubar),但是到编写TruncateAndPopulate()的代码时,您将花费更多的时间,而不仅仅是使用上面的SQL。)


    执行任何查询(如果表存在)。

    用法:call Edit_table(database-name,table-name,query-string);

    • 该过程将检查数据库名称下是否存在表名称,如果存在则执行查询字符串。
      以下是存储过程:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    DELIMITER $$

    DROP PROCEDURE IF EXISTS `Edit_table` $$
    CREATE PROCEDURE `Edit_table` (in_db_nm varchar(20), in_tbl_nm varchar(20), in_your_query varchar(200))
    DETERMINISTIC
    BEGIN

    DECLARE var_table_count INT;

    select count(*) INTO @var_table_count from information_schema.TABLES where TABLE_NAME=in_tbl_nm and TABLE_SCHEMA=in_db_nm;
    IF (@var_table_count > 0) THEN
      SET @in_your_query = in_your_query;
      #SELECT @in_your_query;
      PREPARE my_query FROM @in_your_query;
      EXECUTE my_query;

    ELSE
      select"Table Not Found";
    END IF;

    END $$
    DELIMITER ;

    有关Mysql的更多信息


    您可以在"如果不存在则创建"之后进行截断。
    这样,它将始终存在...并在那时始终为空。

    1
    2
    CREATE TABLE fubar IF NOT EXISTS
    TRUNCATE TABLE fubar

    怎么样:

    1
    2
    DROP TABLE IF EXISTS fubar;
    CREATE TABLE fubar;

    或者您是说只想通过一个查询来做到这一点?


    如果您使用的是PHP,请在删除表之前使用mysql_list_tables检查该表是否存在。


    好的,还不错。更具体地说,当前查询正在执行以下操作:

    1
    2
    $sql1 ="TRUNCATE TABLE fubar";
    $sql2 ="CREATE TEMPORARY TABLE IF NOT EXISTS fubar SELECT id, name FROM barfu";

    第一次运行包含此方法的方法时,由于该表尚不存在,它会在截断时生成一条错误消息。

    我唯一的选择是执行"创建表",运行"截断表",然后填写表吗? (3个独立的查询)

    PS-感谢您的迅速回复!


    推荐阅读

      linux命令删除用户组?

      linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

      linux删除重复项命令?

      linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,

      linux硬链接删除命令?

      linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

      linux交互删除命令?

      linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

      linux删除无用的命令?

      linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,L

      删除文件linux命令行?

      删除文件linux命令行?,命令,文件,不了,档案,名称,系统,数据,目录,文件夹,终

      linux命令行删除网卡?

      linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,l

      linux命令删除字符串?

      linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

      linux删除整个命令?

      linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

      linux如何命令删除?

      linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,l

      删除路由命令linux?

      删除路由命令linux?,系统,信息,网络,地址,管理,环境,路由,命令,工作,基础,WIN

      linux命令删除当前行?

      linux命令删除当前行?,系统,位置,命令,文件夹,文件,标的,数据,环境,通用,不

      linux删除jog命令?

      linux删除jog命令?,工具,软件,连续,机器人,位置,中心,工作,平稳,人员,自动化

      linux删除服务的命令?

      linux删除服务的命令?,服务,系统,软件,平台,名称,管理,环境,产品,命令,文件,

      linux删除rm命令?

      linux删除rm命令?,系统,命令,文件夹,不了,通用,名称,环境,文件,目录,下面,lin

      linux系统删除的命令?

      linux系统删除的命令?,软件,系统,名称,工具,不了,命令,文件夹,电脑,通用,信

      linux删除命令文件夹?

      linux删除命令文件夹?,系统,数据,通用,文件夹,命令,文件,环境,百度,不了,名

      linux删除本行命令?

      linux删除本行命令?,系统,本行,档案,命令,资料,商业,文件,终端,目录,文件名,L

      linux删除第一行命令?

      linux删除第一行命令?,单位,系统,命令,标的,不了,数字,连续,名称,档案,文件,m

      linux删除本行命令?

      linux删除本行命令?,系统,本行,档案,命令,资料,商业,文件,终端,目录,文件名,L