Oracle学习——数据类型、约束类型

  在Orcale数据库中,对于字段的属性我们会在建表时给定。下面将介绍数据库中有哪些常见的列属性和对列的一些约束。

数据类型

一、CHAR / VARCHAR2 / NVARCHAR2

  以上三个都是字符串类型,他们之间有以下区别:

  • CHAR是不可变字符类型,在定义时需要规定所占字节长度,例:CHAR(10),表示字节长度为10。
  • VARCHAR2表示可变字符类型,在定义时只需要规定最大字节长度即可,例:VARCHAR2(10)。
  • NVARCHAR2也表示可变类型,不过定义时规定的是最大字符长度(采用UNICODE编码,中文占3字节,字母数字占1字节),例如:NVARCHAR2(10)。

  注意一下CHAR(10)的平时使用中,如果输入的字符并没有达到设定的字节长度,那么系统会自动在末尾补充空格,从而导致在筛选的时候可能会导致问题(例如我输入“a”,但是系统会自动补全为“a        ”,当我使用“a”来进行筛选是就筛选不到)。因此常见CHAR的使用就是CHAR(1)。可变字符类型就不存上述问题,因此常见使用VARCHAR2。

二、NUMBER / INTEGER

  这两种类型表示的是常见数字类型。NUMBER(p,s)定义时p表示整数位数的长度(最大38),s表示小数位数长度。INTEGER等价为NUMBER(38,0),用来存储整数,若插入数据有小数则会被四舍五入。

三、DATA / TIMESTAMP

  以上表示日期的数据类型。DATA是最常见的数据类型,字符或者数字类型可以表示日期和时间信息,但是DATA日期数据类型具有特殊关联的属性,Orcale会储存世纪、年、月、日、时、分、秒的信息。TIMESTAMP类型必DATA类型更宽泛,它包含了小数秒的内容。默认的日期显示格式为DD-MM-YY。我们可以使用以下两个保留字来得到时间:

  • sysdate:返回当前系统日期和时间,精确到秒
  • systimestamp:返回当前系统日期和时间,精确到毫秒

  这里我们需要了解的是,Orcale数据库中只要是时间格式都是以同一格式储存,只不过显示格式不同而已,可以使用to_char(时间格式,,'format')将时间转化为字符串,使用to_data(字符串,'format')将字符串转化为内部时间储存格式。

四、CLOB / BLOB

  储存大内容的数据类型。CLOB采用二进制储存单字节和多字节字符数据,最大储存长度为4GB。BLOB也是采用二进制来储存非结构化的大对象,比如图片、声音、视频等,最大长度4GB。

  其实存储更大数据也可以使用LONG RAW类型,这个能储存2GB的原始二进制文件。

约束类型

一、主键约束

  被定为主键约束的列,不能有空值、并且值是唯一。如果在插入过程中插入了空值或者插入了已有的值,则会在插入时报错。(主键约束可以是多个列,这样就是需要所有列的值都一样才被认为是一样——笛卡尔积类型)。

二、唯一性约束

  唯一性约束的列,只需要保证该列值是唯一的,可以为空值。

三、外键约束

  需要建立两个表之间的关系,表A的a列添加了表B的b列外键约束,则表A的a列的所有值都需要是表B的b列的值。这里需要注意的是表B的b列一定要是表B的主键才行。但是表A的a列的数值是可以为空的,这就表示这条数据与表B那边的b列没有关系。

四、检查约束

  对某一列设定用户自己的检查策略,比如范围,类型,常使用在年龄、性别的约束上。

posted @ 2022-07-27 09:11  Circle_Wang  阅读(154)  评论(0编辑  收藏  举报