1. 常用的DDL语句及系统级命令
1.1 查看有哪些表空间:
SELECT * FROM DBA_TABLESPACES;
1.2 创建表空间:
CREATE TABLESPACE myspace DATAFILE 'D:\oracle\product\10.1.0\oradata\orcl\myspace.dbf' SIZE 1000M;
1.3 创建用户:
CREATE USER lxzf IDENTIFIED BY lxzf DEFAULT TABLESPACE myspace;
1.4 给用户授权:
GRANT connect,resoyrce,[dba] TO lxzf;[COMMIT]
1.5 导入命令:
IMP lxzf/lxzf@orcl [fromuser=username touser=username] file=dump's path [full=y];
1.6启动或停止监听程序进入Dos方式输入如下命令
lsnrctl start/stop
1.7Conn用法:
命令提示窗口->sqlplus/nolog
conn sys/sys@ynsi2 [as sysdba];(ynsi2为Net8配的ServiceName)
1.8EXP导出命令(导出指定表)
exp ynsi2/ynsi2@ynsi2 file=c:\yhcip.dmp tables=(ab50a3,aa10
1.8EXP导出命令(只导表结构不导数据)
exp ynsi2/ynsi2@ynsi2 file=c:\yhcip.dmp rows=no
1.9关闭重启数据库
shutdown immediate; startup;
1.10执行.SQL文件
SqlPlus下使用如下命令:start filepath 或者@filepath
2.常用的DML语句
2.1 计算年龄
(to_char(to_date(‘1982-09-21’, 'yyyy/mm/dd hh24-mi-ss'), 'yyyy') -
to_char(sysDate, 'yyyy'))
2.2日期转换函数
aae031 = to_date(#kssj#, 'yyyy-mm-dd')
2.3带时间格式化的查询语句
select * from by10cyjsb where yybm = '00000003' and zflb = '12' and yab060 = '0000' and jbsj >= to_date('2006-11-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and jbsj <= to_date('2006-11-30 23:59:59', 'yyyy-mm-dd hh24-mi-ss');
2.4 一次插入整行结果集
Insert into ldzf.by10cyjsb select * from yncsi.by10cyjsb where sxh = 'PP10000001';
2.5取系统当月最后一天
SELECT to_char(LAST_DAY(SYSDATE),'yyyy-mm-dd') FROM dual;
2.6使用外连接代替效率低下的"Not in"语句
select sxh,grbm from by09zyfymx where by09zyfymx.sxh not in(Select sxh from by10cyjsb where fyze>=1200);
上面的语句如果by09zyfymx有10000条纪录,by10cyjsb有100000条纪录,则要通过10000*100000次比较才能得出结果来,可以使用外连接来 提高效率:
select sxh,grbm from by09zyfymx,by10cyjsb where by09zyfymx.sxh=by10cyjsb.sxh(+) and by10cyjsb.sxh is null and by10cyjsb.fyze>=1200;
3.Oracle注意事项
3.1Oracle10g标准版不支持Partition功能,企业版踩支持分区功能.
3.2CMD启动监听报务无监听程序,协议错误。再管理服务里启动监听报路径错误:
解决办法:很有可能是启动服务的程序指向没对,查看服务属性的启动路径。如果不对则修改注册表既可。local_mathine----->system---->currentControlSet------>service ------> oracle相关设置:c:\oracle\product\10.1.0\db_1\BIN\TNSLSNR
3.3删除表的注意事项
在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。