1004.oracle的SQL中的数据类型

① 数值型 number
可以存整数、小数
最大精度38位
设定的存储范围很大 10的正负130次方左右
          存数据一般用 number就可以了,要对数据进行处理可以考虑number(m,n)
② 字符型  varchar2(n) ,char(1)
         varchar2(4000) char(2000)
        nchar() nvarchar()
③ 日期型 date、timestamp
       date精确到秒
       timestamp精确到毫秒(6 位)
       插入日期时 to_date('2015-06-03 23:50:50'.‘yyyy-mm-dd hh24:mi:ss')
④ 大对象型 (large object)
      clob字符
      blob二进制
 
补充:
number 类型长度 1-22字节
date 类型长度 8字节(一般,字节根据具体值而定)
timestamp 类型长度 12字节(一般,字节根据具体值而定)
 
 
1.数值型 number
可以存整数、小数 最大精度38位
设定的存储范围很大 10的正负130次方左右 到1.0X10的126次方(不包含)
存数据一般用 number就可以了,要对数据进行处理可以考虑number(m,n)
 
定义表格
    create table test(id number);
    create table test(id number(6,2));
    id总共六位,4位正数,2位小数,赋值超过4位数就报错,小数超过3位就会四舍五入。
    
set numformat 9999999.99999999
drop tables test;
create table test (id number(6.2);
insert into test values(9999.99);
insert into test values(12345.678);
number(6,2)最大精度6
小数点左边最大4位,右边2位,左边超过4位报错,右边超过2位四舍五入
在实际工作中,四舍五入,数据精度,都是程序处理,而不是db处理,db只用来存数据数字定义为number即可,不要定义为number(x,x)
 
2.字符型 char、varchar2

char(10)固定长度10个byte字节 char最多可以存储2000个字节

set numformat 99999999
drop table test;

create table test(name char(10));

insert into test values('abc');

insert into test values'中文’);

select name,lengthb(name),length(name),length(trim(name))from test;

0
lengthb(string)返回字节长度,一个中文占用2个字节length(string)返回字符长度,中字长度为1为什么上面length(name)返回8?

中文占用了4个字节,长度为2,剩余6个字节用空格填充,长度为6

2+6=8一定要区别字节(占用的存储空间,一字节=8bit),字符(就是我们输入的字符串)

如果确定字段长度是固定的就用char(x)无法确定长度,打死不能用

 

varchar2变长

varchar2(4000)最大存储4000个字节,约等于 4Kb

 
    
3.日期 date
date日期类型,精确到秒timestamp 精确到毫秒
drop table test;
create table test(t1 date);
 
插入日期时要用to_date()        

insert into test values(to_date'2015-06-03 23:50:50','yyyy-mm-dd hh24:mi:ss'));

显示日期就要用to_char()
select to_char(t1,'yyyy-mm-dd hh24:mi:ss')from test;

drop table test;
create table test(t1 date);
insert into test values(sysdate);
select * from test;
select to_char(t1,'yyyy-mm-dd hh24:mi:ss') from test;
0
    
 
drop table test;
create table test(t1 timestamp);
insert into test values(systimestamp);
select * from test;
 
clob 超过varchar2(4000)用clob
blob 存图片、电影 -- 这样的文件一般存到文件服务器,不存到数据库中,数据库中只会存储文件的 url
    
 
常用:
    number
    varchar2()
    date
 
 
CDN,机房的带宽是有限的(一个完整的视频,是分布式存放的) 
rowid 伪列  某一行的物理地址,自动生成(插入一行数据就会生成一个rowid)
rownum 伪列  (以1开始,每次加一)
 
select rownum,a.* from emp a order by sal;  先排序?先去rownum?
先rownum,后排序。取出一条数据就分配一个rownum。取出后比较再排序的。
如何先排序,再取rownum?
0
0
 
rownum只能 <或者<=
rownum大于就只能大于0,rownum要先查第一条数据后才有1,不然大于1会是假。
 
posted @ 2021-01-10 02:51  bufuzhou  阅读(89)  评论(0编辑  收藏  举报