一、Oracle 的数据类型
1、字符类型
固定长度类型(CHAR)和可变长度类型 (VARCHAR2 / NVARCHAR2)两种。
1)CHAR 类型
定长字符串,会用空格填充来达到其最大长度。非 NULL 的 CHAR(12) 总是包含 12 字节信息。CHAR 字段最多可以存储 2,000 字节的信息。
如果创建表时,不指定 CHAR 长度,则默认为 1。
2)VARCHAR2 类型
变长字符串,与 CHAR 类型不同,它不会使用空格填充至最大长度。VARCHAR2 最多可以存储 4,000 字节的信息。
3)NVARCHAR2 类型
以字符为单位的, 最多可以存储 4,000 字节的信息。
2、数字类型
1)NUMBER 类型
P 是 Precision 的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过 38 个有 效数字。 S 是 Scale 的英文缩写,表示小数点数字的位数。
2)INTEGER 类型
存储整数。若插入/更新的数值有小数,则会被四舍五入。
3、浮点数
1)BINARY_FLOAT 类型
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少 6 位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
2)BINARY_DOUBLE 类型
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。
4、日期类型
1)DATE 类型
常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用 字符 或 数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值, Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用 7 个字节的存储空间。
2)TIMESTAMP 类型
包含小数秒,带小数秒的 TIMESTAMP 在小数点右边最多可以保留 9 位。
3)TIMESTAMP WITH TIME ZONE 类型
包含了时区偏移量的值。
4)TIMESTAMP WITH LOCAL TIME ZONE 类型
以数据库时区进行规范化后进行存储。
5、LOB 类型
1)CLOB 类型(Character Large Object)
二进制数据,存储单字节和多字节字符数据。最大长度 4G。
2)BLOB 类型(Binary Large Object)
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般
是图像、声音、视频等文件。最大长度 4G。
3)NCLOB 数据类型
存储 UNICODE 类型的数据 ,和 NVARCHAR2 类似,最大长度 4G。
6、LONG & RAW & LONG RAW 类型
1)LONG 类型
它存储变长字符串(超长字符串),最多达 2G 的字符数据(2GB 是指 2 千兆字节, 而不是 2 千兆字符)。
2)LONG RAW 类型
能存储 2G 的原始二进制数据,可存放多媒体图象声音等。
3)RAW类型
存储的数据不会发生字符集转换。可存放多媒体图象声音等。
二、Oracle 创建表
1、Oracle 表名命名规则
1)必须以字母开头
2)长度不能超过 30 个字符
3)避免使用 Oracle 的关键字
4)只能使用 A-Z、a-z、0-9、_、#、$
2、使用带有特殊符号的表名
表名两侧添加双引号。但是不建议大家使用双引号定义表名,因为后期对表的操作会有所不方便。
三、数据库中的约束
1、约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
2、约束类型
1)主键约束(Primary Key Constraint)
唯一性,非空性。
2)唯一约束 (Unique Constraint)
唯一性,可以空,但只能有一个。
3)检查约束 (Check Constraint)
对该列数据的范围、格式的限制(如:年龄、性别等)。检查约束必须放到小括号中。
4)非空约束 (Not Null Constraint)
该列不允许包含空值。
5)外键约束 (Foreign Key Constraint)
需要建立两表间的关系并引用主表的列。
主键约束:
- 查询表的主键:(表名要大写,否则为空)
select
- 删除主键:
alter
- 加主键
alter
外键约束:
- 查询外键:(表名必须大写,否则为空)
select constraint_name "外键名", table_name "表名",R_constraint_name "参考约束名"
from user_constraints c
where c.constraint_type= 'R' and c.table_name='EMP2';
- 删除外键:
alter table emp2 drop constraint emp_dept_fk;
- 增加外键:
注意:
父表的列必须是主键,否则会报异常:
ORA-02270: no matching unique or primary key for this column-list)
方式一:
alter
方式二:
alter
检查约束:
- 查询表有哪些约束:
select constraint_name "约束名", table_name "表名",search_condition "约束条件"
from user_constraints c
where c.constraint_type= 'C' and c.table_name='EMP2';
- 删除检查约束:
alter table emp2 drop constraint CK_EMP2_EMPNO;
增加检查约束:
①建表时加check约束:
create
②已经有数据的情况下给表加check约束:
alter