mysql和oracle建表语句以及数据类型的区别
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
参考:
https://blog.csdn.net/qq_27648991/article/details/80411566
mysql和oracle建表语句以及数据类型的区别的更多相关文章
- 抓取oracle建表语句及获取建表ddl语句
抓取oracle建表语句及获取建表ddl语句 1.抓取代码如下: 1.1.产生表的语法资料 DECLARE-- v_notPartTable VARCHAR2(1000):= '&2'; -- ...
- ORACLE 建表语句(表名及字段名大写)
ORACLE建表时如果表名或者字段名存在大小写同时存在的情况下,默认为区分大小写,此时在select/updata等操作时需要在表名或者字段名上添加双引号,否则会报"视图不存在"的 ...
- mysql建表语句和数据类型
1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] ) 必须的:字段名 数据类型 表名 可选的:长度 约束 ...
- [转载]oracle建表语句大全
原文URL:http://blog.csdn.net/haiross/article/details/11772847 Oracle创建表语句(Create table)语法详解及示例 创建表(C ...
- MySQL之完整建表语句及数据类型
1.创建表的完整语法 create table 表名( 字段名称 数据类型[(长度) 约束条件], 字段名称 数据类型[(长度) 约束条件] ) 必须的:字段名 数据类型 表名 可选的:长度 约束条件 ...
- mysql 批量导出建表语句 (视图,函数同理)
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;import ja ...
- 三种常用的MySQL建表语句(转)
MySQL建表语句是最基础的SQL语句之一,下面就为您介绍最常用的三种MySQL建表语句,如果您对MySQL建表语句方面感兴趣的话,不妨一看. 1.最简单的: CREATE TABLE t1( ...
- Python导出MySQL数据库中表的建表语句到文件
为了做数据对象的版本控制,需要将MySQL数据库中的表结构导出成文件进行版本化管理,试写了一下,可以完整导出数据库中的表结构信息 # -*- coding: utf-8 -*- import os i ...
- MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称
MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称 INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...
随机推荐
- mysql 基础sql语法总结(一)DDL
mysql数据库: SQL数据库语言可分为四部分: 1.DDL:对数据库或表的进行操作结构操作 2.DML:对表的记录进行更新(增.删.改)* 3.DQL:对表的内容进行查询 **(重难点) 4.DC ...
- JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片
代码如下: package com.futuredata.dataservice.util; import java.io.ByteArrayOutputStream; import java.io. ...
- HashMap的一些学习
1.equals和==的对比==用于比较引用和比较基本数据类型时具有不同的功能:A:比较基本数据类型,如果两个值相同,则结果为true而在比较引用时,如果引用指向内存中的同一对象,结果为true; e ...
- KMP(模板)
算法讲解: KMP算法最浅显易懂 模板来源: 从头到尾彻底理解KMP 首先:KMP的模板为: void get_next(char *a, int *nex) { nex[] = ; , j = ; ...
- ACM-ICPC 2018 徐州赛区网络预赛 Ryuji doesn't want to study
简单数学变换+线段树 简单数据结构签到题不解释 本来应该贴板子的,鉴于最近写代码太少了,而且由于要用两个线段树,平时板子都是一个的.以及板子在队友那.就当熟悉写代码,自己写了一下. #include ...
- 2019-08-23 纪中NOIP模拟A组
T1 [JZOJ2908] 矩阵乘法 题目描述 给你一个 N*N 的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第 K 小数. 数据范围 对于 $20\%$ 的数据,$N \leq 100$,$Q ...
- P5168 xtq玩魔塔 [克鲁斯卡尔重构树+带修莫队]
P5168 xtq玩魔塔 又是码农题- 利用克鲁斯卡尔重构树的性质 我们就可以得出 \(dep\) 值小的,肯定比 \(dep\) 大的值要优. 于是第二问就可以直接 LCA 求出来了- 至于第三问, ...
- MDK Debug (printf) Viewer打印数据
1.Target Options -> Debug -> Settings(JLink) -> Debug里ort选择SW模式 2.在Target Options -> Deb ...
- shell变量内字符替换和变量字符修改
vi test.sh a= #将${a}里的第一个123替换为321 b=${a//}; echo "echo variable a" echo $a echo "ech ...
- jmeter请求报错
jmeter发送json数据,报405.400错误解决方案: https://www.cnblogs.com/sunny-sl/p/8044284.html 405:Content-Type不对 40 ...