数据类型Word格式文档下载.docx
- 文档编号:18336126
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:18
- 大小:22.18KB
数据类型Word格式文档下载.docx
《数据类型Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据类型Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
SCOTT@ora11g>
createtablet_t(achar(5));
Tablecreated.
insertintot_tvalues(null);
1rowcreated.
insertintot_tvalues('
1a'
);
1a'
commit;
Commitcomplete.
selectlength(a)fromt_t;
LENGTH(A)
----------
5
第一条插入的数据为null所以没长度也就是0长度
第二条和第三条是一样的虽然第三条插入时带了空格
但因为char是固定长度的不足长度会自动补空格
第二条记录补了3个空格第三条记录补了2个空格
所以这两条记录是一样的.
createtablet1(achar(5));
createtablet2(achar(5byte));
createtablet3(achar(5char));
insertintot1values('
a'
insertintot2values('
insertintot3values('
selectdump(a)fromt1
unionall
selectdump(a)fromt2
selectdump(a)fromt3;
DUMP(A)
--------------------------------------------------------------------------------
Typ=96Len=5:
97,32,32,32,32
--注释:
--typ=type表示输入的值的类型96表示char类型
--len=length输入的值的长度
--97,32,32,32,32实际存储的时候,会把这些值全部转换为对应的ascii码。
selectdump('
)fromdual;
DUMP('
A'
)
----------------
Typ=96Len=1:
97
--dump函数(详见扩展)
selectlength(a)fromt3;
selectlengthb(a)fromt3;
LENGTHB(A)
--length与lengthb函数区别:
--前者返回字符长度,后者返回字节长度。
varchar2(个数byte|char)
变长度的字符类型,不足部分不进行填充
至少1个byte长,最多4000bytes
同样可以指定byte|char
createtablet4(avarchar2(4000));
insertintot4values('
1A'
1A'
selectlength(a)fromt4;
2
3
Nchar(个数byte|char)国家字符集
对于一个跨国网站可能有中文和英文或更多国家语言环境页面
由于不同字符集使用同一个字符(单词)所需要的字节长度不一样,空间浪费程度不一样,
而且选择出的数据是需要转换的转换所消耗的资源也不一样
所以我们选择一种最合适的字符集作为内置的数据库字符集
另外设置一份辅助的字符集来解决所有语言字符支持,它就是UNICODE,我们称之为国家字符集
类型名头的N就是国家字符集的意思。
N是National的简写
Nvarchar2(个数byte|char)
同样是国家字符集是varchar2的版本
createtablet6(aNvarchar2(5));
createtablet7(aNchar(5));
insertintot6values('
insertintot7values('
selectdump(a)fromt6
unionall
selectdump(a)fromt7;
Typ=1Len=2:
0,97
Typ=96Len=10:
0,97,0,32,0,32,0,32,0,32
varchar(个数byte|char)
varchar是varchar2的同义词,是为了将来的版本做扩充用,其实就是向前兼容的意思
ORACLE建议用varchar2
数值类型
整型数据分两大类
固点数值类型
固点数值类型就是把NUMBER的所有有效数字个数(包括小数位)和小数位个数给设置了一个固定
的阀值。
浮点数值类型
有效数字个数和小数位不固定
NUMBER(p,s)
precision-->
p--精度
scale-->
s--小数位范围
pNUMBER的所有有效数字个数(包括小数位)1~38个数字,
最大就是9999.....9==>
38个9
s-84~127
正数==>
小数点后数字个数
负数==>
正数部分被四舍五入的位置
0==>
此时NUMBER表示整数
溢出
P益出将报错
S溢出将四舍五入
没整数情况下是40位小数多的就四舍五入
有整数情况下最多38位小数
select'
droptable'
||tname||'
purge;
'
fromtab
wheretnamelike'
T%'
;
DROPTABLE'
||TNAME||'
PURGE;
------------------------------------------------
droptableT_Tpurge;
droptableT_EMPpurge;
droptableTAB_TESTpurge;
droptableT7purge;
droptableT6purge;
droptableT4purge;
droptableT3purge;
droptableT2purge;
droptableT1purge;
9rowsselected.
执行上述语句即可清除前面创建的测试表。
createtablet1(idnumber(6,3));
insertintot1values(1234.89);
insertintot1values(1234.89)
*
ERRORatline1:
ORA-01438:
valuelargerthanspecifiedprecisionallowedforthiscolumn
insertintot1values(123.89);
select*fromt1;
ID
123.89
insertintot1values(123.789);
123.789
insertintot1values(123.6789);
123.679
createtablet2(idnumber(2,7));
insertintot2values(0.0000012);
insertintot2values(0.00000123);
select*fromt2;
.0000012
insertintot2values(1.00000123);
insertintot2values(1.00000123)
平时我们也可以不指明精度number就可以存小数
createtablet4(idnumber);
insertintot4values(99.99);
select*fromt4;
99.99
没有固定精度刻度的,它有个10的次数或者2的次数
最大的范围就是3.4*10的-38次方~3.4*10的38次方
或者2的-126次方~2的126次方
float
float(n)
二进制类型
long
raw
长二进制类型,最大是2G数据
每个表最多1个long字段
已经淘汰
createtablet6(rraw(10));
insertintot6values(hextoraw('
ff'
));
select*fromt6;
R
--------------------
FF
g'
insertintot6values('
ORA-01465:
invalidhexnumber
insertintot6values('
0123456789abcdefadbcd'
insertintot6values('
ORA-12899:
valuetoolargeforcolumn"
SCOTT"
."
T6"
R"
(actual:
11,maximum:
10)
--为何上句显示actual:
11
selectdump(hextoraw('
))fromdual;
DUMP(HEXTORAW('
0123456789ABCDEFADBCD'
))
-----------------------------------------------------
Typ=23Len=11:
0,18,52,86,120,154,188,222,250,219,205
日期类型
常见的类型如下:
DATE类型
只能将粒度精确到秒
范围公元前4712-1月~9999-12月精确到秒
取值范围
YEAR公元前4712~9999
MONTH1~12
DAY01~31
HOUR00~23
MINUTE00~59
SECEND00~59
fromtabwheretnamelike'
执行上述语句清除测试表。
createtablet1(tdate);
insertintot1values(sysdate);
T
---------
18-MAR-15
selectto_char(t,'
YYYY-MM-DDHH24:
MI:
SS'
)fromt1;
TO_CHAR(T,'
YYYY-MM-
-------------------
2015-03-1815:
24:
33
altersessionsetnls_date_format='
Sessionaltered.
NLS_DATE_FORMAT
可以设置在数据库的参数文件中(以后会学到)
如果你不想改变数据库参数又不想每次修改或转换可以设置系统环境变量
exportNLS_DATE_FORMAT='
timestamp(n)时间戳
date类型的扩展区别在于精度
比如拿数据库存一下刘翔的百米记录时间date只能精确到秒显然不合适
timestamp精确分秒的粒度
n默认=6范围是0~9n表示小数秒的位数
CURRENT_TIMESTAMP返回精确时间(绝对时间全球化时间戳)
LOCALTIMESTAMP本地化时间戳
createtablet4(ttimestamp(9));
insertintot4values(current_timestamp);
SS.FF'
)fromt4;
YYYY-MM-DDHH24:
-----------------------------
31:
11.866163000
insertintot4values(to_timestamp('
2010-05-1018:
19:
20.123456789'
'
---------------------------------------------------------------------------
18-MAR-1503.31.11.866163000PM
10-MAY-1006.19.20.123456789PM
altersessionsetnls_timestamp_format='
20.123456789
TIMESTAMPWITHTIMEZONE
相比timestamp多了时区
createtablet5(ttimestampwithtimezone);
insertintot5values(current_timestamp);
select*fromt5;
18-MAR-1503.36.23.189113PM+08:
00
查看数据库中支持的时区
sql>
select*fromv$timezone_names;
altersessionsetnls_timestamp_tz_format='
SS.FFTZH:
TZM'
查看数据库当前时区
colSESSIONTIMEZONEfora20
colCURRENT_TIMESTAMPfora50
SELECTSESSIONTIMEZONE,CURRENT_timestampFROMDUAL;
SESSIONTIMEZONECURRENT_TIMESTAMP
----------------------------------------------------------------------
+08:
002015-03-1815:
42:
56.413480+08:
修改当前会话的时区:
ALTERSESSIONSETTIME_ZONE='
-2:
0'
-02:
002015-03-1805:
44:
03.427582-02:
SCOT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据类型
![提示](https://static.bdocx.com/images/bang_tan.gif)