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)数值型:

优化建议:

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

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

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

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

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

2)日期和时间型:

优化建议:

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)字符串型:

优化建议:

字符串的长度相差较大用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为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

下面是官方文档的示例

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

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

参考:

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

  1. mysql建表语句_MySQL之完整建表语句及数据类型

    1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] ) 必须的:字段名 数据类型 表名 可选的:长度 约束条件 ...

  2. oracle建表6大约束,oracle 建表 约束 constraint

    约束命名规则 如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定, 推荐的约束命名是:约束类型_表名_列名. NN:NOT NULL           ...

  3. oracle建表唯一约束语句,Oracle建表语句是什么

    Oracle建表语句是什么 oracle数据库的建表语句,具体语法如下:CREATE TABLE tablename( column_name datatype [null,not null], co ...

  4. 数据库建表原则,SQL数据库建表前期优化,SQL数据库操作优化,数据库命名规范...

    2019独角兽企业重金招聘Python工程师标准>>> 关键字: 数据库建表原则 ·1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...

  5. mysql 设置表的大小_mysql InnoDB建表时设定初始大小的方法

    InnoDB在写密集的压力时,由于B-Tree扩展,因而也会带来数据文件的扩展,然而,InnoDB数据文件扩展需要使用mutex保护数据文件,这就会导致波动. 丁奇的博客说明了这个问题: When I ...

  6. mysql 建表_别再胡乱建表了,看看阿里P8总结的mysql建表规约吧

    (一) 建表规约 [强制]表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1表示是,0表示否). 说明:任何字段如果为非负数,必须是 uns ...

  7. gcc操作mysql 建表_用gcc批量建mysql库表

    用gcc批量建mysql库表 2007-6-1文字大小:大中小 file 1 my.c //------------------------------------------------------ ...

  8. oracle给表赋清空权限,oracle建表赋权限

    oracle建表赋权限 --创建表空间 create tablespace ya logging datafile 'D:\Oracle\product\10.2.0\oradata\oracle\y ...

  9. mysql创建表的默认大小_mysql InnoDB建表时设定初始大小的方法

    InnoDB在写密集的压力时,由于B-Tree扩展,因而也会带来数据文件的扩展,然而,InnoDB数据文件扩展需要使用mutex保护数据文件,这就会导致波动. 丁奇的博客说明了这个问题: When I ...

  10. mysql数据库建表关键字_关于数据库建表时的有趣实例--关键字重复

    今天 使用CMD连接mysql进行简单的数据库的建表操作.信心满满的写了如下的代码: 然后就爆了个大大的错误 .简直有点莫名其妙的感觉,我是按照昨天学习的步骤写的代码,为什么会出错? 初步开始怀疑: ...

最新文章

  1. Mysql---Centos7软件安装
  2. Material Master
  3. 密钥方式登录linux,Linux的密钥对的方式登录方式
  4. java for循环遍历解释,三种for循环遍历
  5. 回顾---对教师提出的5个问题的回答及个人感悟
  6. 判断当前是什么版本浏览器
  7. Android的数据库(SQLite)学习
  8. java language specification Java SE 8 Edition 中文版(第一章)
  9. 《计算机网络(第7版)》-谢希仁
  10. Valgrind User Manual
  11. IOT | 物联网入门
  12. springboot实现语言切换
  13. AutoJS4.1.0实战教程---一键签到
  14. MySQL over函数的用法
  15. 华为ENSP进行evn实验,尚不完整,但已经有RT1、RT2、RT3、RT4了
  16. 放回不等概率抽样-PPS抽样
  17. signingConfigs
  18. uoj311 【UNR #2】积劳成疾
  19. Python一行代码搞定炫酷可视化,Cufflinks值得拥有 !
  20. 转:网络模拟利器NEWT的前世今生

热门文章

  1. 玩转 SSH(六):SpringMVC + MyBatis 架构搭建(注解版)
  2. flash 实例教程
  3. 利用C语言读取WAV文件
  4. python selenium下载窗口 ie_用Python+selenium打开IE浏览器和Chrome浏览器的问题
  5. 影楼修片走下神坛 PS磨皮技巧大揭秘
  6. 关于小凡模拟器设置完后找不到所要配置文件的问题
  7. 【think server rd340安装windows server 2008 R2 同时安装RAID驱动程序】
  8. 解决Windows无法加载中文(中国)-王码五笔输入法 86版 键盘的布局的方法
  9. [Windows] 蜂巢收纳盒 V2.0.4---桌面分类整理
  10. 电子邮件归档市场现状分析