首页 > 数据库 >Oracle转为Mysql的数据结构差别

Oracle转为Mysql的数据结构差别

时间:2023-11-01 14:35:18浏览次数:40  
标签:NULL 20 DEFAULT TIMESTAMP Mysql 09 MySQL Oracle 数据结构

 Oracle的表空间相关函数

TABLESPACE "SYSTEM"
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1
  MAXEXTENTS 2147483645
  FREELISTS 1
  FREELIST GROUPS 1
  BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT

  oracle相关函数讲解

  1. TABLESPACE "SYSTEM": 这一行表示你正在创建一个名为"SYSTEM"的表空间。在Oracle数据库中,"SYSTEM"是默认的系统表空间,通常用于存储数据库的对象(如表,视图,索引等)。

  2. LOGGING: 这一行表示表空间将启用 logging。这意味着在表空间中进行的所有更改都将被记录到重做日志中,从而可以用于恢复操作。

  3. NOCOMPRESS: 这一行表示表空间将不会被压缩。在Oracle中,你可以使用表压缩来减少磁盘空间的使用。

  4. PCTFREE 10: 这一行表示表空间中的每个数据块将保留10%的空间不使用。这是为了在数据块中插入新数据时,有足够的空间来扩展数据块。

  5. INITRANS 1: 这一行表示在创建对象时,每个数据块的初始事务计数为1。事务计数用于跟踪当前在数据块上执行的事务数量。

  6. STORAGE ( ... ): 这一部分是关于表空间的存储参数。这些参数包括:

    • INITIAL 65536: 初始化表空间的大小为65536字节。
    • NEXT 1048576: 在表空间中分配下一个连续的数据段时,其大小为1048576字节。
    • MINEXTENTS 1: 数据段的最小扩展数为1。
    • MAXEXTENTS 2147483645: 数据段的最大扩展数为2147483645。
    • FREELISTS 1: 数据段上的自由列表数为1。
    • FREELIST GROUPS 1: 数据段上的自由列表组数为1。
    • BUFFER_POOL DEFAULT: 数据段将使用默认的缓冲池。
  7. PARALLEL 1: 这一行表示表空间可以用于并行查询。这可以提高查询性能,特别是在多处理器系统中。

  8. NOCACHE: 这一行表示表空间的数据不会被缓存。这意味着每次访问数据块时,都需要从磁盘读取数据块。

  9. DISABLE ROW MOVEMENT: 这一行表示在表空间中禁止行的移动操作。行的移动是在执行某些操作(如更新)时,Oracle将行的数据从原来的位置移动到新的位置的过程。禁用行移动可以提高性能,但也可能导致更频繁的磁盘I/O操作。

MySQL对应表空间

MySQL数据库管理系统的表空间是自动管理的,它不需要像Oracle那样显式地创建表空间。MySQL使用数据文件来存储表数据,这些数据文件可以自动扩展以适应数据增长。

 

oracle 建表语句 

CREATE TABLE "xxxxDBname"."TP_PRODUCT" (
  "ID" NUMBER(18,0) NOT NULL,
  "NAME" VARCHAR2(100 CHAR) DEFAULT '' NOT NULL,
  "CODE" VARCHAR2(20 BYTE) NOT NULL,
  "TP_CATEGORY_ID" NUMBER(18,0) NOT NULL,
  "STATUS" NUMBER(4,0) DEFAULT 0   ,
  "CREATE_BY" NUMBER(18,0) DEFAULT 0   ,
  "UPDATE_BY" NUMBER(18,0) DEFAULT 0   ,
  "CREATE_TIME" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP   ,
  "UPDATE_TIME" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP   ,
  "IS_PROCESSING" NUMBER(5,0) DEFAULT 0   ,
  "UNIT" VARCHAR2(20 CHAR) DEFAULT '',
  "EN_NAME" VARCHAR2(100 BYTE) DEFAULT '',
  "EN_UNIT" VARCHAR2(20 BYTE) DEFAULT ''
)
TABLESPACE "SYSTEM"
LOGGING
NOCOMPRESS
PCTFREE 10
INITRANS 1
STORAGE (
  INITIAL 65536 
  NEXT 1048576 
  MINEXTENTS 1
  MAXEXTENTS 2147483645
  FREELISTS 1
  FREELIST GROUPS 1
  BUFFER_POOL DEFAULT
)
PARALLEL 1
NOCACHE
DISABLE ROW MOVEMENT
; 

  

我需要把它转为mysql的

DROP TABLE `xxxxDBname`.`tp_product`;

CREATE TABLE `xxxxDBname`.`tp_product` (
`id` bigint(20) NOT NULL,
`tenant_id` varchar(200) DEFAULT '' NOT NULL,
`name` varchar(100) DEFAULT '' NOT NULL,
`code` varchar(20) NOT NULL,
`tp_category_id` bigint(20) NOT NULL,
`status` int(4) DEFAULT 0,
`create_by` bigint(20) DEFAULT 0,
`update_by` bigint(20) DEFAULT 0,
`create_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`update_time` timestamp DEFAULT CURRENT_TIMESTAMP,
`is_processing` int(5) DEFAULT 0,
`unit` varchar(20) DEFAULT '',
`en_name` varchar(100) DEFAULT '',
`en_unit` varchar(20) DEFAULT '',
PRIMARY KEY (`id`, `tenant_id`) -- 将id和tenant_id设置为复合主键
) ENGINE=InnoDB;

在MySQL中,您无需指定表空间、日志、压缩和存储参数,因为这些功能是由MySQL自动管理的。因此,我已经删除了与这些功能相关的语句。

此外,MySQL使用不同的数据类型和限制。我已经根据MySQL的规范对数据类型和限制进行了调整。请注意,MySQL没有 NUMBER 数据类型,而是使用 BIGINT 来存储较大的整数。同样地,MySQL没有 VARCHAR2 和 VARCHAR2 数据类型,而是使用 VARCHAR。对于字符串类型的长度,MySQL使用的是字符数而不是字节数。因此,我相应地调整了数据类型的定义。

如果您需要为表指定存储参数,可以在MySQL中使用 CREATE TABLE ... ENGINE=InnoDB [STORAGE参数] 的语法。但是,请注意,MySQL的存储参数与Oracle有所不同。因此,我已经删除了与存储参数相关的语句。

  

 oracle添加语句转为mysql添加语句 

oracle添加语句

INSERT INTO "xxx数据库"."xxx表名" VALUES ('292668615462760448', 'P40', 'SJ001', '292667756276363264', '0', '100000000000000027', '100000000000000004', TO_TIMESTAMP('2020-09-03 14:40:35.446000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), TO_TIMESTAMP('2020-09-20 10:04:49.968000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), '0', '件', 'P40', NULL);
INSERT INTO "xxx数据库"."xx表名" VALUES ('299540169802924032', 'M5(8.5吋)单晶方棒', 'SJ1', '1', '1', '100000000000000028', '100000000000000028', TO_TIMESTAMP('2020-09-22 13:45:41.670000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), TO_TIMESTAMP('2020-09-29 17:33:58.152000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), '0', 'MM', NULL, NULL);
INSERT INTO "xxx数据库"."xx表名" VALUES ('299540352380977152', 'FR(8.8吋)单晶方棒', 'SJ2', '1', '1', '100000000000000028', '100000000000000028', TO_TIMESTAMP('2020-09-22 13:46:25.198000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), TO_TIMESTAMP('2020-09-29 17:34:33.022000', 'SYYYY-MM-DD HH24:MI:SS:FF6'), '0', 'MM', NULL, NULL);

  mysql添加语句

INSERT INTO `xxx`.`xxx表名称` VALUES ('292668615462760448','ems_default', 'P40', 'SJ001', '292667756276363264', '0', '100000000000000027', '100000000000000004', STR_TO_DATE('2020-09-03 14:40:35.446', '%Y-%m-%d %H:%i:%s.%f'), STR_TO_DATE('2020-09-20 10:04:49.968', '%Y-%m-%d %H:%i:%s.%f'), '0', '件', 'P40', NULL);
INSERT INTO `xxx`.`xxx表名称` VALUES ('299540169802924032','ems_default1', 'M5(8.5吋)单晶方棒', 'SJ1', '1', '1', '100000000000000028', '100000000000000028', STR_TO_DATE('2020-09-22 13:45:41.67', '%Y-%m-%d %H:%i:%s.%f'), STR_TO_DATE('2020-09-29 17:33:58.152', '%Y-%m-%d %H:%i:%s.%f'), '0', 'MM', NULL, NULL);

  

增加注释的方式不同点:

 

 

 
COMMENT ON COLUMN "xxx"."TP_PRODUCT"."IS_PROCESSING" IS '是否加工品';   --oracle语句

ALTER TABLE `xxxx`.`tp_product`
CHANGE COLUMN `is_processing` `is_processing` INT COMMENT '是否加工品';  -------mysql语句

这里,我们使用CHANGE COLUMN子句更改了is_processing列的名称,并添加了注释'是否加工品'。

 

  


 

标签:NULL,20,DEFAULT,TIMESTAMP,Mysql,09,MySQL,Oracle,数据结构
From: https://www.cnblogs.com/luo6666888/p/17803045.html

相关文章

  • mysql安装步骤(windows版zip包)
    1.官网下载安装包https://cdn.mysql.com//Downloads/MySQL-8.2/mysql-8.2.0-winx64.zip2.在下载后的目录下找到Mysql压缩包并将其解压至自己创建的一个文件夹内(注意:目录名不可以是中文)3.my.ini内容如下,注意路径改成自己的,第5行basedir=、第7行datadir=[mysqld]#设置3306端口port......
  • MYSQL 高级
    MySQL高级转载自:https://www.cnblogs.com/keyongkang/archive/2023/10/11/17756694.html前言:本篇文章是本人学习MySQL高级的笔记。资料:《MySQL是怎样运行的》、《小林Coding-图解MySQL》、《MySQL45讲》、《尚硅谷康师傅MySQL视频》一、基础篇1.什么是关系型数据库?......
  • Java后台微信点餐小程序2023年最新版笔记Springboot+Mysql+Freemarker+Bootstrap
    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下第一章,技术选型(重要)在开始学习之前,要记得安装jdk8和mysql8,后面的笔记里也会具体讲解怎么安装,但是jdk8和mysql8必须和石头哥保持一致。1,后台技术选型:JDK8(必须保持一致)Mysql8(必......
  • mysql客户端---SQLyog
    0.查看所有的库SHOWDATABASES;1.设置客户端连接数据库的字符集SETNAMES'utf8';如果数据子的字符集是utf8,而客户端连接数据库的字符集是latin1,数据库中的中文就会出现乱码,类似?????2.查看当前库下的所有表showtables;SHOWFULLTABLESFROM`abc`WHEREtable_type='B......
  • linux 安装 mysql8
    安装查看版本查看状态......
  • mysql添加非 root 级别用户
    进入mysql容器内部dockerexec-itCOMMAND/bash输入密码登录MySQL回车输入密码passwordroot@94c490e7da78:/#mysql-pEnterpassword:添加数据库先使用root用户添加数据库:--进入sql服务后首先查看有哪些数据库showdatabases;--若没有新建一个CREATEDATABASEdatabas......
  • mysql数据库管理-FEDERATED存储引擎远程链接MYSQL
    开启FEDERATED存储引擎1.1、查看存储引擎存在的FEDERATED存储引擎就配置文件开启不存在就安装查看showengines;YES支持并开启DEFAULT支持并开启,并且为默认引擎;NO不支持;DISABLED支持,但未开启。创建federated引擎表创建语句最好和原表语句一样,当然去掉id的auto之类的。CREATE......
  • oracle 编码
    select*fromnls_database_parameters;select*fromnls_instance_parameters;select*fromnls_session_parameters;  ......
  • 将MySQL默认字符集改为utf8mb4
    将MySQL默认字符集改为utf8mb4查看当前默认字符集mysql>SHOWVARIABLESWHEREVariable_nameLIKE'character\_set\_%'ORVariable_nameLIKE'collation%';进入mysql配置文件;设置字符集为utf8mb4[client]default-character-set=utf8mb4[mysql]default-character-set=......
  • MySQL的create table as 与create table like区别
    一、区别对于mysql的复制相同表结构方法,有createtableas和createtablelike两种:createtablet2asselect*fromt1;as创建出来的t2表(新表)缺少t1表(源表)的索引信息,只有表结构相同,没有索引。createtablet2liket1;like创建出来的新表包含源表的完整表结构和索引......