【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