Oracle数据类型与约束

Oracle数据类型与约束

一、Oracle表空间

1、表空间

Oracle数据库对数据的管理是基于表空间的概念来的,各种数据以及存储数据的优化实际上也是通过优化表空间来实现的。

2、表空间的分类

  • 永久表空间:用来存放表的数据, 视图, 存储过程或者函数等需要永久保存的对象的空间。
  • 临时表空间:用来存放查询结果等临时数据的空间。
  • UNDO表空间:用于存放回滚数据, 已经删除数据等对象的表空间。

3、用户的分类

  • sys: 超级管理员,权限最大。
  • system: 次超级管理员。
  • scott: 普通用户。

二、oracle基础数据类型

1、字符串类型

字符串数据类型依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种。

类型描述
CHAR定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE)、CHAR(12 CHAR)。一般来说默认是存储字节。
NCHAR一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2000字节的信息,它的最大长度取决于国家字符集。
varchar定长字符串,最多可以存储2000字节的信息。varchar是标准sql里面的。
VARCHAR2变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4000字节的信息。varchar2是oracle提供的独有的数据类型。
NVARCHAR2一个包含UNICODE格式数据的变长字符串,NVARCHAR2最多可以存储4000字节的信息。

varchar和varchar2的比较

varcharvarchar2
标准sqloracle提供的独有的数据类型
汉字占两个字节,对于数字英文是一个字节把所有字符都占两字节处理
对空串不处理将空串当做null来处理
存放固定长度的字符串存放可变长度的字符串。
最大长度是2000最大长度是4000
对于不够位数的用空格添补varchar2不用

2、数字类型

类型
NUMBERNUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。
INTEGERINTEGER指比较小的整数。是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
FLOATFLOAT类型也是NUMBER的子类型。
NUMBER
number包括正负整数和小数, 有效位数, 小数位数
number§number(5)括号里写有效位数,这里最大范围是99999,最小范围是-99999
NUMBER(P,S)number(5,2)逗号后面指小数的有效位数,这里指最大范围是999.99,最小范围是-999.99

3、日期类型

类型
DATEDATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。
TIMESTAMPTIMESTAMP是一个7字节或12字节的定宽日期/时间数据类型,是DATE类型的扩展类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

4、LOB类型

内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视频、空间数据存储。

类型
CLOBCLOB存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符
NCLOBNCLOB存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。
BCLOBBLOB存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。
BFILE二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理。

5、RAW & LONG RAW

类型
RAW用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2000字节的信息,建议使用 BLOB 来代替它
LONG RAWLONG RAW类型,能存储2GB的原始二进制数据(不用进行字符集转换的数据)。建议使用BLOB来代替它。

6、ROWID & UROWID类型

类型
ROWIDROWID是一种特殊的列类型,称之为伪列(pseudocolumn)。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。ROWID表示行的地址,ROWID伪列用ROWID数据类型定义。Oracle数据库中每行都有一个伪列。ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得行的最快方法。但是,行的ROWID会随着卸载和重载数据库而发生变化,因此建议不要在事务中使用ROWID伪列的值。例如,一旦当前应用已经使用完记录,就没有理由保存行的ROWID。不能通过任何SQL语句来设置标准的ROWID伪列的值。
UROWIDUROWID,它用于表,是行主键的一个表示,基于主键生成。UROWID与ROWID的区别就是UROWID可以表示各种ROWID,使用较安全。一般是索引组织表在使用UROWID。

7、其他

boolean类型有三个:true;false;null/unknown(空/未知);

三、Oracle数据库约束

1、主键约束

为了保证表中数据的唯一性,一个表中只能有一个主键,但这个主键可以由多个字段(联合主键,复合主键)构成,但不建议这样。

可以在建表时在键选项中设置关键字:primary key ;例如将名字设为主键可以这么写:PK_T_users_uname (oracle对大小写不敏感,保存后自动转换为大写)

代码示例:ALTER TABLE 表名 ADD CONSTRAINT 主键名称 PRIMARY KEY(uname)

2、非空约束

记录一条信息的时候如果用户名和密码没有被记录, 那么这条记录是没有实际意义的, 创建表的时候默认是可以为空的。可以在编辑表中将列中可为空对勾去掉。
代码示例: ALTER TABLE t_users MODIFY uname NOT NULL 意思是将t_users表格内的uname字段设置为非空。

3、唯一约束

作用:保证字段值的唯一性,与主键的区别:唯一约束可以为空值, 唯一约束可以有多个;使用语句创建唯一约束只能写多条语句, 类似于insert into;

代码示例:ALTER TABLE 表名 ADD CONSTRAINT uk_appuser UNIQUE(指定的列名)

4、外键约束

唯一一个涉及两个表中的字段约束,插入数据的时候, 从表中的关联关系的字段, 要么是一个主表主键的关联, 要么是一个空值。

比如A表的uname是主键,在B表设置uname是外键,当在B表中插入是uname列中的数据时,其内容要么是A表中uname中已有的,要么是一个空值,不能为其他值。

此时A表是主表,B表是A表的子表,当删除A表中的主键的数据时,如果这条数据被子表关联,是无法删除的,但不影响子表外键数据的删除。

代码示例:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段名) REFERENCES 主表名

5、检查约束

作用: 使表当中的值更具有实际意义;比如定义一个年龄的范围;

代码示例: ALTER TABLE appuser ADD CONSTRAINT c_age CHECK(age > 0 AND age < 150)

6、默认约束

四、表的主键与外键

定义主键和外键主要是为了维护关系数据库的完整性。

  1. 主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
  2. 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
  3. 外键能关联的只能是另一张表的主键。

五、运算符和表达式

表达式类似于java, 可以是常量, 可以是变量, 也可以是表中的一个字段。

1.赋值运算符(:=)

2.算术运算符(+ - * / 注意这个地方没有取余的运算符, 取余使用mod函数)

3.比较运算符(> >= < <= =[注意不是==] <>/!=)

4.逻辑运算符(and or not)

5.字符串连接符(||)/

附录:相关文章

Oracle数据库开发
【转】oracle数据库NUMBER数据类型
oracle数据库的数据类型
【转贴】Oracle数据库lob大对象数据类型字段总结,值得收藏
oracle数据库——常用的数据类型
Oracle 数据库语句大全
Oracle数据库全球化
【转】通过Hibernate将数据 存入oracle数据库例子
Oracle数据库基础知识
Oracle数据库开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值