ORACLE系列学习(1)-SQL基本数据类型

基础知识
– 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;

结果:
这里写图片描述

-- 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;

结果:
这里写图片描述

-- 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')

结果
这里写图片描述

-- 四、LOB类型
-- CLOB:用于存储单字节和多字节字符数据
-- BLOB:用于存储二进制数据

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

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

-- 六、ROWIDUROWID
-- 这个不是很懂

总结
最后用思维导图来总结一下吧,ORACLE包括的数据结构常用的就字符类型、数值类型和日期类型三种,占日常使用的95%以上,其他的两种在一些特殊情况也许用得到,可选择掌握。
另外建议学习多画图,对整理思路很有帮助。
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值