服务器 频道

Sql使用技巧问答--informix篇

  【IT168 服务器学院】1. 问: 怎么样更新一个表里的一个字段的前n位(char型)值啊?
  答:update tabname
  set a[1,n] = ''XXX''
  where ........;

  2. 问:有两个表A,B ,A的主键同B的主键都是id+name ,A,B的表结构不同
  请问如何用一个SQL语句实现 从A中查找出所有主键值只在A中而不在B中的数据?
  答:select * from A
  where not exists
  ( select * from B
  where B.id = A.id
  and B.name = A.name
  ) ;

  3. 问:怎么样从A表中按b字段排序 ,并取出第一条数据?
  答:select first 1 *
  from A
  order by b;

  4. 问:一个student表中有一个姓氏字段firstname,请问如何统计该表有多少个姓氏?
  答:select count(distinct first_name) from table;

  5. 问: select *
  from a
  1. where a1 not in(''1'',''2'');
  2.where a1 != ''1''
  and a1 != ''2'';
  一般情况下那种效率更高?
  答:无索引 2 better 1 ,有索引可能  2=1
      
  6. 问:一数据库里的某一表的字段值错误,我现在想修改正确,我在别的数据库里找到了这个字段对应的数值,例如要更新a表里的值,我现在有一个文件是a表里的另一个字段(值唯一)和这个a表里正确的数值,请问怎么样做?
  答:awk -F "|" ''{print "update a set 字段1="$1"where 字段2="$2";"}'' file.txt >; update.sql

  7. 问:一个sql语句时在shell程序中执行的,我将shell程序终止,但是通过onstat -g sql 仍然能看到这个sql,我需要如何做才能将其停止?
  答:onmode -z SESSONID ,其中sessionid: 通过onstat -u命令取得

  8. 问:请教isql - - << ! 中的--<<!是什么意思?如
     isql - - <<!
     select * from kkk
     !
  答:作用是可以将SQL语句写成SHELL 程序,在$下运行。!是隔离符号, 内容结束要再加一个!。第一个<表示isql 的输入来自与标准输入0,第二个<表示标准输入的来自于以分隔符!开始的文本。

  9. 问: esql 中 like 子句如何处理?如
   esql 语句如下:
       select * from test where n1 like ''$aaa'';
       $aaa 是属主变量。
  答:sprintf(aaa,"%% 111%%");
  select * friom test where n1 like $aaa
  注意 $aaa 没有引号

  10. 问: cron中的isql问题:20 12 * * * /syscron/bf 1>;/syscron/bflog 2>;>;&1 我单独执行/syscron/bf能顺利卸出数据 可是在crontab 执行时却报
  isql not found 请教这是怎么回事啊!?
  答:crontab中运行的脚本,必须加上相应的运行环境,命令最好用绝对路径调用

  11. 问:表tbl中有a,b,c三个字段,我想找出所有b字段内容有重复(或者没有重复)的记录。这样的sql语句如何写?
  答:select b from tablename group by b having count(*)>;1(找有重复)

  12. 问:如何倒出数据库中的单张表结构 ?
  答:在shell下运行如下命令
  dbschema -d 数据库名 -t 表名 表名.sql
  

0
相关文章