如何将MySql列名转换为小写以提高可读性?

时间:2014-02-09 07:58:54

标签: mysql

我有一个包含十几个表格的数据库,这些表格在低级和大写的使用方面存在不规则性。有没有一种简单的方法将所有mysql表中的所有列名转换为小写?也许除了以" _ID"结尾的字符串之外?

我知道mysql不区分大小写。这就是更好的可读性。如果您有列名称,如"作者"," AUTHOR_ID"和"作者名称"在一个表格中,它很难阅读,我希望使用小写字母使其更加一致。

3 个答案:

答案 0 :(得分:4)

编辑: - 打开phpMyAdmin。 - >点击导出并将文件导出为* .sql文件。 - >编辑SQL文件,你会发现很多创建表和这样的查询 - >在文本编辑器中编辑名称并保存。 - >打开phpMyAdmin并删除所有表并导入先前保存的* .sql文件并运行它,它应该可以解决问题!

否则:

不同的数据类型有不同的要求,因此您需要UNIONs:

SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(character_maximum_length)||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'CHAR', 'VARCHAR' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'INTEGER' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||'('||CHAR(numeric_precision)||','||CHAR(numeric_scale)|');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'FLOAT' )
    ORDER BY table_name
    UNION
SELECT 'ALTER TABLE '||table_name||' CHANGE '|| column_name||' '||lower(column_name)||' '||datatype||');' AS Line
    FROM information_schema.columns
    WHERE table_schema = dbname and datatype in ( 'DATE' )
    ORDER BY table_name

另外:a MYSQL script to convert the column names to lowercase

答案 1 :(得分:1)

此:

$sql = mysqli_query($dbConn,"SHOW TABLES");

$tables=array();
while($table_row = mysqli_fetch_array($sql))
{
    $tables[]=$table_row[0];
}
foreach($tables as $table){
    $sql = mysqli_query($dbConn,"SHOW COLUMNS FROM ".$table);

    $query = "ALTER TABLE ".$table;
    while($column_row = mysqli_fetch_array($sql))
    {
        if(substr($column_row['Field'],-3)=="_ID"){

            $new_column = strtolower(substr($column_row['Field'],0,-3))."_ID";
        }
        else
        {
            $new_column = strtolower($column_row['Field']);
        }

        $query .= " CHANGE COLUMN ". " " .$column_row['Field']." ".$new_column. " " . $column_row['Type'] . " " . (($column_row['Null']=='YES')?'NULL':'NOT NULL') . " " . (($column_row['Default']=='')?'':' DEFAULT '.$column_row['Default']) . " " . $column_row['Extra'] . ",";

    }
    $query = rtrim($query,',');
    echo $query;
    echo "<br><br><br>";
}

将为您提供每个表中每列的所有ALTER TABLE语句的列表。

警告:

我已经在屏幕上对打印所有ALTER语句进行了上述查询,但是,您可以自行决定是否执行它。我不确定您的数据库在执行后是否会保持不变,因为它们可能无法涵盖您为每列选择的所有可能的数据类型和条件

执行上述操作后,它不会对您的数据库进行更改,并查看是否有任何列缺少任何重要的数据类型或条件值。

答案 2 :(得分:-1)

你好示例代码,你可以帮助你。

$c1 = mysql_connect("localhost","root","");// Connection




$db1 = mysql_select_db("INFORMATION_SCHEMA");



$get_column = mysql_query("SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='data_base_name' AND `TABLE_NAME`='table_name'");

while($row = mysql_fetch_assoc($get_column)){


$old_name = $row['COLUMN_NAME'];
$new_name = strtolower($row['COLUMN_NAME']);
$datatype= $row['DATA_TYPE'];
$size = $row['CHARACTER_MAXIMUM_LENGTH'];



if($row['DATA_TYPE'] !="varchar" && $row['DATA_TYPE'] !="text"){
$query =  "ALTER TABLE mstusers CHANGE $old_name $new_name $datatype".";<br/>";
}else{

$query =  "ALTER TABLE mstusers CHANGE $old_name $new_name $datatype ($size)".";<br/>";
}
echo $query;


}

// Query paste in your  phpmyadmin

请查看此链接了解更多详情

http://myphpinformation.blogspot.in/2016/10/convert-column-name-into-lowercase-in-mysql-and-php.html