u盘安装 oracle-linux redhat-linux
u盘一个,4G以上(视ISO文件而定)。1,u盘格式化为 FAT32格式。2,从linux的ISO文件中提取出 BOOT.ISO 文件,(ISO文件的images文件夹下),然后用UltraISO 打开BOOT.ISO 点击“启动” “写入硬盘映像” 。完成后这个u盘便具有了boot功能了。3,将LINUX的ISO文件复制到 U盘的根目录。4,以U盘为第一引导,启动电脑。5,进入Linux 启动菜单,按“F2” ,并输入 linux askmethon 进入安装,在选择语言和键盘后,选择 Hard Disk (网上很多都写选ISO是错误的)为安装源即可。之后步骤如同光盘安装一般。 [@more@]
win7 WIN2008 64位 安装使用 PLSQL Developer
64位OS,用PL/SQL的方法;所有安装目录都不能选择在 Program Files(32)中; 下载并安装64位的clinet,下载 instant client 解压 到一个目录。安装pl/sql1,打开 plsql 的 tool --> preferences 在Connection 中,把 oracle Home 和 OCI library 这2个目录指定为 instant client 的目录 就可以了。2,在instantclient的根目录下建立 NETWORK/ADMIN 文件夹,添加 TNSNAMES.ORA 文件。至此所有工作完成,你即有了完整的64位的oracle客户端并且也有了 PLSQL Developer 工具。[@more@]
UNION-MINUS-INTERSECT-UNIONALL
SQL> select * from a; A---------- 1 2 3SQL> select * from b; B---------- 1 4=========================UNION;列出所有,但重复项只列出一次=========================SQL> select * from a union select * from b; A---------- 1 2 3 4=========================差集;列出不重复的项========================================SQL> select * from a minus select * from b; A---------- 2 3
timestamp
timestamp with local time zone 和timesatamp with time zone的区别; 前者在用户提交时间给数据库的时,该类型会转换成数据库的时区来保存数据,即数据库保存的时间是数据库本地时区,当别的用户访问数据库时oracle会自动将该时间转换成当前客户端的时间。转于 http://blog.163.com/zangyunling@126/blog/static/164624505201052113959538/ SQL> CREATE TABLE TIMESTAMP_TEST( 2 TIME DATE, 3 TIMESTP TIMESTAMP(3), 4 TIMESTP_TZ TIMESTAMP(3) WITH TIME ZONE, 5 TIMESTP_LTZ TIMESTAMP(3) WITH LOCAL TIME ZONE); 表已创建。 SQL>
substr截取字符串
PurposeThe SUBSTR functions return a portion of char, beginning at character position, substring_length characters long. SUBSTR calculates lengths using characters as defined by the input character set. SUBSTRB uses bytes instead of characters. SUBSTRC uses Unicode complete characters. SUBSTR2 uses UCS2 code points. SUBSTR4 uses UCS4 code points.If position is 0, then it is treated as 1.If position is positive, then Oracle Database counts from the beginning of char to find the first character.If
rownum
SQL> select *from sales_info;EMPLOYEE_ID WEEK SALES----------- ---------- ---------- 176 6 1000 176 6 1000 176 6 1000 176 6 1000 176 6 1000这样表,如何将 update 第三行 的week 列 的值从 6设为1SQL> update sales_info set week=decode(rownum,3,1,6) where rownum < 4;已更新3行。SQL> select * from sales_info;EMPLOYEE_ID WEEK SALES----------- ---------- ---------
regexp_instr
SQL> select *from a98; ID ADDRESS---------- --------------- 2 abc1 1 1abcSQL> select * from a98 2 where regexp_instr (address,'[^[:alpha:]]') = 1; ID ADDRESS---------- -------------------- 1 1abcSQL> select * from a98 2 where regexp_instr (address,'[:alpha:]') = 1; ID ADDRESS---------- -------------------- 2 abc1= 1 表是匹配第几个字符REGEXP_INSTR 有6个参数: 第一个是输入的字符串 (上面的字段address) 第二个是正则表达式 第三个是标识
ORDER BY
2类order by;1,单纯的 order by;2,union 中的 order by;SQL> SELECT 2 col1,'a' col2 FROM dual 2 UNION 3 SELECT 1,'x' FROM dual 4 UNION 5 SELECT 3,'z' FROM dual 6 ORDER BY 3; // 这个“3” 表示的是以第三列排序,但是没有第三例,所以报错了。ORDER BY 3 *第 6 行出现错误:ORA-01785: ORDER BY 项必须是 SELECT-list 表达式的数目SQL> SELECT 2 col1,'a' col2 FROM dual 2 UNION 3 SELECT 1,'b' FROM dual 4 UNION 5 SELECT 3,'z' FROM dual 6 ORDER BY 1; COL1 C---------- -
nvl
SQL> create table nvl (a int, b int);表已创建。SQL> insert into nvl values (1,1);已创建 1 行。SQL> insert into nvl values (2,null);已创建 1 行。SQL> insert into nvl values (3,3);已创建 1 行。SQL> commit;提交完成。SQL> select count(nvl(b,0)) 2 from nvl where b is null;COUNT(NVL(B,0))--------------- 1SQL> select * from nvl where b is null; A B---------- ---------- 2SQL> select count(*) from nvl where b is null; COUNT(*)----------
MERGE
SQL> select *from orders_master; ORDER_ID ORDER_TOTAL---------- ----------- 1 1000 2 2000 3 3000 4SQL> select *from monthly_orders; ORDER_ID ORDER_TOTAL---------- ----------- 2 2500 3SQL> MERGE INTO orders_master o //目标 2 USING monthly_orders m //源 3 ON (o.order_id = m.order_id) //对比的值 4 WHEN MATCHED THEN //如匹配 5 UPDATE SET o.order_total = m.order_total // 将源的值 更新 到目标 6 DELETE WHER
media&instance-recovery
106.ff A tablespace, tbs_1, offline with the immediate option //offline (normal|temporary|immediate) offline immediate将buffer中的数据不写入就立即关闭。需要备份文件+archivelog+redolog 而instance recovery 不需要备份就可自动恢复的。redolog +undo。 SMON进程实现。D. If the above operation were successful, media recovery would be required to bring the tablespace online.[@more@]
having
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句 限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询 结果。 在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 select max(sal),job emp group by job; (注意max(sal),job的job并非一定要出现,但有意义) 查询语句的select 和group by ,having 子句是聚组函数唯一出现的
group by
-------------所用表-----------------SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 800 20 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 50
GROUPING
GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。1、在ROLLUP中对单列使用GROUPING()SQL> select division_id,sum(salary) 2 from employees2 3 group by rollup(division_id) 4 order by division_id;DIV SUM(SALARY)--- -----------BUS 1610000OPE 1320000SAL 4936000SUP 1015000 8881000加上GROUPING来看看SQL> select grouping(div
foreign key
SQL> create table a (a int);表已创建。SQL> create table b (b int);表已创建。SQL> select * from a; A---------- 1 2SQL> select * from b; B---------- 1 2SQL> alter table a add constraint pk_a primary key (a);表已更改。SQL> alter table b add constraint fk_b foreign key (b) references a (a) on delete cascade;表已更改。 //references 后面的是爸爸============================================================SQL> delete from a where rown
DML-DDL-DQL-DCL
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2 数据操纵语言数据操纵语言DML主要有三种形式:1) 插入:INSERT2) 更新:UPDATE3) 删除:DELETE3 数据定义语言DDL数据定义语言DDL用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER| | | | |表 视图 索引 同义词 簇4
default
SQL> create table a88 (id int,sys_date date default sysdate);表已创建。SQL> insert into a88 values(1);insert into a88 values(1) *第 1 行出现错误:ORA-00947: 没有足够的值SQL> desc a88; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(38) SYS_DATE DATESQL> select sysdate from dual;SYSDATE---
connect by prior
select ... from tablename where 条件3start with 条件1connect by 条件2简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。用上述语法的查询可以取得这棵树的所有记录。其中:条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
alias的使用
不可; having可 ; order by group by[@more@]
foobar转换格式时,输出文件的文件名更详细!
名称格式,使用如下参数;$caps(%genre% %artist% - %album%)$num(%tracknumber%,2) $caps(%title%) [@more@]