Oracle学习(五)

10、Oracle中的数据类型

10.1字符类型

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

10.1.1CHAR类型

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。

10.1.2VARCHAR2类型

变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

10.1.3NVARCHAR2类型

这是一个包含UNICODE格式数据的变长字符串。NVARCHAR2最多可以存储4,000字节的信息。

10.2数字类型

10.2.1NUMBER类型

NUMBER(P,S)是最常见的数字类型。P是Precision的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字。S是Scale的英文缩写,表示小数点数字的位数。

10.2.2INTEGER类型

INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

10.3浮点数

10.3.1BINARY_FLOAT类型

BINARY_FLOAT是32位、单精度浮点数字数据类型。可以支持至少6位精度,每个BINARY_FLOAT的值需要5个字节,包括长度字节。

10.3.2BINARY_DOUBLE

BINARY_DOUBLE是为64位,双精度浮点数字数据类型。每个BINARY_DOUBLE的值需要9个字节,包括长度字节。

10.4日期类型

10.4.1DATE类型

DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle存储以下信息:世纪、年、月、日期、小时、分钟和秒。一般占用7个字节的存储空间。

10.4.2TIMESTAMP类型

这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位。

10.4.3TIMESTAMP WITH TIMEZONE类型

这是TIMESTAMP类型的变种,它包含了时区偏移量的值。

10.4.4TIMESTAMP WITH LOCAL TIMEZONE类型

将时间数据以数据库时区进行规范化后进行存储

10.5LOB类型

10.5.1CLOB类型(Character Large Object)

二进制数据,存储单字节和多字节字符数据。最大长度4G。

10.5.2BLOB类型(Binary Large Object)

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度4G。

10.5.3NCLOB数据类型

存储UNICODE类型的数据,最大长度4G。

10.6LONG&RAW&LONGRAW类型

10.6.1LONG类型

它存储变长字符串(超长字符串),最多达2G的字符数据(2GB是指2千兆字节,而不是2千兆字符)。

10.6.2LONGRAW类型

能存储2GB的原始二进制数据,可存放多媒体图象声音等。

10.6.3RAW类型

用于存储二进制或字符类型数据,必须制定长度。这种数据类型存储的数据不会发生字符集转换。可存放多媒体图象声音等。

11、Oracle表名命名规则

要求

  1. 必须以字母开头
  2. 长度不能超过30个字符
  3. 避免使用Oracle的关键字
  4. 只能使用A-Z、a-z、0-9、_#$

Oracle在创建表时,表名会自动转换大写。Oracle对表名大小写不敏感

如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双引号。(此时命名规则将不受限制,故较少使用)

12、Oracle数据库中的约束

12.1约束的作用

约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。

约束名称规则:“表名_约束类型缩写_列名”或“表名_约束类型缩写”

12.2约束类型

12.2.1主键约束(Primay Key Constraint)

唯一性,非空性。

12.2.2唯一约束(Unique Constraint)

唯一性,可以空,但只能有一个。

12.2.3检查约束(Check Constraint)

对该列数据的范围、格式的限制(如:年龄、性别等)。

12.2.4非空约束(Not Null Constraint)

该列不允许包含空值。

12.2.5外键约束(Foreign Key Constraint)

需要建立两表间的关系并引用主表的列。(外键允许有空值也允许重复)

其他说明:

13、Oracle数据库中表关系

设计关系数据库的一个重要部分是将数据元素划分为相关的表,我们可以根据数据本身的关联性,将不同表之间的数据聚合在一起。注意:无论在表与表之间建立了什么样的关系,决定数据之间是否有关系的不是表,而是数据本身。表与表之间一般存在三种关系,即一对一,一对多,多对多关系。

13.1一对多

一对多关系是建立在两张表之间的关系。一个表中的一条数据可以对应另一个表中的多条数据。

可以通过添加外键来实现两表之间的外键关系。

记住:外键永远在多方。外键允许重复,允许含有空值。

13.2一对一

一对一关系是建立在一对多的基础之上,外键可以在任何一方,需要让外键一方具备唯一约束外键+唯一键约束就能实现

13.3多对多

需要建立一个中间表,中间表里建立两个列,然后需要用这两个列作为这个表的联合主键,然后每个列在作为外键参照各自的表的主键。即在中间表中建立联合主键+表一外键约束+表二外键约束就能实现。

注意:

  1. 应该先创建两张表之后再创建两者的中间表,并且一般不存储业务数据
  2. 先在两张表中添加数据,再在中间表中添加数据
  3. 现在中间表中删除数据,再在两表中删除数据(先删除含有外键表的数据,一对多也是)

总结:

表关系 方法
一对多 通过添加外键来实现两表之间的外键关系。外键永远在多方。外键允许重复,允许含有空值。
一对一 外键可以在任何一方,需要让外键一方具备唯一约束外键+唯一键约束就能实现
多对多 建立中间表,在中间表中建立联合主键+表一外键约束+表二外键约束就能实现
posted @ 2022-05-26 22:32  白刃天使  阅读(80)  评论(0编辑  收藏  举报