oracle to mysql

一、 Mysql表创建

MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

数字类型

整数: tinyint、smallint、mediumint、int、bigint

浮点数: float、double、real、decimal

日期和时间: date、time、datetime、timestamp、year

字符串类型

字符串: char、varchar

文本: tinytext、text、mediumtext、longtext

二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

 

Mysql中与Oracle对应的数据类型

Oracle                        

Mysql

number(<11)

int

number(>11)

bigint

varchar     

varchar

varchar2(<255)

varchar

varchar2(>255)

text

clob

text全是文本的的使用

blob二进制的使用

date

date

date_format(date,'%Y-%m-%d')   -------------->oracle中的to_char();

str_to_date(date,'%Y-%m-%d')    -------------->oracle中的to_date();

%Y/%m/%d %H:%i:%s

1、建表

Create datebase 数据库名character set utf8;

Create table 表名(

数据名, 数据类型

);

或者使用图像界面ide创建

注意:如果出现创建错误可能由于bin-log开启

二、 Mysql序列创建

Mysql没有sequence性质,如果可以设主键是int类型的话可以使用auto_increment达到效果

若是使用其他的数据类型则需要用其他方式

创建sequence序列在mysql下实现

1、创建一个表用来保存seq数据的

droptableifexists sequence;

createtablesequence(

seq_name      VARCHAR(50) NOTNULL, # 序列名称

current_val   INT         NOTNULL, #当前值

increment_val INT         NOTNULL    DEFAULT1, #步长(跨度)

max_val      INT       not null default 65534,

PRIMARYKEY(seq_name)

);

2实现currval

createfunctioncurrval(v_seq_name VARCHAR(50)) 

returnsinteger 

begin 

   declarevalue integer; 

   setvalue = 0; 

   selectcurrent_val intovalue 

   fromsequence 

   whereseq_name = v_seq_name; 

   returnvalue; 

end;

3实现nextval

createfunctionnextval(v_seq_name VARCHAR(50)) 

returnsinteger 

begin 

  updatesequence 

  set    current_val = current_val +increment_val 

  where  seq_name= v_seq_name; 

  returncurrval(v_seq_name); 

end;

4、设置增加量

createfunctionset_increase_val(v_seq_nameVARCHAR(50), v_new_val INTEGER) 

returnsinteger 

begin 

  updatesequence 

  set    increment_val = v_new_val 

  whereseq_name = v_seq_name

returncurrval(seq_name);

end;

5、设置最大增加量(因为使用的表格数据类型为int如果数据过大请更改表数据类型)

create function set_max_val(v_seq_nameVARCHAR(50), v_new_val INTEGER)

returnsinteger 

begin 

  updatesequence 

  set    max_val = v_new_val 

  whereseq_name = v_seq_name; 

returncurrval(seq_name);

end;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值