mysql建表与oracle_mysql和oracle建表语句以及数据类型的区别

mysql建表与oracle_mysql和oracle建表语句以及数据类型的区别1 mysql 和 oracle 建表语句的区别 mysqlDROPTAB order CREATETABLE order id int 11 NOTNULLAUTO INCREMENT number varchar 255 NOTNULLCOMME 工单编号 applicant varchar 255 NOTNULLCOMME

1、mysql和oracle建表语句的区别

mysql

DROP TABLE IF EXISTS `order`;

CREATE TABLE `order` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`number` varchar(255) NOT NULL COMMENT ‘工单编号’,

`applicant` varchar(255) NOT NULL COMMENT ‘工单申请人’,

`state` int(1) NOT NULL COMMENT ‘工单状态’,

`count` int(4) NOT NULL COMMENT ‘个数’,

`ctime` varchar(255) NOT NULL,

`depart` varchar(255) NOT NULL COMMENT ‘部门’,

`projectname` varchar(255) NOT NULL COMMENT ‘项目名称’,

PRIMARY KEY (`id`),

UNIQUE KEY `index_id` (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;

oracle

—创建表

create table ZHANGSAN.ORDER

(

id           NUMBER not null,

number    VARCHAR2(255),

applicant VARCHAR2(255),

state     NUMBER(1),

count     NUMBER(6),

ctime     VARCHAR2(30),

depart    VARCHAR2(255),

projectname  VARCHAR2(255)

)

—为每一行添加注释

comment on column ZHANGSAN.ORDER.number

is ‘工单编号’;

comment on column ZHANGSAN.ORDER.applicant

is ‘工单申请人’;

comment on column ZHANGSAN.ORDER.state

is ‘工单状态’;

comment on column ZHANGSAN.ORDER.count

is ‘个数’;

comment on column ZHANGSAN.ORDER.ctime

is ‘创建时间’;

comment on column ZHANGSAN.ORDER.depart

is ‘部门’;

comment on column ZHANGSAN.ORDER.projectname

is ‘项目名称’;

—指定主键

alter table ZHANGSAN.ORDER

add constraint ID primary key (ID)

using index

tablespace USERS

pctfree 10

initrans 2

maxtrans 255;

2、数据类型的区别:

mysql基本数据类型:

1)数值型:

da94b56c1c75677997634f5b27722575.png

优化建议:

建议使用 TINYINT 代替 ENUM、BITENUM、SET。

避免使用整数的显示宽度,也就是说,不要用INT(10)类似的方法指定字段显示宽度,直接用INT。

DECIMAL最适合保存准确度要求高,而且用于计算的数据,比如价格。但是在使用DECIMAL类型的时候,注意长度设置。

建议使用整形类型来运算和存储实数,方法是,实数乘以相应的倍数后再操作。

整数通常是最佳的数据类型,因为它速度快,并且能使用AUTO_INCREMENT

2)日期和时间型:

40f4a044cf44d381de717b5e0d003bab.png

优化建议:

MySQL能存储的最小时间粒度为秒。

建议用DATE数据类型来保存日期。MySQL中默认的日期格式是yyyy-mm-dd。

用MySQL的内建类型DATE、TIME、DATETIME来存储时间,而不是使用字符串。

当数据格式为TIMESTAMP和DATETIME时,可以用CURRENT_TIMESTAMP作为默认(MySQL5.6以后), MySQL会自动返回记录插入的确切时间。

TIMESTAMP是UTC时间戳,与时区相关。

DATETIME的存储格式是一个YYYYMMDD HH:MM:SS的整数,与时区无关

除非有特殊需求,否则建议使用TIMESTAMP,它比DATETIME更节约空间

3)字符串型:

8feeea51a72ffbcddb2c082f13ce82ef.png

优化建议:

字符串的长度相差较大用VARCHAR;字符串短,且所有值都接近一个长度用CHAR。

BINARY和VARBINARY存储的是二进制字符串,与字符集无关。

BLOB系列存储二进制字符串,与字符集无关。

TEXT是一个更大的VARCHAR。

BLOB和TEXT都不能有默认值。

Oracle的基本数据类型

1)字符串类型

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

所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。

所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间。

1.1:CHAR类型 CHAR(size [BYTE | CHAR])

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节,你可以查看数据库参数

NLS_LENGTH_SEMANTICS的值。

注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。

1.2: NCHAR类型

这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。另外查询时,如果字段是NCHAR类型,则需要如下书写

SELECT translated_description FROM product_descriptions

WHERE translated_name = N’LCD Monitor 11/PM’;

1.3 VARCHAR类型

不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。

1.4: VARCHAR2类型

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

1.5: NVARCHAR2类型

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

2)数字类型

2.1 NUMBER类型

NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

下面是官方文档的示例

12e8eeecbee643af5c83614ab938916d.png

2.2 INTEGER类型

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

Oracle 数据库提供了专为浮点数的两种数值数据类型:

2.3 浮点数

BINARY_FLOAT

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

BINARY_DOUBLE

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

在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

您可以指定列在表 2-4 范围内的浮点数。”数字文本”中定义了用于指定浮点数的格式。

Table 2-3 Floating Point Number Limits

20c633495e5bbc53f40de073d25f23e0.png

2.4 FLOAT类型

FLOAT类型也是NUMBER的子类型。

Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。

3)日期类型

日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

3.1 DATE类型

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

3.2 TIMESTAMP类型

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

3.3 TIMESTAMP WITH TIME ZONE类型

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

3.4 TIMESTAMP WITH LOCAL TIME ZONE类型

3.5 INTERVAL YEAR TO MOTH

3.6 INTERVAL DAY TO SECOND

参考:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227194.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午9:44
下一篇 2026年3月16日 下午9:44


相关推荐

  • windows server2016的docker启动iis镜像,并开启iis服务

    windows server2016的docker启动iis镜像,并开启iis服务由于 net 服务需要搭建在 iis 中 因此需要 iis 的镜像容器 然后再把自己的项目程序部署上去 废话不多说 首先 pull 微软的 iis 这个比较大 大约 4G 需要配置加速器 配置方法在我的前一遍文章介绍了 使用命令 dockerpullmi iis 接下来进行启动 iis 看到我们熟悉的 iis 欢迎界面 使用命令 dockerrun d p80 80micro

    2026年3月19日
    2
  • DeepSeek-OCR保姆级教程:Streamlit Session State管理多文档解析状态

    DeepSeek-OCR保姆级教程:Streamlit Session State管理多文档解析状态

    2026年3月14日
    2
  • php开发微信公众号步骤_微信公众平台php对接

    php开发微信公众号步骤_微信公众平台php对接1.SAE数据库的连接。需要主机名和端口,以后的使用是一样的。@$db=newmysqli(SAE_MYSQL_HOST_M.’:’.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,’你的应用名’);2.XML的处理。微信发送的消息格式都是XML格式,你返回的消息也必须是XML格式。从XML里提取数据,用SimpleXML,强大…

    2022年8月21日
    10
  • ELF文件详解—初步认识

    ELF文件详解—初步认识讲解 ELF 文件格式 目标文件再不同的系统或平台上具有不同的命名格式 在 Unix 和 X86 64Linux 上称为 ELF Executablean ELF ELF 文件格式提供了两种不同的视角 在汇编器和链接器看来 ELF 文件是由 SectionHeade 描述的一系列 Section 的集合 而执行一个 ELF 文件时 在加载器 Loader 看来它是由 ProgramHeade 描述的一系列 Segment 的集合

    2026年3月26日
    1
  • Windows系统下DeepSeek API调用全攻略

    Windows系统下DeepSeek API调用全攻略

    2026年3月15日
    3
  • 浦发银行 信息科技岗 大数据方向 面经

    浦发银行 信息科技岗 大数据方向 面经浦发银行总行信息科技部(大数据方向)面试浦发银行总行信息科技部(大数据方向)面试8.6面试大家的面经浦发银行总行(上海)大数据岗8月6号面经一、综合面二、机试三、专业面试浦发面经即兴演讲上机测试结构化面试浦发银行大数据创新岗上海打卡第一部分综合面试第二部分专业面试第三部分上机考试(只有开发和测试岗需要,别的岗可选)浦发总行信息岗校招面经(上海…

    2022年5月5日
    165

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号