1:windows下手工建立数据库
2:WINDOWS下手动启动数据库
3:临时表的学习
4:SQLPLUS中的NEW_VAL的用法
5:UNION中的ORDER BY
[@more@]1:手工创建数据库
1.1:准备初始化参数文件
1.2:ORADIM创建实例。
(创建口令文件,创建服务) --假如实例名love
1.3:$ORA_BASE变量指定的目录下的ADMIN子目录,建立一个love文件夹及子文件夹
(可以拷贝D:oracleora92adminsample文件夹下的内容到love子文件夹下)
1.4:STARTUP NOMOUNT PFILE=D:ORACLEADMINLOVEPFILEINITLOVE.ORA';
可以创建SPFILE:CREATE SPFILE FROM PFILE;
1.5:准备创建数据文件和日志文件的目录
1.6:CREATE DATABASE LOVE
DATAFILE '....' SIZE ... ---这个数据文件是系统表空间数据文件
若是不知道创建数据库的脚本可以到目录:.../rdbmsbulid_db.sql脚本
1.7:建立数据字典
执行脚本:...rdbmscatalog.sql,..catproc.sql...
2:手工启动数据库
net start oracleservicewang;
net stop oracleservicewang;
这些命令受注册表参数:ORA_SID_AUTOSTART的影响。
3:临时表的学习
临时表分为事务级和会话级(通过ON COMMIT CLAUSE控制)
事务级:表定义的结构每个会话都可以看见,但是数据只有这个事务能够看见。ON COMMIT PRESERVE ROWS
会话级:表定义的结构每个会话都可以看见,但是数据只能够此会话看见,即使COMMIT了(既事务结束),此会话也能够看见数据
1:如何创建临时表
CREATE GLOBAL TEMPORARY TABLE TEST
(ID NUMBER)
ON COMMIT PRESERVE ROWS; ---会话级(PRESERVE换成DELETE就是事务级)
备注:默认创建的是事务级。
测试案例:
1>:事务级测试
SQL> create global temporary table test
2 (id number);
表已创建。
SQL> insert into test values(1);
已创建 1 行。
SQL> select * from test;
ID
----------
1
SQL> commit;
提交完成。
SQL> select * from test;
未选定行
2>:会话级测试:
SQL> CREATE GLOBAL TEMPORARY TABLE TEST
2 (ID NUMBER)
3 ON COMMIT PRESERVE ROWS;
表已创建。
SQL> INSERT INTO TEST VALUES(1);
已创建 1 行。
SQL> SELECT * FROM TEST;
ID
----------
1
SQL> COMMIT;
提交完成。
SQL> SELECT * FROM TEST;
ID
----------
1
SESSION2:开另外一个会话查看数据
SQL> SELECT * FROM TEST;
未选定行
4:SQLPLUS的NEW_VAL
new_val其实是SQLPLUS中COLUMN的一个选项:
SQL> select id,dat from test;
ID DAT
---------- ----------
1 02-1月 -05
2 02-2月 -55
SQL> column id new_val id2;
SQL> select id,dat from test;
ID DAT
---------- ----------
1 02-1月 -05
2 02-2月 -55
SQL> select &id2 from test;
原值 1: select &id2 from test
新值 1: select 2 from test
2
----------
2
2
SQL>
5:UNION 中的ORDER BY
我在UNION中可以使用ORDER BY 但是ORDER BY 后的列名必须是表1的名(别名)而不是表2的。
select id id1,name from test
union
select id,name from t order by id1 --(此处必须是ID1,不能是ID)
对于SELECT * FROM TEST UNION SELECT * FROM T 不能够使用ORDER BY