1.1 Oracle数据类型
1、字符类型
字符串数据类型还可以依据存储空间分为固定长度类型(CHAR) 和可变长度类型
( VARCHAR2 、NVARCHAR2)两种。
(1) CHAR类型
CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)
总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。
在Oracle中,一个中文字符占3个字节;一个英文字符或数字占一个字节。
例如:char(3) 男、abc、123、a11
当存一个a时会自动补充两个空格
(2) VARCHAR2类型
VARCHAR2变长字符串,Oracle中特有,和mysql中的varchar一样,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4000字节的信息。
在Oracle中,一个中文字符占3个字节;一个英文字符或数字占一个字节。
例如:varchar2(6) 张三、123456、abcdef
当存“张”时,相当于长度变成了3
(3)NVARCHAR2类型
NVARCHAR2变长字符串,这是一个包含UNICODE格式数据的变长字符串。NVARCHAR2 最多可以存储4000字节的信息。
在Oracle中UNICODE格式数据一个字符占一个字节,中英文都一样
例如:NVARCHAR2(3) 云南人、123、abc、a45
当存“云”时长度相当于变成了1
2、数字类型
(1)NUMBER类型
NUMBER(P,S)是最常见的数字类型。
P是Precision的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字。
S是Scale的英文缩写,表示小数点数字的位数。
例如:NUMBER(3)表示三位整数 123 001
NUMBER(3,1)表示有效数字三位,小数一位 21.1 35.9 42.0
(2)INTEGER类型
INTEGER是NUMBER的子类型,它等同于NUMBER (38,0) ,用来存储整数。若插
入、更新的数值有小数,则会被四舍五入。
3、浮点数.
(1)BINARY_ FLOAT类型
BINARY_ _FL0AT是32位、单精度浮点数字数据类型。可以支持至少6位精度每个
BINARY_ FLOAT的值需要5个字节,包括长度字节。
(2)BINARY DOUBLE
BINARY_ DOUBLE是为64位,双精度浮点数字数据类型。每个BINARY_ DOUBLE
的值需要9个字节,包括长度字节。
4、日期类型
(1)DATE类型
DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。存储以下信息:世纪、年、月、日期、 小时、分钟和秒。 一般占用7个字节的存储空间。
例如:2023/02/01 11:32:56
(2)TIMESTAMP类型
这是一个7字节或12字节的定宽日期时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒(毫秒),带小数秒的TIMESTAMP在小数点右边最多可以保留9位。
(3)TIMESTAMP WITH TIME ZONE类型
这是TIMESTAMP类型的变种,它包含了时区偏移量的值。
(4)TIMESTAMP WITH LOCAL TIME ZONE类型
将时间数据以数据库时区进行规范化后进行存储
5、 L0B类型
(1)CLOB类型(Character Large Object)
二进制数据,存储单字节和多字节字符数据。最大长度4G。
(2)BLOB类型(Binary Large Object)
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。最大长度4G。
(3)NCLOB数据类型
存储UNICODE类型的数据,最大长度4G。
6 、LONG & RAW & LONG RAW类型
(1)LONG类型
它存储变长字符串(超长字符串),最多达2G的字符数据(2GB是指2千兆字节,而不是2千兆字符)。
(2)LONG RAW类型
能存储2GB的原始二进制数据,可存放多媒体图象声音等。
(3)RAW类型
用于存储二进制或字符类型数据 ,必须制定长度 。这种数据类型存储的数据不会发生字符集转换。可存放多媒体图象声音等。
1.2 Oracle中创建表
1、Oracle表名命名规则
(1)必须以字母开头
(2)长度不能超过30个字符
(3)避免使用Oracle的关键字
(4)只能使用A-Z、a-Z、0-9、_#$
2、使用带有特殊符号的表名
Oracle在创建表时,表名会自动转换大写。Oracle 对表名大小写不敏感。
如果在定义表名时含有特殊符号,或者用小写字母来定义表名则需要在表名两侧添加双
引号。
3、在SQL Developer中图形化创建表的步骤
打开SQL Developer,使用已有用户登录,切换到My Object
在Tables上右键——NEW之后可以看到右边的内容,可以设置相应的用户,表名,表空间等
选项Columns上设置列的信息,Nullable项勾起来表示该列允许为空值
选项Keys可以设置相应的键
后面还可以设置用户自定义约束、索引、权限、触发器等等
在表上右键可以修改表结构和添加数据
Edit是修改表结构、Edit data是编辑数据,Query data是查看数据
4、在SQL Developer中使用SQL语句创建表
和mysql中创建表一样:
Create table 表名( 字段名 数据类型(长度) 约束, 字段名 数据类型(长度) 约束 ); |
Create table users( Id number(10) primary key, Name varchar2(20) not null ); |
1.3 数据库中的约束
1、约束的作用
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
2、约束类型
- 主键约束(Primay Key Constraint)
唯一性,非空性。
- 唯一约束(Unique Constraint )
唯一性,可以空,但只能有一个。
- 检查约束【用户自定义约束】( Check Constraint)
对该列数据的范围、格式的限制(如:年龄、性别等)。
- 非空约束(Not Null Constraint )
该列不允许包含空值。
- 外键约束(Foreign Key Constraint)
需要建立两表间的关系并引用主表的列。
3、SQL创建约束
- 主键约束:可在建表时创建
alter table 表名 add constraint 主键名 primary key(主键字段名);
- 外键约束:
alter table 表名 add constraint 外键名 foreign key(外键字段名) references 参考表名(参考主键字段名);
- 唯一约束:
alter table 表名 add constraint 唯一约束名 unique( 约束字段名);
- 默认约束:可在建表时创建
alter table 表名 Modify 字段名 数据类型(长度) default('值’);
- 检查约束:
alter table 表名 add constraint 检查约束名 check(约束条件);
- 添加注释:
表注释:comment on table 表名 is ‘注释名’;
列注释:comment on column 表名.列名 is ‘注释名’;