一、 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;