首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 与 MySQL 的差异分析(3):创建表和索引

Oracle 与 MySQL 的差异分析(3):创建表和索引

作者头像
一头小山猪
发布2020-04-10 16:18:49
1.2K0
发布2020-04-10 16:18:49
举报
文章被收录于专栏:微光点亮星辰微光点亮星辰

Oracle 与 MySQL 的差异分析(3):创建表和索引

1.1 命名

l Oracle:

表名、字段名、索引名等,不能超过30个字符。

l MySQL:

数据库、表名、列名,不能超过64个字符。

注意:MySQL 是大小写敏感的,所以一般都用小写。

1.2 主键和自增长列

MySQL 的主键和 Oracle 差不多,都是对应一个唯一索引并且索引列是非空的。

create table t_test1(abc intprimary key);

不过,MySQL 可以设置一个自增长列作为主键,而在Oracle 中一般用序列实现自增长列,序列和表之间没有一一对应关系。

create table t_test2(idint primary key auto_increment, username varchar(100));

insert 时,如果不指定 id 或者 id 为 0 时,id 会自动加 1;如果指定一个较大的 id,那么下次会从这个 id 继续增长。

1.3 索引

整个数据库中,MySQL 的索引是可以重名的,MySQL 索引是表级别的,但是 Oracle 索引是不可以重名的,它的索引是数据库级别的。

由于 MySQL 索引的命名是表级别的,所以删除索引时也要指定表名。

create index ix_username ont_test3(username);

drop index ix_username ont_test3;

最常用的 B+ 树索引,在 MySQL 中的特性 Oracle 是差不多的。

1.4 分区

从 5.1 版本开始,MySQL 支持分区表,与 Oracle 类似,支持 RANGE、LIST、HASH 区分,同时还支持二级分区。MySQL 分区表上创建的索引是本地索引,不支持全局索引,创建索引不需要 load 关键字。在分区表上一般不创建主键或唯一索引,如果要创建的话,需要包含分区列。

CREATE TABLE employees (
   id INT NOT NULL,
   fname VARCHAR(30),
   job_code INT NOT NULL,
   store_id INT NOT NULL
)
partition BY RANGE (store_id) (
   partition p0 VALUES LESS THAN(6),
   partition p1 VALUES LESS THAN(11),
   partition p2 VALUES LESS THAN(16),
   partition p3 VALUES LESS THAN(21),
);
create index ix_employees onemployees(frame);
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档