Oracle的数据类型
一.数值类型1.number:数值类型是Oracle中最常用的数据类型之一.它用于存储整数或带有小数点的数字.number类型可以指定精度(precision)和标度(scale),既可以存储的最大数和小数点后准确的位数number(p,s)
p:有效数字的位数
s:小数位数
最多存储38位有效数字
比方:number(3,1) 21.5 31.0
2.integer:整数类型是number类型的一种特别形式,用于存储不带小数的整数.它占用较小的存储空间,适用于存储空间要求较高的场景
integer
最大存储38位整数,会四舍五入
3.float:浮点数类型用于存储近似值,具有比number更大范围和较低的精度要求.float类型可以指定二进制位数(precision)和十进制位数(scale)
4.binary_float和binary_double:二进制浮点数类型分别用于存储单精度和双精度浮点数.它们提供了更高精度的科学计算和工程范畴(了解,不常用)
二.字符类型
(1)字符型(字符串型)
①定长字符串:char
长度固定,会用空格填充到达其最大长度,当没有指定长度时,默认为1
比方:char(5) 男 ,12345,abcde
注:Oracle中一个中文3字节,一个字母或一个数字1字节
②变长字符串:varchar2,nvarchar2
varchar2:变长字符串
长度会主动减小,按UTF8格式存储
比方:varchar(20) 存"张三",长度变成6
nvarchar2:变长字符串
长度会主动减小,按UNICODE编码方式存储
比方:nvarchar2(20) 存"张三",长度变成2
③long:超长字符串,最大存储2000M字节信息
(2)char和varchar2的比较
char(10),如果存入'freecplus',在数据库中将存储'freecplus ',在末了补了一个空格。
varchar2(10),如果存入'freecplus',在数据库中将存储'freecplus',什么也不会补。
在实际应用中,我们并不盼望Oracle给字符串反面补空格,那么是不是可以弃用char类型呢?不是,我们一般用char类型存放固定大小的数据内容,比方身份证号码,固定是18位的,用char(18)就非常合适,能用varchar2(18)可以存放身份证号码吗?当然可以,但是,char(18)的效率比varchar2(18)的效率要高很多。
总结一下,如果确定、肯定、肯定、保证存入字符串的长度是固定稳定的,比方性别、身份证号码、手机号码,用char类型,否则用varchar2类型,比方姓名、学历、地址、兴趣爱好等,char固然死板,但是效率高。
三.日期类型
①date:日期时间类型
可以存储世纪,年,月,日 时:分:秒
比方:2023-12-05 12:23:45
②timestamp:时间戳
可以存储到毫秒,用小数秒表示
比方:2023-11-14 10:15:29.452
③interval:时间间隔类型
用于存储两个日期或时间之间的差异.它可以表示年.月.日.小时.分钟或秒之间的差异.
四、clob和blob类型
clob类型,变长的字符串大对象,最长可达4GB,clob可以存储单字节字符串或多字节字符串数据,clob被认为是一个更大的字符串。当数据库的字符集发生转换时,clob类型会受到影响。
blob类型,变长的二进制大对象,最长可达4GB,blob重要用于保存带格式的非布局化数据,如图片、音频、视频、Office文档等。当数据库的字符集发生转换时,blob类型不会受到影响,Oracle数据库不关心存放的是什么内容。
五、rowid类型
Oracle数据库中每个表的每行记录都有一个存储的物理位置,即表的rowid伪列,采用rowid作为where条件的访问效率最高。
rowid的访问效率固然是最高的,但是,在实际应用中要谨慎,需要注意两个问题:
(1)rowid存放的是表记录的物理位置,在数据整理、数据备份和迁徙的时间,记录的物理位置会发生改变;
(2)rowid是Oracle数据库专有的数据类型,与别的的数据库不兼容。
六.汉字的存储
每个汉字占多少字节要看详细的编码方式,如UTF-8(1-3字节)、GB2312(2字节)、GBK(2字节)、GB18030(1、2、4字节)。
七.创建表
(1)SQL语句建表
create table 表名(
字段 数据类型(大小) 束缚,
字段 数据类型(大小) 束缚,
...
字段 数据类型(大小) 束缚
);
create table teacher(
t_no varchar2(10) primary key,
t_name varchar2(20),
t_age number(3),
t_sex char(5),
t_born date
); (2)SQL创建束缚(可在建表时创建)
①主键束缚
alter table 表名 add constraint 主键名
primary key(主键字段名);
②外键束缚:
alter table 表名 add constraint 外键名
foreign key(外键字段名) references
参考表名(参考主键字段名);
③唯一束缚
alter table 表名 add constraint 唯一束缚名
unique(束缚字段名);
④默认束缚
alter table 表名 Modify 字段名
数据类型(长度) default('值');
⑤检查束缚
alter table 表名 add constraint 检查束缚名
check(束缚条件);
⑥添加表明
表表明:comment on table 表名 is '表明名';
列表明:comment on column 表名.列名 is '表明名'
create table score(
s_id number(10),
s_name varchar2(20),
s_p number(10),
s_sum number(10),
t_no varchar2(10)
);
//主键约束
alter table score add constraint PK_id primary key(s_id);
//唯一约束
alter table score add constraint UN_sname unique(s_name);
//外键约束
alter table score add constraint FK_no foreign key(t_no) references teacher(t_no);
//默认约束
alter table score modify s_p number(10) default 20;
//检查约束
alter table score add constraint CK_sum check(s_sum>=0 and s_sum<=100);
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]