ORACLE的字段类型
RAW (size)
保存变长的二进制数据。最大长度由size指定。
在表中每行的长度可变,最大长度为每行2000字节。
LONG RAW
保存变长的二进制数据。
在表中每行的长度可变,最大长度为每行231- 1字节或2G。
0RACLE的字段类型如下:
字段类型
描述
字段长度及其缺省值
CHAR (size)
用于保存定长(size)字节的字符串数据。
每行定长(不足部分补为空格);最大长度为每行2000字节,缺省值为每行1字节。设置长度(size)前需考虑字符集为单字节或多字节。
VARCHAR2 (size)
用于保存变长的字符串数据。其中最大字节长度由(size)指定。
NVARCHAR2 (size)
由字符集决定保存变长的字符或字节。其中最大长度由(size)指定。
每行变长。对固定宽度的字符集来说,长度(size)是指字符的个数,对变宽的字符集来说,长度(size)是指字节的个数。最大长度(size)取决于保存在一个字符中的字节的长度,每行的最大长度为4000字节。由字符集决定缺省值为1个字符或1个字节。
LONG
保存变长的字符串数据。
在表中每行的长度可变,最大长度为每行231- 1字节或2G。
NUMBER (p, s)
保存变长的数字。其中精度的最大值为p,和/或有效的数字位数s的最大值38。
每行变长。每行的最大长度为21字节。
DATE
保存定长的日期或时间数据,范围为公元前4712/01/01到公元9999/12/31。
BLOB
保存二进制数据。
最大长度为232- 1字节或4G。
B
保存单字节字符数据。
最大长度为232- 1字节或4G。
NCLOB
保存由字符集指定的单字节或固定宽度多字节或变宽多字节的字符数据。
最大长度为232- 1字节或4G。
BFILE
保存在外部文件的二进制数据。
最大长度为232- 1字节或4G。
每行长度可变,最大长度为每行4000字节。设置长度(size)前需考虑字符集为单字节或多字节。
NCHAR(size)
由字符集决定保存的是定长(size)的字符或字节。
每行定长(不足部分补为空格)。对固定宽度的字符集来说,长度(size)是指字符的个数,对变宽的字符集来说,长度(size)是指字节的个数。最大长度(size)取决于保存在一个字符中的字节的长度,每行的最大长度为2000字节。由字符集决定缺省值为1个字符或1个字节。
oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)
通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助:1、查询出所有的用户表select * from user_tables 可以查询出所有的用户表select owner,table_name from all_tables; 查询所有表,包括其他用户表通过表名过滤需要将字母作如下处理select * from user_tables where table_name = upper('表名 '因为无论你建立表的时候表名名字是大写还是小写的, create 语句执行通过之后,对应的 user_tables表中的 table_name字段都会自动变为大写字母, 所以必须通过内置函数 upper 将字符串转化为大写字母进行查询, 否则, 即使建表语句执行通过之后, 通过上面的查询语句仍然查询不到对应的记录。
2、查询出用户所有表的索引select * from user_indexes3、查询用户表的索引 (非聚集索引 :select * from user_indexes where uniqueness='NONUNIQUE'4、查询用户表的主键 (聚集索引 :select * from user_indexes where uniqueness='UNIQUE'5、查询表的索引select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name andt.table_name='NODE'6、查询表的主键select cu.* from user_cons_columns cu, user_constraints au wherecu.constraint_name = au.constraint_name andau.constraint_type = 'P' AND cu.table_name = 'NODE'7、查找表的唯一性约束(包括名称,构成列:select column_name from user_cons_columns cu, user_constraints au wherecu.constraint_name=au.constraint_name andcu.table_name='NODE'8、查找表的外键select * from user_constraints c where c.constraint_type = 'R' andc.table_name='STAFFPOSITION'查询外键约束的列名:select * from user_cons_columns cl where cl.constraint_name = 外键名称查询引用表的键的列名:select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名9、查询表的所有列及其属性方法一:select * from user_tab_columns where table_name=upper('表名 ';方法二:select cname,coltype,width from col where tname=upper('表名 ';;10. 查询一个用户中存在的过程和函数select object_name,created,status from user_objectswhere lower(object_type in ('procedure','function';11. 查询其它角色表的权限select * from role_tab_privs ;。
Oracle中的数据类型
Oracle中的数据类型Ø简介本⽂主要来讨论 Oracle 中的数据类型,包括以下内容:1.概念介绍2.数值类型3.字符类型4.⽇期类型5.⼤数据与⼆进制类型6.列举常⽤类型的数字代码1.概念介绍在我们的程序中有各种数据类型,⽽在 Oracle 中也有很多种类型,其实每⼀种语⾔的数据类型都会跟数据库中的数据类型⼤致的对应起来。
⽐如:在 Oracle 中主要分为四⼤数据类型,即:数字类型、字符类型、⽇期类型,以及⼤数据与⼆进制类型,下⾯就来讨论着⼏种常⽤的数据类型。
2.数值类型1)NUMBER(Type = 2)number 类型是 Oracle 中常⽤的数据类型,即可以⽤于存储整数整数,也可以存储⼩数⼩数,是⼀个⾮常有意思的数据类型。
number 是⼀个可变长度可变长度的数据类型,并且始终保持四舍五⼊四舍五⼊的原则。
number 可以指定两个参数 number(p,s):l p表⽰有效位,从左边第⼀个⾮0的数字开始数,到结尾的长度,取值范围:1 ~ 38;l s表⽰⼩数位,取值范围:-84 ~ 127。
注意:注意:通常情况下(需要整数位时),应该 p > s,例如:1.number(3,2) 只能存储:0.01 ~ 9.99 和 -0.01 ~ -9.992.number(3,3) 只能存储:0.001 ~ 0.999 和 -0.001 ~ -0.9993.number(2,3) 只能存储:0.001 ~ 0.099 和 -0.001 ~ -0.099n number 可以表⽰的数值范围:-1.0e-130 ~ 1.0e+126,占⽤空间为1 ~ 22 个字节。
下⾯看⼏个常见的例⼦:1.numbercreate table t_number(num number);insert into t_number values(56);insert into t_number values(56.78);select * from t_number;执⾏以上语句,实际存储为56和56.78。
oracle select clob字段内容-概述说明以及解释
oracle select clob字段内容-概述说明以及解释1.引言1.1 概述CLOB字段(Character Large Object)是一种用于存储大文本数据的Oracle数据库字段类型。
在数据库中,通常将CLOB字段用于存储大于4000个字符的文本数据,例如长篇文章、日志信息、XML文档等。
本文将重点讨论如何在Oracle数据库中查询CLOB字段的内容。
通过有效地查询CLOB字段,我们可以轻松地获取和操作大文本数据,从而更好地满足业务需求。
接下来,我们将详细介绍Oracle中如何查询CLOB字段内容,以及在查询过程中需要注意的事项。
通过学习本文内容,读者将更加了解如何有效地处理CLOB字段数据,提高数据库查询和管理的效率。
1.2文章结构文章结构部分主要介绍了本文的整体结构和内容安排。
首先,我们将引言部分介绍本文的背景和目的,引导读者了解本文的主题和意义。
接着,在正文部分我们将详细介绍什么是CLOB字段以及在Oracle中如何查询CLOB字段内容,同时提供查询过程中需要注意的事项。
最后,在结论部分我们将对本文进行总结,探讨CLOB字段的应用场景,以及展望未来可能的发展方向。
通过本文的结构安排,读者将能够全面了解和掌握如何查询Oracle中的CLOB字段内容。
1.3 目的:本文的目的在于帮助读者了解如何在Oracle数据库中查询CLOB字段的内容。
CLOB字段是一种专门用来存储大文本数据的字段类型,通常用于存储文档、日志、报告等内容较大的数据。
在实际应用中,我们经常需要查询CLOB字段的内容以便分析和处理,因此正确地查询和处理CLOB字段内容具有重要意义。
通过本文的阐述,读者将能够清楚地了解什么是CLOB字段、如何准确地查询CLOB字段内容以及在查询过程中需要注意的事项。
希望读者在阅读完本文后能够掌握查询CLOB字段内容的技巧,提高数据处理的效率和准确性。
2.正文2.1 什么是CLOB字段CLOB是Oracle数据库中一种用来存储大容量字符数据的数据类型,其全称为Character Large Object。
oracle数据库表的已经有数据,想修改某个字段的类型,如何修改
oracle数据库表的已经有数据,想修改某个字段的类型,如何修改⼀,alter table 表名 modify 字段名字段类型(字段长度);如果不好使,就是⽤第⼆种⽅法:⼆,-- Create tablecreate table TABLE1(col1 number(9),col2 char(20));//尝试修改ALTER TABLE TABLE1 MODIFY COL1 NUMBER(10); --修改成功,因为表中⽆数据//插⼊数据INSERT INTO TABLE1 (COL1, COL2) VALUES (1, 'aaa');//再次尝试修改ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);--修改失败,因为表中已有数据,不允许直接操作//先缓存表CREATE TABLE T_TABLE1 AS SELECT * FROM TABLE1;//删除原表所有数据DELETE FROM TABLE1;//修改字段ALTER TABLE TABLE1 MODIFY COL1 NUMBER(9);--修改成功ALTER TABLE TABLE1 MODIFY COL2 VARCHAR2(20);--修改成功//插⼊原数据INSERT INTO TABLE1 SELECT * FROM T_TABLE1;//删除缓存表DROP TABLE T_TABLE1;//注意,如果是CHAR类型,不⾜位数会⾃动⽤空格补齐,所以谨慎使⽤CHAR类型,并可⽤TRIM()验证是否有符合条件的记录。
//初始表结构时,SELECT * FROM TABLE1 WHERE COL2 = 'aaa‘; 是没有数据的,需要SELECT * FROM TABLE1 WHERE TRIM(COL2) = 'aaa';。
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)
ORACLE数据库中主要字段类型的读写例子(包括:Long、Raw、Blob)这里我用的是ORACLE9I, 建立了表C_EMP1_T,结构如下:create table C_EMP1_T(EMP_ID NUMBER(20) not null, //用户IDEMP_NO VARCHAR2(20), //用户编号EMP_DESC LONG, //用户简历USED_DATE DATE, //注册日期EMP_IC_MAC RAW(50), //用户IC卡的MAC号EMP_ADMIN_FLAG CHAR(1), //管理员标志EMP_PICTURE BLOB //用户图像)其中INSERT/UPDATE/SELECT的代码分别如下(DELETE比较简单就省略了,其中SELECT和UPDATE的条件都是记录的rowid):首先BLOB字段是存图片的,所以有一个过程是把图片传到服务器上:先在aspx上加:<form id="Form1" enctype="multipart/form-data" method="post"runat="server"><input id="IoFile" runat="server" type="file"><FONT face="宋体">下一步→</FONT><asp:Button id="btunload" runat="server" Text="上传"></asp:Button> </form>和代码:private void btunload_Click(object sender, System.EventArgs e){btunload.Enabled = false;//获得文件名称string tempfilename = IoFile.PostedFile.FileName;//注: loFile.PostedFile.FileName 返回的是通过文件对话框选择的文件名,这之中包含了文件的目录信息tempfilename = Path.GetFileName ( tempfilename);if (tempfilename.Substring(tempfilename.Length-4,4) == ".bmp") {//去掉目录信息,返回文件名称//判断上传目录是否存在,不存在就建立string tempDirectory = "D:/WWWROOT/MYWEB/dbtest/Image/";if ( ! Directory.Exists ( tempDirectory ) )Directory.CreateDirectory ( tempDirectory ) ;//上传文件到服务器string tempPath = tempDirectory+tempfilename;//得到上传目录及文件名称IoFile.PostedFile.SaveAs ( tempPath );Label1.Text = "<img src='image/"+tempfilename+"'>";Session["filename"] = tempfilename;}else{Label1.Text = "错误的文件类型";}btunload.Enabled = true;/*' 获得并显示上传文件的属性FileName.Text = lstrFileName' 获得文件名称FileType.Text = loFile.PostedFile.ContentType' 获得文件类型FileLength.Text = cStr ( loFile.PostedFile.ContentLength )' 获得文件长度FileUploadForm.visible = falseAnswerMsg.visible = true' 显示上传文件属性End sub */}INSERT:private void BtInsert_Click(object sender, System.EventArgs e){OracleConnection Ocon = new OracleConnection("user id=cmes;da ta source=mes;password=cmes");Ocon.Open();//OracleCommand Ocom = new OracleCommand("insert into c_emp 1_t (EMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLA G,EMP_PICTURE)values(:emp_id,:emp_no,:emp_desc,:emp_date,:emp_ic_m ac,:flag,:picture)",Ocon);OracleCommand Ocom = new OracleCommand("insert into c_emp1 _t (EMP_ID,EMP_NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLA G)values(:emp_id,:emp_no,:emp_desc,:emp_date,:emp_ic_mac,:flag)",Oco n);Ocom.Parameters.Add(new OracleParameter("emp_id",OracleType. Number));Ocom.Parameters.Add(new OracleParameter("emp_no",OracleType. VarChar));Ocom.Parameters.Add(new OracleParameter("emp_desc",OracleTyp e.LongVarChar));Ocom.Parameters.Add(new OracleParameter("emp_date",OracleTyp e.DateTime));Ocom.Parameters.Add(new OracleParameter("flag",OracleType.Cha r));Ocom.Parameters.Add(new OracleParameter("emp_ic_mac",OracleT ype.Raw));//Ocom.Parameters.Add(new OracleParameter("picture",OracleType. Blob));Ocom.Parameters["emp_id"].Value = Convert.ToDecimal(tbempid.T ext);Ocom.Parameters["emp_no"].Value = tbempno.Text;Ocom.Parameters["emp_desc"].Value = tbempdesc.Text;string empdate = tbempdate.Text;// yyyymmddOcom.Parameters["emp_date"].Value = new DateTime(Convert.T oInt32(empdate.Substring(0,4)),Convert.ToInt32(empdate.Substring(4,2)),C onvert.ToInt32(empdate.Substring(6,2)) );if (rb1.Checked)Ocom.Parameters["flag"].Value = '1';if (rb2.Checked)Ocom.Parameters["flag"].Value = '2';if (rb3.Checked)Ocom.Parameters["flag"].Value = '3';Ocom.Parameters["emp_ic_mac"].Value = setraw(tbicmac.Text);Ocom.ExecuteNonQuery();/*由与有字段long和blob一起,所以不能在一个insert语句中进行插入,单独insert是成功的OracleConnection Ocon = new OracleConnection("user id=cmes;da ta source=mes;password=cmes");Ocon.Open();OracleCommand Ocom = new OracleCommand("insert into c_emp1 _t (EMP_ID,EMP_PICTURE)values(:emp_id,:picture)",Ocon);Ocom.Parameters.Add(new OracleParameter("emp_id",OracleType. Number));Ocom.Parameters.Add(new OracleParameter("picture",OracleType.B lob));Ocom.Parameters["emp_id"].Value = Convert.ToDecimal(tbempid.T ext);FileStream reader = new FileStream("D:/WWWROOT/MYWEB/dbtes t/Image/002.bmp",FileMode.Open);//在iis中不用用“\”目录结构应该是“/”byte[] tempimage = new byte[reader.Length];reader.Read(tempimage,0,tempimage.Length);//OracleLob tempLob=OracleLob.Null;//tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);//tempLob.Write(tempimage,0,tempimage.Length);//tempLob.EndBatch();reader.Close();Ocom.Parameters["picture"].Size = tempimage.Length;//tempimage.CopyTo(Ocom.Parameters["picture"].Value,0);Ocom.Parameters["picture"].Value = tempimage;Ocom.ExecuteNonQuery();*/string myfilename = Convert.ToString(Session["filename"]);if (myfilename != ""){Ocom.Parameters.Clear();mandText = "update c_emp1_t SET EMP_PICTURE = : PICTURE WHERE EMP_ID= :EMP_ID ";Ocom.Parameters.Add(new OracleParameter("EMP_ID",OracleTy pe.Number));Ocom.Parameters.Add(new OracleParameter("PICTURE",OracleT ype.Blob));Ocom.Parameters["EMP_ID"].Value = Convert.ToDecimal(tbempi d.Text);FileStream reader = new FileStream("D:/WWWROOT/MYWEB/db test/Image/"+myfilename,FileMode.Open);//在iis中不用用“\”目录结构应该是“/”byte[] tempimage = new byte[reader.Length];reader.Read(tempimage,0,tempimage.Length);reader.Close();Ocom.Parameters["PICTURE"].Size = tempimage.Length;Ocom.Parameters["PICTURE"].Value = tempimage;Ocom.ExecuteNonQuery();Session["filename"] = "";}Ocon.Close();}UPDATE:private void btUpdate_Click(object sender, System.EventArgs e){OracleConnection Ocon = new OracleConnection("user id=cmes;da ta source=mes;password=cmes");Ocon.Open();OracleCommand Ocom = new OracleCommand("UPDATE c_emp1_ t SET EMP_ID= :emp_id,EMP_NO= :emp_no,EMP_DESC= :emp_desc,USED_ DATE= :emp_date,EMP_IC_MAC= :emp_ic_mac,EMP_ADMIN_FLAG= :flag W HERE ROWID = :MYROWID",Ocon);Ocom.Parameters.Add(new OracleParameter("MYROWID",OracleTyp e.RowId));Ocom.Parameters.Add(new OracleParameter("emp_id",OracleType. Number));Ocom.Parameters.Add(new OracleParameter("emp_no",OracleType. VarChar));Ocom.Parameters.Add(new OracleParameter("emp_desc",OracleTyp e.LongVarChar));Ocom.Parameters.Add(new OracleParameter("emp_date",OracleTyp e.DateTime));Ocom.Parameters.Add(new OracleParameter("flag",OracleType.Cha r));Ocom.Parameters.Add(new OracleParameter("emp_ic_mac",OracleT ype.Raw));Ocom.Parameters["MYROWID"].Value = TBROWID.Text;Ocom.Parameters["emp_id"].Value = Convert.ToDecimal(tbempid.T ext);Ocom.Parameters["emp_no"].Value = tbempno.Text;Ocom.Parameters["emp_desc"].Value = tbempdesc.Text;string empdate = tbempdate.Text;// yyyymmddOcom.Parameters["emp_date"].Value = new DateTime(Convert.T oInt32(empdate.Substring(0,4)),Convert.ToInt32(empdate.Substring(4,2)),C onvert.ToInt32(empdate.Substring(6,2)) );if (rb1.Checked)Ocom.Parameters["flag"].Value = '1';if (rb2.Checked)Ocom.Parameters["flag"].Value = '2';if (rb3.Checked)Ocom.Parameters["flag"].Value = '3';Ocom.Parameters["emp_ic_mac"].Value = setraw(tbicmac.Text);Ocom.ExecuteNonQuery();string myfilename = Convert.ToString(Session["filename"]);if (myfilename != ""){Ocom.Parameters.Clear();mandText = "update c_emp1_t SET EMP_PICTURE = : PICTURE WHERE EMP_ID= :EMP_ID ";Ocom.Parameters.Add(new OracleParameter("EMP_ID",OracleTy pe.Number));Ocom.Parameters.Add(new OracleParameter("PICTURE",OracleT ype.Blob));Ocom.Parameters["EMP_ID"].Value = Convert.ToDecimal(tbempi d.Text);FileStream reader = new FileStream("D:/WWWROOT/MYWEB/db test/Image/"+myfilename,FileMode.Open);//在iis中不用用“\”目录结构应该是“/”byte[] tempimage = new byte[reader.Length];reader.Read(tempimage,0,tempimage.Length);reader.Close();Ocom.Parameters["PICTURE"].Size = tempimage.Length;Ocom.Parameters["PICTURE"].Value = tempimage;Ocom.ExecuteNonQuery();Session["filename"] = "";}Ocon.Close();}SELECT(由于图片是直接向客户端输出,所以需要另一个页面来输入图片):private void btselect_Click(object sender, System.EventArgs e){if (TBROWID.Text.Length < 18){TBROWID.Text = "请输入正确的ROWID";return;}OracleConnection Ocon = new OracleConnection("user id=cmes;da ta source=mes;password=cmes");Ocon.Open();OracleCommand Ocom = new OracleCommand("select EMP_ID,EMP _NO,EMP_DESC,USED_DATE,EMP_IC_MAC,EMP_ADMIN_FLAG,EMP_PICTUR E from c_emp1_t where rowid = :emprowid",Ocon);Ocom.Parameters.Add(new OracleParameter("emprowid",OracleTyp e.RowId));Ocom.Parameters["emprowid"].Value = TBROWID.Text;OracleDataReader reader = Ocom.ExecuteReader();while (reader.Read()){if (!(reader.IsDBNull(0)))tbempid.Text = Convert.ToString( reader.GetDecimal(0));if (!(reader.IsDBNull(1)))tbempno.Text = reader.GetString(1);if (!(reader.IsDBNull(2)))tbempdesc.Text = reader.GetString(2);if (!(reader.IsDBNull(3))){DateTime DT = reader.GetDateTime(3);tbempdate.Text = DT.ToString("yyyyMMdd");}if (!(reader.IsDBNull(4))){byte[] temp = new byte[4000];reader.GetBytes(4,0,temp,0,4000);tbicmac.Text = getraw(temp);}elsetbicmac.Text = "";if (!(reader.IsDBNull(5))){/*char tempflag = reader.GetChar(5); //不支持此方法switch (tempflag){case '1':rb1.Checked = true;break;case '2':rb2.Checked = true;break;default :rb3.Checked = true;break;}*/char tempflag = Convert.ToChar(reader.GetValue(5));switch (tempflag){case '1':rb1.Checked = true;break;case '2':rb2.Checked = true;break;default :rb3.Checked = true;break;}}if (!(reader.IsDBNull(6))){Label1.Text = "<img src='webform3.aspx?ROWID="+TBROWI D.Text+"'>";}}reader.Close();Ocon.Close();}webform3.aspx的程序:private void Page_Load(object sender, System.EventArgs e){OracleConnection Ocon = new OracleConnection("user id=cmes;da ta source=mes;password=cmes");Ocon.Open();OracleCommand Ocom = new OracleCommand("select EMP_PICTUR E from c_emp1_t where rowid = :emprowid",Ocon);Ocom.Parameters.Add(new OracleParameter("emprowid",OracleTyp e.RowId));Ocom.Parameters["emprowid"].Value = Request.Params["ROWID"];OracleDataReader reader = Ocom.ExecuteReader();while (reader.Read()){if (!(reader.IsDBNull(0))){OracleLob tempBlob = reader.GetOracleLob(0);byte[] tempbuffer = new byte[tempBlob.Length];//tempBlob.BeginBatch(OracleLobOpenMode.ReadWrite);会有错误ORA-22292: 无法在没有事务处理的情况下以读写模式打开 LOBtempBlob.BeginBatch();tempBlob.Read(tempbuffer,0,tempbuffer.Length);tempBlob.EndBatch();//下面是把具体的文件保存出来BinaryWriter writer = new BinaryWriter(new FileStream("D:/ WWWROOT/MYWEB/dbtest/Image/temp.bmp",FileMode.Create));for(int i=0;i<tempbuffer.Length;i++){writer.Write(tempbuffer[i]);}writer.Close();//下面是直接把图片用流向客户端输出Response.BinaryWrite(tempbuffer);}}reader.Close();Ocon.Close();}这些代码在2000下测试通过的,初次写代码有些凌乱,请大家多多提意见。
oracle的clob类型
oracle的clob类型一、CLOB类型的概述CLOB是Oracle数据库中的一种数据类型,全称为Character Large Object,即字符大对象。
它可以存储大量的文本数据,最大容量可以达到4GB。
CLOB类型的数据在存储和检索时与普通字符串不同,需要特殊的处理方式。
二、CLOB类型的创建在Oracle数据库中创建一个CLOB类型的字段需要使用CREATE TABLE语句,并指定字段名、数据类型和大小等信息。
例如:CREATE TABLE my_table (id NUMBER,clob_field CLOB);这样就创建了一个名为my_table的表,其中包含一个id字段和一个clob_field字段,clob_field字段的数据类型为CLOB。
三、CLOB类型的插入向CLOB类型字段中插入数据需要使用PL/SQL或Java等编程语言进行操作。
以下是PL/SQL插入示例:DECLAREmy_clob CLOB;BEGINSELECT clob_field INTO my_clob FROM my_table WHERE id = 1 FOR UPDATE;DBMS_LOB.WRITEAPPEND(my_clob, LENGTH('Hello world'),'Hello world');COMMIT;END;这段代码首先从my_table表中查询id为1的记录,并将其对应的clob_field字段赋值给变量my_clob。
然后使用DBMS_LOB.WRITEAPPEND函数将字符串“Hello world”写入到my_clob变量中,并提交事务。
四、CLOB类型的读取从CLOB类型字段中读取数据也需要使用PL/SQL或Java等编程语言进行操作。
以下是PL/SQL读取示例:DECLAREmy_clob CLOB;my_string VARCHAR2(32767);BEGINSELECT clob_field INTO my_clob FROM my_table WHERE id = 1; DBMS_LOB.READ(my_clob, LENGTH(my_clob), 1, my_string);DBMS_OUTPUT.PUT_LINE(my_string);END;这段代码首先从my_table表中查询id为1的记录,并将其对应的clob_field字段赋值给变量my_clob。
oracle字段类型查询语句
oracle字段类型查询语句Oracle是一种关系型数据库管理系统,它提供了多种字段类型来存储和处理不同类型的数据。
根据数据的特点和应用需求,我们可以选择合适的字段类型来创建数据库表。
在Oracle中,常见的字段类型包括数值型、字符型、日期型、大对象型和布尔型等。
下面将分别介绍这些字段类型的特点和查询语句。
1. 数值型字段类型Oracle提供了多种数值型字段类型,如整数型、浮点型、小数型等。
常用的数值型字段类型有NUMBER、INTEGER、FLOAT和DECIMAL等。
查询语句示例:创建一个存储整数的字段CREATE TABLE demo (id NUMBER(10));创建一个存储带小数的字段CREATE TABLE demo (price DECIMAL(10, 2));2. 字符型字段类型字符型字段类型用于存储文本数据,如姓名、地址等。
Oracle提供了多种字符型字段类型,如CHAR、VARCHAR2、CLOB等。
查询语句示例:创建一个存储固定长度字符串的字段CREATE TABLE demo (name CHAR(20));创建一个存储可变长度字符串的字段CREATE TABLE demo (comment VARCHAR2(200));3. 日期型字段类型日期型字段类型用于存储日期和时间数据。
Oracle提供了DATE和TIMESTAMP等日期型字段类型。
查询语句示例:创建一个存储日期的字段CREATE TABLE demo (birth_date DATE);创建一个存储日期和时间的字段CREATE TABLE demo (creation_time TIMESTAMP);4. 大对象型字段类型大对象型字段类型用于存储大量的文本数据或二进制数据。
Oracle提供了CLOB和BLOB等大对象型字段类型。
查询语句示例:创建一个存储大文本数据的字段CREATE TABLE demo (description CLOB);创建一个存储大二进制数据的字段CREATE TABLE demo (image BLOB);5. 布尔型字段类型布尔型字段类型用于存储真/假或开/关等逻辑值。
Oracle常用的数据库字段类型
Oracle常⽤的数据库字段类型
字段类型中⽂说明限制条件其它说明
CHAR固定长度字符串最⼤长度2000 bytes
VARCHAR2可变长度的字符串最⼤长度4000 bytes可做索引的最⼤长度749 NCHAR根据字符集⽽定的固定长度字符串最⼤长度2000 bytes
NVARCHAR2根据字符集⽽定的可变长度字符串最⼤长度4000 bytes
DATE⽇期(⽇-⽉-年)DD-MM-YY(HH-MI-SS)经过严格测试,⽆千⾍问题LONG超长字符串最⼤长度2G(231-1)⾜够存储⼤部头著作
RAW固定长度的⼆进制数据最⼤长度2000 bytes可存放多媒体图象声⾳等LONG RAW可变长度的⼆进制数据最⼤长度2G同上
BLOB⼆进制数据最⼤长度4G
CLOB字符数据最⼤长度4G
NCLOB根据字符集⽽定的字符数据最⼤长度4G
BFILE存放在数据库外的⼆进制数据最⼤长度4G
ROWID数据表中记录的唯⼀⾏号10 bytes ********.****.****格式,*为0或1
NROWID⼆进制数据表中记录的唯⼀⾏号最⼤长度4000 bytes
NUMBER(P,S)数字类型P为整数位,S为⼩数位
DECIMAL(P,S)数字类型P为整数位,S为⼩数位
INTEGER整数类型⼩的整数
FLOAT浮点数类型NUMBER(38),双精度
REAL实数类型NUMBER(63),精度更⾼。
Oracle11g数据类型
Oracle11g数据类型1. 字符类型数据类型长度说明CHAR(n BYTE/CHAR)默认1字节,n值最⼤为2000末尾填充空格以达到指定长度,超过最⼤长度报错。
默认指定长度为字节数,字符长度可以从1字节到四字节。
NCHAR(n)默认1字符,最⼤存储内容2000字节末尾填充空格以达到指定长度,n为Unicode字符数。
默认为1字节。
NVARCHAR2(n)最⼤长度必须指定,最⼤存储内容4000字节变长类型。
n为Unicode字符数VARCHAR2(n BYTE/CHAR)最⼤长度必须指定,⾄少为1字节或者1字符,n值最⼤为4000变长类型。
超过最⼤长度报错。
默认存储的是长度为0的字符串。
VARCHAR同VARCHAR2不建议使⽤2. 数字类型数据类型长度说明NUMBER(p[,s])1-22字节。
P取值范围1到38S取值范围-84到127存储定点数,值的绝对值范围为1.0 x 10 -130⾄1.0 x 10 126。
值⼤于等于1.0 x 10 126时报错。
p 为有意义的10进制位数,正值s为⼩数位数,负值s表⽰四舍五⼊到⼩数点左部多少位。
BINARY_FLOAT5字节,其中有⼀长度字节。
32位单精度浮点数类型。
符号位1位,指数位8位,尾数位23位。
BINARY_DOUBLE9字节,其中有⼀长度字节。
64位双精度浮点数类型。
3. 时间、时间间隔类型时间字段可取值范围:时间字段时间类型有效值时间间隔类型有效值YEAR-4712⾄9999,包括0任何整数MONTH01⾄120⾄11DAY01⾄31任何整数HOUR00 ⾄ 230 ⾄ 23MINUTE00 ⾄ 590⾄ 59SECOND00 to 59.9(n),9(n)不适⽤与DATE类型0 to 59.9(n)TIMEZONE_HOUR-1⾄14,不适⽤与DATE和TIMESTAMP类型不可⽤TIMEZONE_MINUTE00⾄59,不适⽤与DATE和TIMESTAMP类型不可⽤TIMEZONE_REGION不可⽤TIMEZONE_ABBR不可⽤时间、时间间隔类型:数据类型长度说明DATE7字节默认值为SYSDATE的年、⽉,⽇为01。
Oracle自定义数据类型1
Oracle⾃定义数据类型1⼀ Oracle中的类型类型有很多种,主要可以分为以下⼏类:1、字符串类型。
如:char、nchar、varchar2、nvarchar2。
2、数值类型。
如:int、number(p,s)、integer、smallint。
3、⽇期类型。
如:date、interval、timestamp。
4、PL/SQL类型。
如:pls_integer、binary_integer、binary_double(10g)、binary_float(10g)、boolean。
plsql类型是不能在sql环境中使⽤的,⽐如建表时。
5、⾃定义类型:type / create type。
⼆ type / create type 区别联系相同:可⽤⽤关键字create type 或者直接⽤type定义⾃定义类型,区别:create type 变量 as table of 类型--create type 变量 as object(字段1 类型1,字段2 类型2);--------------------------与 type 变量 is table of 类型--type 变量 is record(字段1 类型1,字段2 类型2);区别是⽤ create 后⾯⽤ as , 若直接⽤ type 后⾯⽤ iscreate 是创 object , ⽽ type 是创 record .另 type⽤在语句块中,⽽create 是的独⽴的.⼀般定义object的语法:⽤create type ⾃定义表类型A as table of ⾃定义Object类型A和create type ⾃定义Object类型A as object(字段1 类型1,字段2 类型2);与type ⾃定义表类型B is table of 类型和type ⾃定义Object类型B is record(字段1 类型1,字段2 类型2);⾃定义类型⼀般分为两中,object类型和table类型.object类似于⼀个recored,可以表⽰⼀个表的⼀⾏数据,object的字段就相当与表的字段.⾃定义的table类型需要⽤的已经定义好的object类型.type ⾃定义Object类型B is record(字段1 类型1,字段2 类型2);3.1:什么是记录(Record)?由单⾏多列的标量构成的复合结构。
