11.4.1 CHAR
KiÓu CHAR dïng ®Ó khai b¸o mét chuçi cã chiÒu dµi cè ®Þnh, khi khai b¸o biÕn hoÆc cét kiÓu CHAR víi chiÒu dµi chØ ®Þnh th× tÊt c¶ c¸c môc tin cña biÕn hay cét nµy ®Òu cã cïng chiÒu dµi ®−îc chØ ®Þnh. C¸c môc tin ng¾n h¬n ORACLE sÏ tù ®éng thªm vµo c¸c kho¶ng trèng cho ®ñ chiÒu dµi. ORACLE kh«ng cho phÐp
g¸n môc tin dµi h¬n chiÒu dµi chØ ®Þnh ®èi víi kiÓu CHAR. ChiÒu dµi tèi ®a cho phÐp cña kiÓu CHAR lµ 255 byte
11.4.2 VARCHAR2
KiÓu VARCHAR2 dïng ®Ó khai b¸o chuçi ký tù víi chiÒu dµi thay ®æi. Khi khai b¸o mét biÕn hoÆc cét kiÓu VARCHAR2 ph¶i chØ ra chiÒu dµi tèi ®a, c¸c môc tin chøa trong biÕn hay cét kiÓu VARCHAR2 cã chiÒu dµi thùc sù lµ chiÒu dµi cña môc tin. ORACLE kh«ng cho phÐp g¸n môc tin dµi h¬n chiÒu dµi tèi ®a chØ ®Þnh ®èi víi kiÓu VARCHAR2. ChiÒu dµi tèi ®a kiÓu VARCHAR2 lµ 2000 byte
11.4.3 VARCHAR
HiÖn t¹i ORACLE xem kiÓu VARCHAR2 vµ VARCHAR lµ nh− nhau, tuy nhiªn ORACLE khuyªn nªn dïng VARCHAR2. ORACLE dù ®Þnh trong t−¬ng lai dïng kiÓu VARCHAR ®Ó chøa c¸c chuçi víi chiÒu dµi biÕn
®æi, nh−ng trong phÐp so s¸nh sÏ ®−îc chØ ®Þnh theo nhiÒu ng÷ nghÜa kh¸c nhau.
11.4.4 NUMBER
KiÓu sè cña ORACLE dïng ®Ó chøa c¸c môc tin d¹ng sè d−¬ng, sè ©m, sè víi dÊu chÊm ®éng.
NUMBER(p, s) trong ®ã
p: sè ch÷ sè tr−íc dÊu chÊm thËp ph©n (precision), p tõ 1 ®Õn 38 ch÷ sè
s: sè c¸c ch÷ sè tÝnh tõ dÊu chÊm thËp ph©n vÒ bªn ph¶i (scale), s tõ -84 ®Õn 127 NUMBER(p) sè cã dÊu chÊm thËp ph©n cè ®Þnh víi precision b»ng p vµ scale b»ng 0
NUMBER sè víi dÊu chÊm ®éng víi precision b»ng 38. Nhí r»ng scale kh«ng ®−îc ¸p dông cho sè víi dÊu chÊm ®éng.
VÝ dô sau cho thÊy c¸ch thøc ORACLE l−u tr÷ d÷ liÖu kiÓu sè tïy theo c¸ch ®Þnh precision vµ scale kh¸c nhau
D÷ liÖu thùc KiÓu L−u tr÷
7456123.89 NUMBER 7456123.89
7456123.89 NUMBER(9) 7456123
7456123.89 NUMBER(9,2) 7456123.89
7456123.89 NUMBER(9,1) 7456123.8
7456123.89 NUMBER(6) Kh«ng hîp lÖ
7456123.8 NUMBER(15,1) 7456123.8
7456123.89 NUMBER(7,-2) 7456100
7456123.89 NUMBER(-7,2) Kh«ng hîp lÖ
11.4.5 FLOAT
Dïng ®Ó khai b¸o kiÓu sè dÊu chÊm ®éng, víi ®é chÝnh x¸c thËp ph©n 38 hay ®é chÝnh x¸c nhÞ ph©n lµ 126.
FLOAT(b) Khai b¸o kiÓu dÊu chÊm ®éng víi ®é chÝnh x¸c nhÞ ph©n lµ b, b tõ 1 ®Õn 126. Cã thÓ chuyÓn tõ ®é chÝnh x¸c nhÞ phËn sang ®é chÝnh x¸c thËp ph©n b»ng c¸ch nh©n ®é chÝnh x¸c nhÞ ph©n víi 0.30103
11.4.6 LONG
Dïng ®Ó khai b¸o kiÓu chuçi ký tù víi ®é dµi biÕn ®æi, chiÒu dµi tèi ®a cña kiÓu LONG lµ 2 gigabyte. KiÓu LONG th−êng ®−îc dïng ®Ó chøa c¸c v¨n b¶n.
Cã mét sè h¹n chÕ khi dïng kiÓu LONG
• Mét table kh«ng thÓ chøa nhiÒu h¬n mét cét kiÓu LONG
• D÷ liÖu kiÓu LONG kh«ng thÓ tham gia vµo c¸c rµng buéc toµn vÑn, ngo¹i trõ kiÓm tra NULL vµ kh¸c NULL
• Kh«ng thÓ index mét cét kiÓu LONG
• Kh«ng thÓ truyÒn tham sè kiÓu LONG cho hµm hoÆc thñ tôc
• C¸c hµm kh«ng thÓ tr¶ vÒ d÷ liÖu kiÓu LONG
• Trong c©u lÖnh SQL cã truy cËp c¸c cét kiÓu LONG, th× viÖc cËp nhËt hoÆc khãa c¸c b¶ng chØ cho phÐp trong cïng mét CSDL
Ngoµi ra, c¸c cét kiÓu LONG kh«ng ®−îc tham gia trong c¸c thµnh phÇn sau cña c©u lÖnh SQL
• C¸c mÖnh ®Ò WHERE, GROUP BY, ORDER BY, CONNECT BY hoÆc víi t¸c tö DISTINCT trong c©u lÖnh SELECT
• C¸c hµm sö dông trong c©u lÖnh SQL nh− SUBSTR, INSTR
• Trong danh s¸ch lùa chän cña c©u lÖnh SELECT cã sö dông mÖnh ®Ò GROUP BY
• Trong danh s¸ch lùa chän cña c©u hái con, c©u hái cã sö dông c¸c to¸n tö tËp hîp
• Trong danh s¸ch lùa chän cña c©u lÖnh CREATE TABLE AS SELECT 11.4.7 DATE
Dïng ®Ó chøa d÷ liÖu ngµy vµ thêi gian. MÆc dï kiÓu ngµy vµ thêi gian cã thÓ ®−îc chøa trong kiÓu CHAR vµ NUMBER.
Víi gi¸ trÞ kiÓu DATE, nh÷ng th«ng tin ®−îc l−u tr÷ gåm thÕ kû, n¨m, th¸ng, ngµy, giê, phót, gi©y. ORACLE kh«ng cho phÐp g¸n gi¸ trÞ kiÓu ngµy trùc tiÕp, ®Ó g¸n gi¸ trÞ kiÓu ngµy, b¹n ph¶i dïng TO_DATE ®Ó chuyÓn gi¸ trÞ kiÓu chuçi ký tù hoÆc kiÓu sè.
NÕu g¸n mét gi¸ trÞ kiÓu ngµy mµ kh«ng chØ thêi gian th× thêi gian mÆc ®Þnh lµ 12 giê ®ªm, NÕu g¸n gi¸ trÞ kiÓu ngµy mµ kh«ng chØ ra ngµy, th× ngµy mÆc ®Þnh lµ ngµy ®Çu cña th¸ng. Hµm SYSDATE cho biÕt ngµy vµ thêi gian hÖ thèng.
TÝnh to¸n ®èi víi kiÓu ngµy
§èi víi d÷ liÖu kiÓu ngµy, b¹n cã thÓ thùc hiÖn c¸c phÐp to¸n céng vµ trõ.
VÝ dô
SYSDATE+1 ngµy h«m sau SYSDATE-7 c¸ch ®©y mét tuÇn SYSDATE+(10/1440) m−êi phót sau
Ngµy Julian: Lµ gi¸ trÞ sè cho biÕt sè ngµy kÓ tõ ngµy 1 th¸ng giªng n¨m 4712 tr−íc c«ng nguyªn.
VÝ dô
SELECT TO_CHAR (TO_DATE('01-01-1992', 'MM-DD-YYYY'), 'J') JULIAN FROM DUAL Cho kÕt qu¶
JULIAN
--- 2448623
11.4.8 RAW vµ LONG RAW
KiÓu RAW vµ LONG RAW dïng ®Ó chøa c¸c chuçi byte, c¸c d÷ liÖu nhÞ ph©n nh− h×nh ¶nh, ©m thanh. C¸c d÷ liÖu kiÓu RAW chØ cã thÓ g¸n hoÆc truy cËp chø kh«ng ®−îc thùc hiÖn c¸c thao t¸c nh− ®èi víi chuçi ký tù.
KiÓu RAW gièng nh− kiÓu VARCHAR2 vµ kiÓu LONG RAW gièng kiÓu LONG, chØ kh¸c nhau ë chæ ORACLE tù ®éng chuyÓn ®æi c¸c gi¸ trÞ kiÓu CHAR, VARCHAR2 vµ LONG gi÷a tËp hîp ký tù cña CSDL vµ tËp ký tù cña c¸c øng dông.
11.4.9 ROWID
Mçi mÉu tin trong CSDL cã mét ®Þa chØ cã kiÓu ROWID. ROWID gåm block.row.file, trong ®ã
block : chuçi hÖ hexa cho biÕt block chøa row row : chuçi hÖ hexa cho biÕt row trong block
file : chuçi hÖ hexa cho biÕt database file chøa block VÝ dô
0000000F.0000.0002
Row ®Çu tiªn trong block 15 cña data file thø hai.
11.4.10MLSLABEL
KiÓu MLSLABEL dïng ®Ó chøa label d¹ng nhÞ ph©n mµ ORACLE dïng ®Ó ®¶m b¶o ho¹t ®éng cña b¶n th©n hÖ thèng.
11.4.11ChuyÓn ®æi kiÓu
Nãi chung mét biÓu thøc kh«ng thÓ gåm c¸c gi¸ trÞ thuéc nhiÒu kiÓu kh¸c nhau, tuy nhiªn ORACLE cho phÐp chuyÓn ®æi gi−· c¸c kiÓu d÷ liÖu. ORACLE tù ®éng chuyÓn kiÓu cña d÷ liÖu trong mét sè tr−êng hîp sau
• Khi INSERT hoÆc UPDATE g¸n gi¸ trÞ cho cét cã kiÓu kh¸c, ORACLE sÏ tù ®éng chuyÓn gi¸ trÞ sang kiÓu cña cét.
• Khi sö dông c¸c hµm hoÆc c¸c to¸n tö mµ c¸c tham sè cã kiÓu kh«ng t−¬ng thÝch th× ORACLE sÏ tù
®éng chuyÓn kiÓu.
• Khi sö dông to¸n tö so s¸nh mµ c¸c gi¸ trÞ cã c¸c kiÓu kh¸c nhau, ORACLE sÏ tù ®éng chuyÓn kiÓu.
VÝ dô 1
SELECT ename FROM emp WHERE hiredate = '12-MAR-1993'
ORACLE ®· tù ®éng chuyÓn chuçi '12-MAR-1993' sang kiÓu DATE trong phÐp so s¸nh VÝ dô 2
SELECT ename FROM emp WHERE ROWID = '00002514.0001.0001'
ORACLE ®· tù ®éng chuyÓn chuçi '00002514.0001.0001' sang kiÓu ROWID trong phÐp so s¸nh Ng−êi sö dông tù chuyÓn ®æi
ORACLE cung cÊp c¸c hµm ®Ó chuyÓn ®æi kiÓu, vÝ dô
• TO_NUMBER ChuyÓn sang kiÓu sè
• TO_CHAR ChuyÓn sang kiÓu ký tù
• TO_DATE ChuyÓn sang kiÓu ngµy (xem phÇn tra cøu c¸c hµm vµ thñ tôc)