Mysql脚本检查列表是否存在或在表中添加列之前

问题描述:

我需要mysql脚本(不是存储过程)来检查列是否存在或在更改表之前。Mysql脚本检查列表是否存在或在表中添加列之前

+0

看到这个http://*.com/questions/3395798/mysql-check-if-a-column-exists-in-a-table-with-sql – abhinav 2012-03-05 06:51:13

试试这个

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'db_name' 
AND TABLE_NAME = 'table_name' 
AND COLUMN_NAME = 'column_name' 

SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'my_table' AND COLUMN_NAME = 'my_column' 

如果上面的内容返回0行,那么您知道该列不存在。

您可以用这种方式

SHOW columns from `yourtable` where field='yourfield' 

可以检索字段的存在做...

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'your_db_name' 
AND TABLE_NAME = 'your_table_name' 
AND COLUMN_NAME = 'your_column_name' 

...但你根据结果​​不能添加ALTER-陈述。 SQL不能做到这一点。

这种逻辑的地方是存储过程或应用程序语言。

试试这个

function add_column_if_not_exist($db, $column, $column_attr ="VARCHAR(255) NULL") 
{ 
    $exists = false; 
    $columns = mysql_query("show columns from $db"); 
    while($c = mysql_fetch_assoc($columns)){ 
     if($c['Field'] == $column){ 
      $exists = true; 
      break; 
     } 
    }  
    if(!$exists){ 
     mysql_query("ALTER TABLE `$db` ADD `$column` $column_attr"); 
    } 
}