请教几个MySql操作相关的问题,请各位高手指点:
1)表m中有一字段(暂称该字段为cola),类型为varchar(16),该字段的最长取值为16个字符。现在需要基于cola执行聚合统计操作。为了提高执行效率,有没有必要,先将cola字段进行类型转化为 char 16,再执行group by cola操作呢?
2)续1)中所描述的表为例,表n中也有一个字段(暂称该字段为colb),类型为varchar(16),该字段的最长取值为16个字符。现在需要执行表m与表n基于cola=colb的联合操作。为了提高执行效率,有没有必要,先将cola、colb字段进行类型转化为 char 16,再执行join on m.cloa=n.colb操作呢?
如果1),2)问题,大家觉得有必要转换,可否简单地说明一下原因,多谢~3)在执行Mysql的联合操作时,发现一张表中char类型的字段可以与另外一张表的varchar类型的字段作为联合字段,也即char类型字段的取值可以与varchar类型字段的取值被Mysql判断为相同,有没有高手解释一下Mysql中char类型字段与varchar类型字段之间执行比较操作时,是如何执行的?
4)表m与表n执行联合操作语句:select * from tablem left join table n。如果tablem与tablen中有相同名称的字段,则该查询操作语句会被提示执行错误。我记得sql server中,如果出现了相同名称的字段,则会在结果中以table.col的形式进行命名字段,在mysql中可以实现相同的操作嘛?
5)使用SecureCRT上连接远程服务器执行Mysql的查询操作。如果查询的结果中有中文字段(text类型)显示,则查询操作结果在SecureCRT的shell界面上显示时会出现一个问题:最左边的一列会显示不正常(显示不完整,多数是最左侧的字符缺失),是否是朋友遇到过类似的问题,有相应 的解决方法不?

解决方案 »

  1.   

    1 没必要
    3 一个个字符比较
    4 select * from table m left join table n on m.id=on.id这样是没问题的
    5 我用secureCRT没遇到过这个问题  下载个新版本试试
      

  2.   

    多谢rucypli的回复,追加一个问题,是否有方法可以完成:
    从Mysql中导出表的内容到文本文件时候,将表的各个字段的名称也一并导出;相应的:
    将文本文件的数据导入到Mysql的表的时候,将文本文件第一行的取值作为表的各字段的名称,并完成表的创建以及内容的导入;
      

  3.   

    那直接出sql形式的数据就可以导出
    mysqldump -uroot -pxxxx  yourdbname youtablename > /home/xxx.sql导入mysql yourdbname < /home/xxx.sql
      

  4.   

    再次谢谢,可是如果我的表格是非sql的格式的呢,比如说*.csv格式的,有操作方法不?
      

  5.   

    从Mysql中导出表的内容到文本文件时候,将表的各个字段的名称也一并导出;
    mysql -uuser -ppassword -e "sql statements" database > result.txt将文本文件的数据导入到Mysql的表的时候,将文本文件第一行的取值作为表的各字段的名称,并完成表的创建以及内容的导入不能做到,除非文本内容是建表SQL语句
      

  6.   

    补充一个问题,请顺便指教一下:
    在创建表的时候,对于某一个字段cola,指定其属性包括 text not null。然后向这张表中导入外部文本文件的数据。当文本文件中有些行中,cola对应的值为空时,导入操作依然可以成功。请教一下,此时在数据库中对应行条目的cola的取值是什么?另外,当某一个字段(令为colb)的某一行的值为null的时候,在使用where colb=0时,可以筛选出该行,但是使用where colb is null的时候,则不可以筛选出colb=0的行。这样正常嘛?
      

  7.   

    另外,当某一个字段(令为colb)的某一行的值为null的时候,在使用where colb=0时,可以筛选出该行,但是使用where colb is null的时候,则不可以筛选出colb=0的行。这样正常嘛?正常,ifnull(colb,0)=0
      

  8.   

    多谢版主大人的指点:)
    此处的"sql statements"指的是?
    可以完成我需要的将一个表的字段名称导出的文本文件中嘛?
      

  9.   

    版主大人:我又试了一下,当某一个字段(令为colb)的某一行的值为null的时候,在使用where colb=0时,发现又不可以筛选出该行。所以请帮忙确认一下:
    当某一个字段(令为colb)的某一行的值为null的时候,在使用where colb=0的筛选条件时,可不可以筛选出该行?
      

  10.   

    mysql -uuser -ppassword -e "select * from tt" database > result.txt当某一个字段(令为colb)的某一行的值为null的时候,在使用where colb=0的筛选条件时,可不可以筛选出该行?不可以, where ifnull(colb,0)=0