ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:22.18KB ,
资源ID:5354281      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5354281.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据类型.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据类型.docx

1、数据类型1、数据类型关于列的数据类型有很多 不同的数据类型存储不同的数据-规范化数据与非规范化数据数据类型分类ORACLE类型分四大类 Oracle_built_in_datatypes ORACLE内置类型 varchar2 number dateANSI_supported_datatypes 美国国际标准化组织支持的通用数据类型 int Nchar Nvarchar2User_defined_types 自定义类型 PL/SQLOracle-Supplied Types 前面3种支持不了的情况下补充支持的类型其中最常用的是ORACLE内置类型、自定义类型.ORACLE内置类型 内置类型分

2、了六大类char 是定长的 varchar2 是变长的char varchar2 字符类型number 数值类型date 日期类型long和raw 二进制类型LOB 大对象类型ROWID 行地址类型第一类内置类型:字符类型char(个数 byte|char)char是一个固定长度的字符类型,不足的字符将用空格填充。由于一个块通常是2K/4K/8K,所以对列类型有一定的长度限制char至少1个byte长,最多2000 bytes,存储null其实也可以是0长度其个数有两种属性,分别是byte或者charchar为字符,byte为字节 在不同的字符集中,同样的char实际存储时,所占用的byte位

3、数是不同的。对于中文,可能是占两个字节,也可能是占三个字节。对于单字节 1 char = 1 bytes对于多字节字符集 1 char = n bytes对于双字节中文字符集 1 char = 2 bytesSCOTTora11g create table t_t (a char(5);Table created.SCOTTora11g insert into t_t values (null);1 row created.SCOTTora11g insert into t_t values (1a);1 row created.SCOTTora11g insert into t_t valu

4、es (1a );1 row created.SCOTTora11g commit;Commit complete.SCOTTora11g select length(a) from t_t;LENGTH(A)-55第一条插入的数据为null 所以没长度 也就是0长度第二条和第三条 是一样的 虽然第三条插入时带了空格但因为char是固定长度的 不足长度会自动补空格第二条记录补了3个空格 第三条记录补了2个空格所以这两条记录是一样的.SCOTTora11g create table t1(a char(5);SCOTTora11g create table t2(a char(5 byte);S

5、COTTora11g create table t3(a char(5 char);SCOTTora11g insert into t1 values(a);SCOTTora11g insert into t2 values(a);SCOTTora11g insert into t3 values(a);SCOTTora11g select dump(a) from t1 union allselect dump(a) from t2 union allselect dump(a) from t3;DUMP(A)-Typ=96 Len=5: 97,32,32,32,32Typ=96 Len=5

6、: 97,32,32,32,32Typ=96 Len=5: 97,32,32,32,32-注释:-typ=type 表示输入的值的类型 96表示char类型-len=length 输入的值的长度-97,32,32,32,32 实际存储的时候,会把这些值全部转换为对应的ascii码。SCOTTora11g select dump(a) from dual;DUMP(A)-Typ=96 Len=1: 97-dump函数(详见扩展)SCOTTora11g select length(a) from t3;LENGTH(A)-5SCOTTora11g select lengthb(a) from t3

7、;LENGTHB(A)-5-length与lengthb函数区别:-前者返回字符长度,后者返回字节长度。varchar2(个数 byte|char)变长度的字符类型,不足部分不进行填充至少1个byte长,最多4000 bytes同样可以指定byte|charSCOTTora11g create table t4 (a varchar2(4000);Table created.SCOTTora11g insert into t4 values (1A);1 row created.SCOTTora11g insert into t4 values (1A );1 row created.SCOT

8、Tora11g select length(a) from t4;LENGTH(A)-23Nchar(个数 byte|char) 国家字符集对于一个跨国网站可能有中文和英文或更多国家语言环境页面由于不同字符集使用同一个字符(单词)所需要的字节长度不一样,空间浪费程度不一样,而且选择出的数据是需要转换的 转换所消耗的资源也不一样所以我们选择一种最合适的字符集作为内置的数据库字符集另外设置一份辅助的字符集来解决所有语言字符支持,它就是UNICODE,我们称之为国家字符集类型名头的N就是国家字符集的意思。N是National的简写Nvarchar2(个数 byte|char)同样是国家字符集 是va

9、rchar2的版本SCOTTora11g create table t6 (a Nvarchar2(5);Table created.SCOTTora11g create table t7 (a Nchar(5);Table created.SCOTTora11g insert into t6 values (a);1 row created.SCOTTora11g insert into t7 values (a);1 row created.SCOTTora11g select dump(a) from t6 union all select dump(a) from t7;DUMP(A)

10、-Typ=1 Len=2: 0,97Typ=96 Len=10: 0,97,0,32,0,32,0,32,0,32varchar(个数 byte|char)varchar是varchar2的同义词,是为了将来的版本做扩充用,其实就是向前兼容的意思ORACLE建议用varchar2数值类型整型数据分两大类固点数值类型固点数值类型就是把NUMBER的所有有效数字个数(包括小数位)和小数位个数给设置了一个固定的阀值。浮点数值类型有效数字个数和小数位不固定固点数值类型NUMBER(p,s)precision - p -精度scale - s -小数位范围p NUMBER的所有有效数字个数(包括小数位)

11、 138个数字,最大就是9999.9 38个9 s -84 127正数 小数点后数字个数负数 正数部分被四舍五入的位置0 此时NUMBER表示整数溢出P 益出将报错S 溢出将四舍五入没整数情况下是 40位小数 多的就四舍五入有整数情况下 最多38位小数SCOTTora11g select drop table |tname| purge; from tab where tname like T%;DROPTABLE|TNAME|PURGE;-drop table T_T purge;drop table T_EMP purge;drop table TAB_TEST purge;drop ta

12、ble T7 purge;drop table T6 purge;drop table T4 purge;drop table T3 purge;drop table T2 purge;drop table T1 purge;9 rows selected.执行上述语句即可清除前面创建的测试表。SCOTTora11g create table t1 (id number(6,3);Table created.SCOTTora11g insert into t1 values(1234.89);insert into t1 values(1234.89)*ERROR at line 1:ORA-

13、01438: value larger than specified precision allowed for this columnSCOTTora11g insert into t1 values(123.89);1 row created.SCOTTora11g select * from t1;ID-123.89SCOTTora11g insert into t1 values(123.789);1 row created.SCOTTora11g select * from t1;ID-123.89123.789SCOTTora11g insert into t1 values(12

14、3.6789);1 row created.SCOTTora11g select * from t1;ID-123.89123.789123.679SCOTTora11g create table t2 (id number(2,7);Table created.SCOTTora11g insert into t2 values(0.0000012);1 row created.SCOTTora11g insert into t2 values(0.00000123);1 row created.SCOTTora11g select * from t2;ID-.0000012.0000012S

15、COTTora11g insert into t2 values(1.00000123);insert into t2 values(1.00000123)*ERROR at line 1:ORA-01438: value larger than specified precision allowed for this column平时我们也可以不指明精度 number就可以存小数SCOTTora11g create table t4(id number);Table created.SCOTTora11g insert into t4 values (99.99);1 row created

16、.SCOTTora11g select * from t4;ID-99.99浮点数值类型没有固定精度刻度的,它有个10的次数或者2的次数最大的范围就是3.4 * 10的-38次方 3.4 * 10的38次方或者2的-126次方 2的126次方floatfloat(n)二进制类型 longrawlong长二进制类型,最大是2G数据每个表最多1个long字段已经淘汰rawSCOTTora11g create table t6 (r raw(10);Table created.SCOTTora11g insert into t6 values(hextoraw(ff);1 row created.S

17、COTTora11g select * from t6;R-FFSCOTTora11g insert into t6 values (g);insert into t6 values (g)*ERROR at line 1:ORA-01465: invalid hex numberSCOTTora11g insert into t6 values(0123456789abcdefadbcd);insert into t6 values(0123456789abcdefadbcd)*ERROR at line 1:ORA-12899: value too large for column SCO

18、TT.T6.R (actual: 11, maximum:10)-为何上句显示actual: 11SCOTTora11g select dump (hextoraw(0123456789abcdefadbcd) from dual;DUMP(HEXTORAW(0123456789ABCDEFADBCD)-Typ=23 Len=11: 0,18,52,86,120,154,188,222,250,219,205日期类型常见的类型如下:DATE类型只能将粒度精确到秒范围 公元前4712 - 1月 9999 - 12月精确到秒取值范围YEAR 公元前4712 9999MONTH 112DAY 01

19、31HOUR 0023MINUTE 00 59SECEND 00 59SCOTTora11g select drop table |tname| purge; from tab where tname like T%;DROPTABLE|TNAME|PURGE;-drop table T6 purge;drop table T4 purge;drop table T2 purge;drop table T1 purge;执行上述语句清除测试表。SCOTTora11g create table t1 (t date);Table created.SCOTTora11g insert into t

20、1 values(sysdate);1 row created.SCOTTora11g select * from t1;T-18-MAR-15SCOTTora11g select to_char(t,YYYY-MM-DD HH24:MI:SS) from t1;TO_CHAR(T,YYYY-MM-2015-03-18 15:24:33SCOTTora11g alter session set nls_date_format=YYYY-MM-DD HH24:MI:SS;Session altered.SCOTTora11g select * from t1;T-2015-03-18 15:24

21、:33NLS_DATE_FORMAT可以设置在数据库的参数文件中(以后会学到) 如果你不想改变数据库参数 又不想每次修改或转换 可以设置系统环境变量export NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS;timestamp(n) 时间戳date类型的扩展 区别在于精度比如拿数据库存一下刘翔的百米记录时间 date只能精确到秒 显然不合适timestamp精确分秒的粒度n默认=6 范围是09 n表示小数秒的位数CURRENT_TIMESTAMP 返回精确时间(绝对时间全球化时间戳)LOCALTIMESTAMP 本地化时间戳SCOTTora11g create t

22、able t4(t timestamp(9);Table created.SCOTTora11g insert into t4 values(current_timestamp);1 row created.SCOTTora11g select to_char(t,YYYY-MM-DD HH24:MI:SS.FF) from t4;TO_CHAR(T,YYYY-MM-DDHH24:MI:-2015-03-18 15:31:11.866163000SCOTTora11g insert into t4 values(to_timestamp(2010-05-10 18:19:20.12345678

23、9,YYYY-MM-DD HH24:MI:SS.FF);1 row created.SCOTTora11g select * from t4;T-18-MAR-15 03.31.11.866163000 PM10-MAY-10 06.19.20.123456789 PMSCOTTora11g alter session set nls_timestamp_format=YYYY-MM-DD HH24:MI:SS.FF;Session altered.SCOTTora11g select * from t4;T-2015-03-18 15:31:11.8661630002010-05-10 18

24、:19:20.123456789TIMESTAMP WITH TIME ZONE相比timestamp多了时区SCOTTora11g create table t5(t timestamp with time zone);Table created.SCOTTora11g insert into t5 values(current_timestamp);1 row created.SCOTTora11g select * from t5;T-18-MAR-15 03.36.23.189113 PM +08:00查看数据库中支持的时区sqlselect * from v$timezone_nam

25、es;sqlalter session set nls_timestamp_tz_format=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM;Session altered.查看数据库当前时区SCOTTora11g col SESSIONTIMEZONE for a20SCOTTora11g col CURRENT_TIMESTAMP for a50SCOTTora11g SELECT SESSIONTIMEZONE,CURRENT_timestamp FROM DUAL; SESSIONTIMEZONE CURRENT_TIMESTAMP- -+08:00 2015-03-18 15:42:56.413480 +08:00修改当前会话的时区:SCOTTora11g ALTER SESSION SET TIME_ZONE = -2:0;Session altered.SCOTTora11g SELECT SESSIONTIMEZONE,CURRENT_timestamp FROM DUAL;SESSIONTIMEZONE CURRENT_TIMESTAMP- -02:00 2015-03-18 05:44:03.427582 -02:00SCOT

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1