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);
複制