暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

创建Oracle19c的数据表

全栈精英 2021-08-09
2481

常用的数据类型

数字类型

  1. number 类型

    即可以用于存储整数,也可以存储小数

    number 是一个可变长度的数据类型,并且始终保持四舍五入的原则

    number 可以指定两个参数 number(p,s):

    p表示有效位,从左边第一个非0的数字开始数,到结尾的长度,取值范围:1 ~ 38

    s表示小数位,取值范围:-84 ~ 127

    例如:

  • number(3)  相当于 number(3,0),取值范围为:-999~999

  • number(3,2) 只能存储:0.01 ~ 9.99 和 -0.01 ~ -9.99

  • number(3,3) 只能存储:0.001 ~ 0.999 和 -0.001 ~ -0.999

  • number(2,3) 只能存储:0.001 ~ 0.099 和 -0.001 ~ -0.099

  • number 可以表示的数值范围:-1.0e-130 ~ 1.0e+126,占用空间为1 ~ 22 个字节

   其它数字类型:都属于 number 类型的“变种”,而且使用 number 类型都能替代这些数据类型

类型描述存储描述
DECIMAL(P,S)数字类型P为有效位,S为小数
INTEGER整数类型小的整数
FLOAT浮点数类型NUMBER(38), 双精度
REAL实数类型NUMBER(63), 精度更高

字符类型

  1. CHAR

    用于存储固定长度的字符串,一个空间占用1个字节,最多存储2000个字节

    即:char(2000),这里的2000表示字节数。通常也就是1000个汉字,或者2000个字母、数字等

    注意:不足指定长度,便以空格的字节补齐

  2. NCHAR

    根据字符集而定的固定长度字符串。用于存储固定长度的字符串,一个空间占用2个字节,最多存储2000个字节

    即:nchar(1000),注意这里的1000表示字符数。为什么说是字符数呢?N表示是以 unicode 编码格式存储,无论中文或英文、数字都以一个字符(2个字节)来存储,这也是 CHAR 与 NCHAR 最大的区别

  3. VARCHAR2

    VARCHAR2 与 CHAR 类似,不同的是 VARCHAR2 用于存储可变长度的字符串

    最大长度是 CHAR 的两倍,也就是4000个字节,即:varchar2(4000) ,通常也就是2000个汉字,或者4000个字母、数字等

  4. NVARCHAR2

    根据字符集而定的可变长度字符串

    NVARCHAR2 与 NCHAR 类似,不同的是 NVARCHAR2 用于存储可变长度的字符串。最大长度是 NCHAR 的两倍,也就是4000个字节,即:nvarchar2(2000) ,通常也就是2000个汉字、字母、数字等

小结:四种字符类型比较:

类型变长一个空间占用字节数最大字节数(bytes)适用场景
CHAR12000、 char(2000)定长:英文、数字
NCHAR22000, nchar(1000)定长:中文
VARCHAR214000, varchar2(4000)变长:英文、数字、中文
NCARCHAR224000, ncarchar2(2000)变长:中文

注意:

对于中文,在这四种类型中存储,都是占2个或2个以上字节

对于英文或数字,在 CHAR 和 VARCHAR2 中占一个字节,在 NCHAR 和 NVARCHAR2 中占两个字节

char 的优势。当我们存储已知固定长度的数据时,比如:手机号(11位)、身份证号码(18位)等,可以考虑使用 char。因为,在查询数据时,对于 char 类型字段,是全字符整体匹配;而 varchar2 是一个字符一个字符的进行匹配。所以,从查询效率上,char 要比 varchar2 高

汉字占用几个字节,是根据 ORACLE 中字符集编码决定,一般情况,数据库的 NLS_CHARACTERSET 为 AL32UTF8 或 UTF8,一个汉字占三到四个字节;如果 NLS_CHARACTERSET 为 ZHS16GBK,则一个字符占两个字节

日期类型

  1. DATE

    date 用于存储日期和时间类型,date 类型的默认格式为:DD-MM-YYYY,当我插入熟悉的 YYYY-MM-DD 格式时,需要进行格式转换。

  2. TIMESTAMP

    时间戳类型,与 DATE 相比较,TIMESTAMP 类型具有小数位毫秒数,比 DATE 的精度更高

大数据与二进制类型

  1. LONG

    用于存储可变长度的超长字符串,最大长度为2G,通常用于存储备注字段,或者 varchar2 和 nvarchar2 不够存储时

  2. CLOB

    CLOB 是一种字符型大型对象(Character Large Object),最大长度为4G,存储与字符集相关

  3. NCLOB

    根据字符集而定的字符数据,最大长度为4G

  4. BLOB

    BLOG 是一种二进制大型对象(Binary Large Object),最大长度为4G,适用于存储非文本的字节流数据,如:视频、音频等。

    注意:由于视频、音频文件存储在数据库中会进行转码(压码、解码),所以通常并不会将这些数据存储在数据库中。但是存储在数据库中会比较安全。

  5. RAW

    固定长度的二进制数据,最大长度 2000个字节,可存储多媒体视频、音频格式等

  6. LONG RAW

    可变长度的二进制数据,最大长度2G,与 RAW 类似。

  7. BFILE

    存储在数据库之外的二进制数据,最大长度4G。

  8. ROWID

    行地址,十六进制串,表示行在所在的表中唯一的行地址,该数据类型主要用于返回ROWID伪列,常用在可以将表中的每一条记录都加以唯一标识的场合。数据表中记录的唯一行号,占10个字节

  9. NROWID

    二进制数据表中记录的唯一行号,最大长度4000个字节

表管理

建表格式:

     CREATE TABLE 表名称
    (
    列名称 数据类型 ,
    .….
    )

    修改表名格式: 

      RENAME 原表名称 TO 新表名称;

      添加字段格式:

         ALTER TABLE 表名称 ADD 新列名称 新列的数据类型;

        更改字段类型格式: 

          ALTER TABLE 表名称 MODIFY 列名称 新的数据类型;

          删除字段格式: 

            ALTER TABLE 表名称 DROP COLUMN 列名称;

            清空表数据格式: 

              TRUNCATE TABLE 表名称

              删除表格式: 

                DROP TABLE 表名称

                约束管理

                非空约束NOT  NULL格式:

                   -- 创建表设置非空约束
                  CREATE TABLE 表名称
                  (
                  列名称 数据类型 NOT NULL ....
                  );

                  -- 修改表设置非空约束
                  ALTER TABLE 表名称 MODIFY 列名称 数据类型 NOT NULL;
                  ALTER TABLE 表名称 MODIFY 列名称 数据类型 NULL;

                  主键约束PRIMARY KEY格式: 

                    -- 创建表设置主键
                    CREATE TABLE 表名称
                    (
                    列名称 数据类型 PRIMARY KEY,
                    ....
                    )
                    -- 修改表设置主键
                    ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 PRIMARY KEY(列名称1, ... );

                    外键约束FOREIGN KEY 格式:

                       -- 创建表设置外键
                      CREATE TABLE 表名称
                      (
                      列名称 数据类型 REFERENCES 主表名称 (主键列),

                      );
                      -- 修改表设置外键
                      ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 FOREIGNKEY(列名称) REFERENCES
                      主表名称(主键列) [ON DELETE CASCADE]

                      唯一约束UNIQUE格式:

                         -- 创建表设置唯一约束
                        CREATE TABLE 表名称
                        (
                        列名称 数据类型 UNIQUE,
                        ...
                        );
                        -- 修改表设置唯一约束
                        ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 UNIQUE(列名称)

                        检查约束CHECK格式:

                           -- 创建表设置检查约束
                          CREATE TABLE 表名称
                          (
                          列名称 数据类型 CHECK(表达式),
                          ...
                          );

                          -- 修改表设置检查约束
                          ALTER TABLE 表名称 ADD CONSTRAINT 约束名称 CHECK(表达式)



                          文章转载自全栈精英,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论