首页 > 数据库 >《oracle马拉松》基础语法篇-字段类型

《oracle马拉松》基础语法篇-字段类型

时间:2023-04-05 17:12:08浏览次数:63  
标签:存储 varchar clob 类型 字段 varchar2 oracle 长度 马拉松

常见字段类型

原文链接:https://www.cnblogs.com/zhouweiye/p/3594268.html

1.字符型
CHAR型:定长字符串,短则用空格填充,长则出错。
VARCHAR2型:变长字符串。字段长度根据实际字符串长度自动调整,不用空格填充。

2.数值型NUMBER(PRECISION,SCALE)
精度PRECISION指定所有数字位的个数,范围SCALE指定小数的位数,两个参数均是可选的。如果插入的字段数据超过指定位数,将自动四舍五入。

3.日期时间数据类型DATE
可以存储日期和时间的组合数据。ORACLE默认的日期格式是 DD-MON-YY。

4.LOB数据类型
用于大型的、未被结构化的数据,如二进制文件、图片文件等。LOB数据类型又分为BLOB、CLOB和BFILE三种。
BLOB类型:用于存储二进制对象。如图像、音频、视频。
CLOB类型:用于存储字符格式的大型对象。Oracle将数据转换成Unicode格式。
BFILE类型:将二进制文件作为操作系统文件存储在数据库外部,BFILE类型的字段仅保存二进制文件的指针。

5.ROWID类型
亦称伪列类型,用于保存表中每条记录的物理地址。每条记录都唯一的rowid。ORACLE自动为每个表建立名称为ROWID的字段。可以对该字段进行查询。
rowid确定了每条记录属于哪一个数据对象、数据文件、块、行。是基于64位编码的18个字符显示。

char、varchar和varchar2

原文链接:https://baijiahao.baidu.com/s?id=1697536902944501753&wfr=spider&for=pc

varchar 和 varchar2

varchar 和varchar2的区别很好理解,只需要记住这句话:varchar是标准sql中定义的,而varchar2是oracle所提供的独有的数据类型。
两种数据类型在存放数据时也有所区别。
varchar对于汉字、全角等字符占两个字节,对于数字,英文字符是一个字节,占的内存小。varchar存放固定长度的字符串,最大长度是2000,对于空串,varchar仍按空串处理。
varchar2一般情况下把所有字符都占两字节处理,具体要看字符集情况。比如GBK,汉字就会占两个字节,英文1个;如果是UTF-8,汉字一般占3个字节,英文还是1个。 但一般情况下,我们都认为是两个字节处理,因为oracle安装时候默认我们都选择GBK的编码格式。varchar2是存放可变长度的字符串,最大长度是4000。VARCHAR2把空串等同于null处理。

char 和 varchar

char是一种固定长度的类型,无论存储的数据多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。所以char可能更会浪费空间。
而varchar是一种可变长度的类型,当插入的长度小于定义的长度是,插入多上就存多长。

clob

原文链接:https://www.cnblogs.com/liqun-12345/p/5569569.html

  • BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。
  • 其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。

1.为何实用Clob:
oracle数据库当需要存入大数据量(大于4000)时,varchar2不够用,可以使用clob,本文描述clob怎么和Hibernate一起使用。

2.Clob类型的属性的赋值方式—— String转Clob:

String content = request.getParameter("content");//1.从request请求中取值(String类型的)
Clob clob = Hibernate.createClob(content);//2.通过hibernate将string转化为clob
news.setContent(clob);//3.给实体类对应属性赋值

3.Clob类型的属性的取值方式—— Clob转String:

List<News> list = query.addEntity(News.class).list();//1.从数据库取值
News news = (News)list.get(0);//2.取News对象
String content = ClobUtil.ClobToString(news.getContent());//3.将news对象中的clob类型的content转化为String字符串

4.clob默认不能插入空值,如何处理?

使用java + oracle插入clob类型的数据,需要用以下的步骤:
1、将数据插入数据库,对于clob字段,使其为空clob数据。例如:

insert into test values(1,empty_clob())";

2、从数据库中取出插入的clob字段,并将其赋值给oracle.sql.clob类型的变量。例如

String sqll="select content from test where id=1 for update";
  ResultSet rss=stmt.executeQuery(sqll);
  if(rss.next()){
   CLOB clob = ((OracleResultSet)rss).getCLOB(1);

3、给clob数据重新赋值,然后更新到数据库中。
例如:

clob.putString(1,"ddddddddddddddddddddddddddddddddddd");
   sql="update test set content=? where id=1";
   PreparedStatement pstmt=con.prepareStatement(sql);
   pstmt.setClob(1,clob);
   pstmt.executeUpdate();

标签:存储,varchar,clob,类型,字段,varchar2,oracle,长度,马拉松
From: https://www.cnblogs.com/fusio/p/17289832.html

相关文章

  • 【MySQL】MySQL番外01 — MySQL单表多字段模糊查询解决方法
    MySQL单表多字段模糊查询解决方法背景:在项目中经常遇到查询接口需要实现单表中对多字段进行多个关键字的模糊查询,但这个关键字并不一定只存在于某个字段。例如现有一张employees表,其中有last_name,first_name两个字段,分别记录一条用户的姓和名。根据用户输入的查询请求,在这两个......
  • Oracle JDK7 bug 发现、分析与解决实战
    作者:vivo官网商城开发团队众所周知,OracleJDK 是Java语言的绝对权威,很多时候JDK与Java语言近似一个概念。但我们始终要保持实事求是的精神,敢于质疑。本文记录了一次线上troubleshoot实战,包含问题分析、解决并提交 OracleJDK bug的核心过程。一、背景现象 总之就是......
  • 数据库流行度排名:Oracle 稳居第一
    数据库流行度排名:Oracle稳居第一播报文章砍柴网2018-12-0222:00砍柴网官方百家号关注日前,DB-Engines数据库流行度排行榜公布了最新的一组数据,数据显示,Oracle数据库虽然相比于前两月有所下滑,但依旧家底雄厚位列第一名。第二名同样是来自Oracle的MySQL......
  • 未来Oracle前景如何,oracle还有前景吗
    未来Oracle前景如何,oracle还有前景吗青霖 2022年11月28日20:16 31 0oracle和mysql的发展前景都是怎样的?我先给你说一下mysql和oracle区别,其实对于现如今的各种企业来说,用mysql和oracle都不等。第一相对价钱来说,mysql很多中小型企业用的比较多,原因就是相比于ORACLE昂......
  • oracle之安装data gaurd集群
    #################### 开启归档日志:shutdownimmediate;startupmount;alterdatabasearchivelog;alterdatabaseopen;archiveloglist#更改归档目录路径log_archive_dest_naltersystemsetlog_archive_dest_1='location=D:\software\arch1\';#手动切换日......
  • Windows 下 Oracle 全备
    bak.bat脚本如下delG:\orabk\full_*setNLS_LANG=SIMPLIFIEDCHINESE_CHINA.ZHS16GBKsetmydate=%date:~0,4%%date:~5,2%%date:~8,2%expdpbkuser/Lander$2022directory=dumdirdumpfile=full_%mydate%.dmplogfile=full_%mydate%.logfull=y这段脚本是用于使用......
  • oracle数据库按用户备份恢复,使用 expdp、impdp
    1,在数据库本机执行su-oracle切换oracle用户sqlplys/assysdba使用超级用户登select*fromdba_directories;查看管理员目录,一般会存在几个。2,导出命令,expdpuser/passwd@orclschemas=userdumpfile=expdp.dmpdirectory=DATA_PUMP_DIRlogfile=expdp.log##......
  • oracle-基础概念
    1.数据库启动流程thespfileorpfileisreadoracleinstanceisstartedthecontrofileisreadthedatabaseismountdatafilesandredologfileareopenedthedatabaseisavailableforuse2.tablesegmentextentblock之间的关系table:表segment:段extent:区bloc......
  • Oracle 停止impdp或expdp过程
    Oracle在执行impdp或expdp过程中如果不想执行按Ctrl+C中断,但进程并未中断仍在后台运行,可以看导出的文件大小一直在长expdp正确停止过程:1.查看正在运行的job,可以发现自己的job还在执行select*fromdba_datapump_jobs;2.根据上面job_name进入到刚才执行的expdp下expdpsy......
  • beacon帧字段结构最全总结(二)——HT字段总结
    https://www.cnblogs.com/fengf233/p/10919436.htmlbeacon帧字段结构最全总结(二)——HT字段总结一.HTCapabilitiesHTCapabilities:802.11n的mac层给802.11的mac层加入了高吞吐量单元。所有新加的802.11n功能都是通过管理帧中的HT单元才得以实现,总体如下 抓包中......