Oracle Dimension £¨Oracle ά£©
ÔÚÊý¾Ý²Ö¿â»·¾³ÖУ¬ÎÒÃÇͨ³£ÀûÓÃÎﻯÊÓͼǿ´óµÄ²éÑ¯ÖØÐ´¹¦ÄÜÀ´ÌáÉýͳ¼Æ²éѯµÄÐÔÄÜ£¬µ«ÊÇÎﻯÊÓͼµÄ²éÑ¯ÖØÐ´¹¦ÄÜÓÐʱºòÎÞ·¨ÖÇÄܵØÅжϲéѯÖÐһЩÏà¹ØÁªµÄÌõ¼þ£¬ÒÔÖÁÓÚÓ°ÏìÐÔÄÜ¡£±ÈÈçÎÒÃÇÓÐÒ»ÕÅÏúÊÛ±ísales£¬ÓÃÓÚ´æ´¢¶©µ¥µÄÏêϸÐÅÏ¢£¬°üº¬½»Ò×ÈÕÆÚ¡¢¹Ë¿Í±àºÅºÍÏúÊÛÁ¿¡£ÎÒÃÇ´´½¨Ò»ÕÅÎﻯÊÓͼ£¬°´Ô´洢ÀÛ¼ÆÏúÁ¿ÐÅÏ¢£¬¼ÙÈçÕâʱºòÎÒÃÇÒª²éѯ°´¼¾¶È»òÕß°´Äê¶Èͳ¼ÆÏúÁ¿ÐÅÏ¢£¬OracleÊÇ·ñÄܹ»ÖÇÄܵØ×ª»»²éÑ¯ÖØÐ´ÄØ£¿ÎÒÃÇÖªµÀ½»Ò×ÈÕÆÚÖеÄÈÕÆÚÒâζ×ÅÔ£¬ÔÂÒâζ×ÅËù´¦µÄ¼¾¶È£¬¼¾¶ÈÒâζ×ÅÄê¶È£¬µ«ÊÇOracleÈ´ÊÇÎÞ·¨ÖÇÄܵØÅжÏÕâÆäÖеĹØÏµ£¬Òò´ËÎÞ·¨ÀûÓÃÎﻯÊÓͼ²éÑ¯ÖØÐ´À´·µ»ØÎÒÃǼ¾¶È»òÄê¶ÈµÄÏúÁ¿ÐÅÏ¢£¬¶øÊÇÖ±½Ó²éѯ»ù±í£¬µ¼ÖÂÐÔÄܲúÉúÎÊÌâ¡£
ÕâʱºòDimension¾ÍÅÉÉÏÓó¡ÁË¡£DimensionÓÃÓÚ˵Ã÷ÁÐÖ®¼äµÄ¸¸×Ó¶ÔÓ¦¹ØÏµ£¬ÒÔʹÓÅ»¯Æ÷Äܹ»×Ô¶¯×ª»»²»Í¬ÁеĹØÏµ£¬ÀûÓÃÎﻯÊÓͼµÄ²éѯ¹¦ÄÜÀ´ÌáÉý²éѯͳ¼ÆÐÔÄÜ¡£ÏÂÃæÎÒÃÇÊ×ÏÈ´´½¨Ò»ÕÅÏúÊÛ½»Ò×±ísales£¬°üº¬½»Ò×ÈÕÆÚ¡¢¹Ë¿Í±àºÅºÍÏúÊÛÁ¿Õ⼸¸öÁУ¬ÓÃÓÚ±£´æÏúÊÛ¶©µ¥ÐÅÏ¢£¬Õû¸ö±íÓÐ42Íò¶àÌõ¼Ç¼£»´´½¨ÁíÒ»Õűítime_hierarchyÓÃÓÚ´æ´¢½»Ò×ÈÕÆÚÖÐʱ¼äµÄ¹ØÏµ£¬°üº¬½»Ò×ÈÕÆÚ¼°Æä¶ÔÓ¦µÄÔ¡¢¼¾¶È¼°Äê¶ÈµÈÐÅÏ¢£¬È»ºóÎÒÃǽ«ÌåÑéDimensionµÄÇ¿´ó¹¦ÄÜ¡£
Roby@XUE> create table sales
2 (trans_date date, cust_id int, sales_amount number );
Table created.
Roby@XUE> insert /*+ APPEND */ into sales
2 select trunc(sysdate,'year')+mod(rownum,366) TRANS_DATE,
3 mod(rownum,100) CUST_ID,
4 abs(dbms_random.random)/100 SALES_AMOUNT
5 from all_objects
6 /
5926 rows created.
Roby@XUE> commit;
Commit complete.
Roby@XUE> begin
2 for i in 1 .. 6
3 loop
4 insert /*+ APPEND */ into sales
5 select trans_date, cust_id, abs(dbms_random.random)/100 SALES_AMOUNT
6 from sales;
7 commit;
8 end loop;
9 end;
10 /
PL/SQL procedure successfully completed.
Roby@XUE> select count(*) from sales;
COUNT(*)
----------
426672
´´½¨Ë÷Òý×éÖ¯±ítime_hierarchy£¬ÀïÃæÉú³ÉÁ˽»Ò×ÈÕÆÚÖÐÈÕÆÚDAY¡¢ÔÂMMYYYY¡¢¼¾¶ÈQTY_YYYY¡¢Äê¶ÈYYYYµÄ¹ØÏµ¡£
Roby@XUE> create table time_hierarchy
2 (day primary key, mmyyyy, mon_yyyy, qtr_yyyy, yyyy)
3 organization index
4 as
5 select distinct
6 trans_date DAY,
7 cast (to_char(trans_date,'mmyyyy') as number
Ïà¹ØÎĵµ£º
ORDER BY ÅÅÐò
ASC ÉýÐò(ĬÈÏ)
DESC ½µÐò
select * from s_emp order by dept_id , salary desc
²¿ÃźÅÉýÐò£¬¹¤×ʽµÐò
¹Ø¼ü×ÖdistinctÒ²»á´¥·¢ÅÅÐò²Ù×÷¡£
select * from employee order by 1; //°´µÚÒ»×Ö¶ÎÅÅÐò
NULL±»ÈÏΪÎÞÇî´ó¡£order by ¿ÉÒÔ¸ú±ðÃû¡£
select table_name ......
ÔÚOracleÊý¾Ý¿âÖÐ''ÓëNULLÊǵȼ۵ġ£¾ù±íʾ¿ÕÖµ£¬¶ø²»ÊÇÀàËÆÆäËûÊý¾Ý¿âÉÏ''±íʾ¿Õ´®£¬NULL±íʾ¿ÕÖµ¡£
ORACLEÔÊÐíÈκÎÒ»ÖÖÊý¾ÝÀàÐ͵Ä×Ö¶ÎΪ¿Õ£¬³ýÁËÒÔÏÂÁ½ÖÖÇé¿ö£º
1¡¢Ö÷¼ü×ֶΣ¨primary key£©£¬
2¡¢¶¨ÒåʱÒѾ¼ÓÁËNOT NULLÏÞÖÆÌõ¼þµÄ×Ö¶Î
˵Ã÷£º
1¡¢NULLµÈ¼ÛÓÚûÓÐÈκÎÖµ¡¢ÊÇδ֪Êý¡£
2¡¢NULLÓë ......
Ò»Ö±Ìýµ½µÄ¶¼ÊÇ˵¾¡Á¿ÓÃexists²»ÒªÓÃin£¬ÒòΪexistsÖ»ÅжϴæÔÚ¶øinÐèÒª¶Ô±ÈÖµ£¬ËùÒÔexists±È½Ï¿ì£¬µ«¿´ÁË¿´ÍøÉϵÄһЩ¶«Î÷²Å·¢ÏÖ¸ù±¾²»ÊÇÕâô»ØÊ¡£
ÏÂÃæÕâ¶ÎÊdzµÄ
Select * from T1 where x in ( select y from T2 )
Ö´ÐеĹý³ÌÏ൱ÓÚ:
select *
......
Ò»£ºsql loader µÄÌØµã
oracle×Ô¼º´øÁ˺ܶàµÄ¹¤¾ß¿ÉÒÔÓÃÀ´½øÐÐÊý¾ÝµÄÇ¨ÒÆ¡¢±¸·ÝºÍ»Ö¸´µÈ¹¤×÷¡£µ«ÊÇÿ¸ö¹¤¾ß¶¼ÓÐ×Ô¼ºµÄÌØµã¡£
±ÈÈç˵expºÍimp¿ÉÒÔ¶ÔÊý¾Ý¿âÖеÄÊý¾Ý½øÐе¼³öºÍµ¼³öµÄ¹¤×÷£¬ÊÇÒ»ÖֺܺõÄÊý¾Ý¿â±¸·ÝºÍ»Ö¸´µÄ¹¤¾ß£¬Òò´ËÖ÷ÒªÓÃÔÚÊý¾Ý¿âµÄÈȱ¸·ÝºÍ»Ö¸´·½Ãæ¡£ÓÐ×ÅËٶȿ죬ʹÓüòµ¥£¬¿ì½ÝµÄÓŵ㣻ͬʱҲÓÐһР......