欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ORACLE数据库SQL基本数据类型知识讲解

程序员文章站 2022-06-23 14:51:31
基础知识 – oracle自带的几个表 – emp:员工表 select * from emp; – dept:部门表 select * from dept; &...

基础知识

– oracle自带的几个表

– emp:员工表 select * from emp;

– dept:部门表 select * from dept;

– salgrade:工资等级表 select * from salgrade;

– bonus:奖金表 select * from bonus;

基本数据类型

下面都是plsql中复制出来的,代码直接复制到plsql中就可以运行,学习还是要多实践,熟能生巧。不啰嗦,直接上sql。

-- 1、字符串类型
-- 定长类型:指输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格
-- 优点:存储/查询效率高
-- 代表:char类型 char(size [byte | char]),默认按字节存储,如果指定按字符存储就按字符存储
-- 举例:char_old默认,char_new指定为字符存储
create table char_test(
       char_old char(10),
       char_new char(10 char)
);
-- 插入
insert into char_test(char_old,char_new) select 'abcdefghij','我要五个字我要五个字' from dual;
commit;
select * from char_test;
-- 反过来再试试?
insert into char_test(char_old,char_new) select '我要五个字我要五个字','abcdefghij' from dual;
-- char_old的值太大(实际值:31,最大值10),因为在oracle中,如果nls_characterset为al32utf8,一个汉字占用三个字节

-- 变长类型:指输入的字段值小于该字段的限制长度,不会自动向右补足空格至最大长度
-- 优点:节省数据块空间
-- 代表:varchar和varchar2,两者没有太大区别,varchar2为oracle特有的数据类型,一般建议使用varchar2
-- 举例:char_old默认,char_new指定为字符存储

-- 2、数字类型
-- number(p,s):p精度,即长度,s为小数位数
-- integer:number的子类型,相当于number(38,0),用于存储整数,如果插入小数,会四舍五入
-- 举例
create table integer_test(
       integer_col integer,
       number_col number(38,2)
);
insert into integer_test(integer_col,number_col) select 11,11 from dual;
insert into integer_test(integer_col,number_col) select 11.11,11.11 from dual;
insert into integer_test(integer_col,number_col) select 11.51,11.51 from dual;
commit;
select * from integer_test;

结果:
ORACLE数据库SQL基本数据类型知识讲解

-- float:number的子类型,浮点型
-- float(n):n表示精度,但是他的长度不好控制,建议用number或者double
alter table integer_test add float_col float(7);

insert into integer_test(integer_col,number_col,float_col) select 11.11,11.11,11.11 from dual;
insert into integer_test(integer_col,number_col,float_col) select 11.51,11.51,11.51 from dual;
select * from integer_test;

结果:

ORACLE数据库SQL基本数据类型知识讲解

-- 3、日期类型
-- date:日期数据类型可以存储日期和时间信息
-- timestamp:时间戳可以包含小数秒,带小数秒的时间戳在小数点右边最多可以保留9位
-- date类型可以加一个数字,这个数字代表的是天数,表示多少天后的日期
-- 举例
select sysdate + 30 as "30天后的日期" from dual;
-- date类型可以相减,表示两个时间差
-- 举例
select trunc((sysdate - hiredate)/365, 2) as "工作年限" from emp;
select to_char((sysdate - hiredate)/365, '9999.99') as "工作年限" from emp;
-- ps:trunc函数,保留几位小数,但是如果最后是0,则省略,如果要求格式工整,可用to_char(char,'99.99')

结果

ORACLE数据库SQL基本数据类型知识讲解

-- 四、lob类型
-- clob:用于存储单字节和多字节字符数据
-- blob:用于存储二进制数据

-- 五、raw和long raw类型
-- 1、long:它存储变长字符串,最多达2g的字符数据(2gb是指2千兆字节, 而不是2千兆字符)
-- 与varchar2 或char 类型一样,存储在long 类型中的文本要进行字符集转换
-- oracle建议开发中使用clob替代long类型。支持long 列只是为了保证向后兼容性。clob类型比long类型的限制要少得多。
-- 官方给出的具体限制如下
--    一个表中只有一列可以为long型。
--    long列不能定义为主键或唯一约束,
--    不能建立索引
--    long数据不能指定正则表达式。
--    函数或存储过程不能接受long数据类型的参数。
--    long列不能出现在where子句或完整性约束(除了可能会出现null和not null约束)

-- 2、raw:用于存储二进制或字符类型数据,变长二进制数据类型

-- 六、rowid和urowid
-- 这个不是很懂