Oracle和Mysql的这些区别真叫人头大,你说啥时候这些区别才能消失呢?
唉,就简单地整理了一部分,如有不对的地方,还请各位大佬批评指正!
修改列结构
ALTER TABLE 表名 MODIFY 列名 varchar(20);
Oracle:
alter table student modify sno varchar(20);
Mysql:
alter table student modify sno varchar(20);
追加、删除主键
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY;
Oracle可直接删除约束,Mysql:drop primary key
Oracle:
alter table student add constraint stu_pk primary key (sno);
alter table student drop constraint stu_pk;
Mysql:
alter table student add constraint stu_pk primary key (sno);
alter table student drop primary key;
追加、删除外键
外键不一定是另一个表的主键,但必须是唯一性索引。主键约束和唯一性约束都是唯一性索引
Oracle:
alter table SC add constraint sc_fk foreign key (cno) references Course (cno);
alter table SC drop constraint sc_fk ;
Mysql:
其实fk并非外键约束名,有时可能恰巧是。
SHOW CREATE TABLE sc;可以查看到外键约束名
ALTER TABLE sc ADD CONSTRAINT fk FOREIGN KEY (sno) REFERENCES student(sno);
SHOW CREATE TABLE sc;
alter table sc drop foreign key fk;
追加、删除索引
CREATE UNIQUE INDEX 约束名 ON 表名(列名);
删除时Mysql需要加on
Oracle:
CREATE UNIQUE INDEX Stuname ON Student(Sname);
DROP INDEX Stuname;
Mysql:
CREATE UNIQUE INDEX Stusno ON Student(Sno);
DROP INDEX Stusno on student;
建立、删除CHECK约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(具体约束);
删除mysql得写check
Oracle:
alter table student add constraint c1 check(Sage>=0 and Sage<=100);
alter table student drop constraint c1;
Mysql:
alter table student add constraint c1 check(Sage>=0 and Sage<=100);
alter table student drop check c1;