oracle日常总结一
1.根据typeid及状态在标准数据表中查询符合条件的记录,这样写效率高SELECT * FROM DefStandCode t WHERE
exists (select 1 from defstandcode d
where d.typeid = #typeid#
andt.typeid = d.typeid
and t.status = #status#)
order by t.sequenceno
详解:exists()后面的子查询被称做相关子查询 他是不返回列表的值的.只是返回一个ture或false的结果(这也是为什么子查询里是"select 1"的原因,换成"select 6"完全一样,当然也可以select字段,但是明显效率低些)
其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 如果是ture则输出,反之则不输出.再根据主查询中的每一行去子查询里去查询.
in()后面的子查询 是返回结果集的,换句话说执行次序和exists()不一样.子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去.符合要求的输出,反之则不输出.
一般来说,exists要比in效率高
2.rownum 返回查询的结果的列数,是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如果你用>,>=,=,between...and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
3.关于Group By
使用group by 遵循的规则:1).出现在select列表中的字段,如果出现的位置不是在组函数中,那么必须出现在Group by 子句中
2).在group by 子句中出现的字段,可以不出现在查询列表中
where 语句后不能现现组函数
组函数最多嵌套两层,如果一个使用组函数的查询没有group by 子句,那么组函数不能嵌套
4.组函数列举常用五个:
AVG、COUNT、MAX、MIN、SUM
5.>ANY 大于子查询数据中的最小值
ALL 大于子查询数据中的最大值
2.导入文件的命令
imp hxebank_local/111111 file=D:\bak\oracle_ebk.dmp fromuser=hxebank_ebk touser=hxebank_local commit=y ignore=y grants=y buffer=20000000 log=D:\bak\ebk_imp.log
2011-07-15
创建表空间:
SQL> create tablespace TS_COM_DAT1
2logging
3datafile'D:\oracle\product\10.2.0\oradata\orcl\TS_COM_DAT1.dbf'
4 > 5autoextend on
6next 50m maxsize 1024m
7extent management local;
2011-08-23
使用本地cmd登录远程服务的sqlplus
sqlplus 用户名/密码@服务器IP
页:
[1]