ÈÝÒ×µÃ˵£¬¾¹ýdbms_random°üµ÷ÓÃËæ»úÊýµÄ²½Öè´óÌåÓÐ4ÖÖ£º
Ò»¡¢dbms_random.normal
Õâ¸öº¯Êý²»´ø²ÎÊý£¬»á»Øµ½normal distributionµÄÒ»¸önumberÃÅÀ֮࣬ËùÒÔ´óµÖËæ»úÊý»áÔÚ-Ò»µ½Ò»Æä¼ä¡£
¼òÂÔ²âÊÔÁËÒ»ÏÂ×Ó£¬·¢×÷100000´Î×î´óÄܵ½ÎåÉÏÏ£º
SQL> declare
¶þ i number:=Áã;
Èý j number:=Áã;
ËÄ begin
Îå for k in Ò» .. 100000 loop
Áù i:= dbms_random.normal;
Æß if i > j
°Ë then j:=i;
¾Å end if;
Ê® end loop;
11 dbms_output.put_line(j);
12 end;
13 /
5.15325081797418404136433867107468983182
PL/SQL procedure successfully completed
¶þ¡¢dbms_random.random
Õâ¸öҲûÓвÎÊý£¬»ØÀ´Ò»¸ö´Ó-power(¶þ,31)µ½power(¶þ,31)µÄÕûÊýÖµ
Èý¡¢dbms_random.value
Õâ¸öº¯Êý·Ö³ÉÁ½ÖÖ£¬Ò»ÖÖÊÇû²ÎÊý£¬ÔòÖ±½Ó»ØÀ´Áã-Ò»Æä¼äµÄ38λСÊý
SQL > column value format 9.99999999999999999999999999999999999999
SQL > select dbms_random.value from dual;
VALUE
-----------------------------------------
.58983014999643548701631750396301271752
µÚ¶þÖÖÊǼÓÉÏÁ½¸ö²ÎÊýa¡¢b£¬Ôò»ØÀ´ÖµÔÚa¡¢bÆä¼äµÄ38λСÊý
SQL > column value forma ......
СÒý
Oracle RdbmsÊ©ÓÃÁ˸÷ÖÖ²»Í¬ÀàÐ͵ÄËø¶¨»úÖÆ£¬latchµÈÓÚ´ËÖеÄÒ»ÖÖ£¬ÕýÎĽ«¼¯ÖÐÒý¼ûlatch(ãÅ)µÄ¸ÅÄ¶®µÃlatchµÄ¶ÒÏÖ²½Ö貢˵Ã÷»½ÆðlatchĦ²ÁµÄÔµ¹Ê¡£
ʲôÊÇlatch
LatchÊÇÓÃÀ´±£»¤SGAÇøÖй²ÏíÊý¾Ý½á¹¹µÄÒ»ÖÖ´®Ðл¯Ëø¶¨»úÖÆ¡£LatchµÄ¶ÒÏÖÊÇÓë²Ù×÷ϵͳÏà¸ÉµÄ£¬ÓÈÉõºÍÒ»¸ö¹ý³ÌÊDz»ÊÇØ½ÐèµÈºòÒ»¸ölatch¡¢¼±ÐèµÈºò¶à³¤Ê±¼äÏà¹Ø¡£
Latch ÊÇÒ»ÖÖÄܹ»¼«¿ìµØ±»»ñÈ¡ºÍ¿ªÊ͵ÄËø£¬ËüÒ»°ãÓÃÀ´±£»¤ÃèÊöbuffer cacheÖÐblockµÄÊý¾Ý½á¹¹¡£Óëÿ¸ölatchÏàÁªÏµµÄÔÙÓÐÒ»¸öɨ³ý½ø³Ì£¬Ó¦»³ÓÐlatchµÄÀú³Ì±ä³ÉËÀÀú³Ìʱ£¬¸Ãɨ³ýÀú³Ì¾Í»á±»µ÷Óá£Latch »¹¾ßÓÐÏà¸É¼¶±ð£¬ÓÃÀ´·ÀÖ¹ËÀËø£¬ÍòÒ»Ò»¸öÀú³ÌÔÚij¸ö¼¶±ðÉÏʧȥһ¸ölatch£¬Ëü¾Í²»¿ÉÄÜÔÙÈ¡µÃͬµÈ»ò½ö´ÎÓڸü¶±ðµÄlatch¡£
LatchÓëEnqueue£¨ÐÐÁУ©
Enqueue ÊÇOracleÊ©ÓõÄÁíÒ»ÖÖËø¶¨»úÖÆ£¬ËüÓú¼Ó¸´ÔÓ£¬ÈÝÐí¼¸¸ö²¢·¢¹ý³Ì²»Í¬³Ì¶ÈµØ¹²ÏíijЩ×ÊÔ´¡£Èκοɱ»²¢·¢ÔËÓõĶÔÏó¾ù¿ÉÓ¦ÓÃenqueue¼ÓÒÔ±£»¤¡£1 ¸öµäÐ͵ÄÊÂÀýÊDZíµÄËø¶¨£¬ÎÒÃÇÈÝÐíÔÚÒ»¸ö±íÉÏÓв»Æ½¼¶±ðµÄ¹²Ïí¡£Óëlatch²»Í¬Ö®¾ÓÓÚÓÚ£¬enqueueÊÇÔËÓòÙ×÷ÏµÍ³ÌØ¶¨µÄËø¶¨»úÖÆ£¬Ò»¸ö enqueueÈÝÐíÓû§ÔÚËøÉÏÖü´æÒ»¸ö±ê¼Ç£¬À´±íÃ÷ÇëÇóËøµÄ·½Ê½¡£²Ù×÷ϵͳlock manager×·×ÙÈ«²¿±»Ëø¶¨µÄ×ÊÔ´£¬È ......
1.Çó²¿ÃÅÖÐÄÄЩÈËнˮ×î¸ß£º
select ename,sal
from emp join
(
select max(sal) max_sal, deptno
from emp
group by deptno
) t
on (emp.sal = t.max_sal and emp.deptno = t.deptno);
2.Çó²¿ÃÅÆ½¾ùнˮµÄµÈ¼¶£º
select deptno, avg_sal, grade
from
(
select deptno, avg(sal) avg_sal
from emp
group by deptno
) t join salgrade s
on (t.avg_sal between s.losal and s.hisal);
3.Çó²¿ÃÅÆ½¾ùµÄнˮµÈ¼¶£º
select deptno, avg(grade)
from (
select deptno, ename, grade
from emp join salgrade s
on emp.sal between s.losal and s.hisal
) t
group by deptno;
4.ÇóÄÄЩÈËÊǾÀíÈË£º
select ename from emp where empno in (select distinct mgr from emp);
5.²»×¼Óþۼ¯º¯Êý£¬ÇóнˮµÄ×î¸ßÖµ£º
select distinct sal
from emp
where sal not in
(
select distinct e1.sal
from emp e1 join ......
001¡¢×Ö·û
length/lengthb ×Ö·ûÊý(1¸öºº×Ö1¸ö×Ö·û) / ×Ö½ÚÊý(1¸öºº×Ö2¸ö×Ö½Ú)
ltrim/rtrim/trim ɾ³ý¿Õ¸ñ
lower/upper ´óСдת»»
select length('abc') from dual;
select substr(ename, 1, 3) from emp; ´ÓµÚÒ»¸ö×Ö·û¿ªÊ¼½Ø£¬Ò»¹²½Ø3¸ö×Ö·û
substr('abcdefg',2,3) => bcd ´ÓµÚ2¸öλÖÃÈ¡3¸ö
substr(str,length(str)-n+1,n); ÓÒÈ¡´®
select chr(65) from dual; //ASCIIÂëת»»³É×Ö·û
select ascii('A') from dual; //×Ö·ûת»»³ÉASCIIÂë
002¡¢ÈÕÆÚ
select sysdate from dual;
select current_date from dual;
select next_day(sysdate,'ÐÇÆÚÒ»') from dual; ÏÂÒ»¸öÐÇÆÚÒ»ÊÇÄÄÒ»Ìì
alter SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
003¡¢to_char
ÊýÖµ¸ñʽ
9´ú±íһλÊý×Ö£¬Ã»ÓоͲ»ÏÔʾ£¬Ð¡ÊýµãºóµÄÊý×Ö±ØÐëÏÔʾ
select to_char(sal, '$99,999.9999') from emp;
0´ú±íһλÊý×Ö£¬¸ÃλûÓÐÊý×Ö£¬ÔòÏÔʾ0
select to_char(sal, '$00,000.0000') from emp;
»õ±Ò¸ñʽ£¬LÖ¸±¾µØ»õ±Ò
select to_char(sal, 'L99,999.9999') from emp;
ÈÕÆÚ¸ñʽ
select to_char(hiredate, 'yyyy-mm-dd hh:mi:ss') from em ......
oracle ĬÈϸôÀëµÈ¼¶ÊÇ£º¶ÁÒÑÌá½»¡£
²éÑ¯Ëø¶¨£¬·ÀÖ¹ÁíÍâÓû§¸üУº
select * from books for update;
µ±Ç°Óû§¸üÐÂÖ®ºó£¬ÁíÍâÓû§¿ÉÒÔ¸ü¸Ä¡£
01¡¢±íÁ¬½Ó
¼Ù¶¨from×Ó¾äÖдÓ×óµ½ÓÒÁ½¸ö±í·Ö±ðΪA£¬B±í¡£
ÄÚÁ¬½Ó£ºÑ¡È¡A¡¢B±íµÄÍêȫƥÅäµÄ¼¯ºÏ£¬Á½±í½»¼¯£º
select empno,ename,emp.deptno A,dept.deptno B,dname from emp inner join dept on emp.deptno=dept.deptno;
×óÍâÁ¬£ºÑ¡È¡A±íÈ«²¿ÒÔ¼°A¡¢B±í½»¼¯
select dname,dept.deptno A,emp.deptno B,empno,ename from dept left join emp on dept.deptno=emp.deptno;
ÓÒÍâÁ¬£ºÑ¡È¡B±íÈ«²¿ÒÔ¼°A¡¢B±í½»¼¯
select empno,ename,emp.deptno A,dept.deptno B,dname from emp right join dept on emp.deptno=dept.deptno;
02¡¢±íÁªºÏ
ÕûºÏ½á¹û¼¯²¢Ïû³ýÖØ¸´ÐУº
select empno,ename from emp
union
select deptno,dname from dept;
03¡¢¿ÕÖµ
select empno,ename,nvl(comm,0) from emp; --ÕýÈ·£¬commÓë0ÀàÐÍÏàͬ
select empno,ename,nvl(comm,'¿ÕÖµ') from emp; --´íÎó£¬commÓë'¿ÕÖµ'ÀàÐͲ»Í¬
select empno,ename,comm from emp where comm is null;
select empno,ename,comm from em ......
Oracle Ö÷ÒªÅäÖÃÎļþ½éÉÜ£º
profileÎļþ£¬oratab Îļþ£¬Êý¾Ý¿âʵÀý³õʼ»¯Îļþ initSID.ora£¬¼àÌýÅäÖÃÎļþ£¬ sqlnet.ora Îļþ£¬tnsnames.ora Îļþ
1.2 Oracle Ö÷ÒªÅäÖÃÎļþ½éÉÜ
1.2.1 /etc/profile Îļþ
ϵͳ¼¶µÄ»·¾³±äÁ¿Ò»°ãÔÚ/etc/profile ÎļþÖж¨Òå ÔÚ CAMS ϵͳ ÓëÊý¾Ý¿â
Ïà¹ØµÄ»·¾³±äÁ¿¾Í¶¨ÒåÔÚ/etc/profile ÎļþÖÐ ÈçÏÂËùʾ
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export PATH=$PATHORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_SID=cams
......