Oracle、MySQL常見表結構變更語句對比

chenoracle發表於2023-01-02

測試資料

SQL> conn cjc/******
SQL> create table t1(id int,name varchar2(10));
/*
mysql:create table t1(id int,name char(10));
*/
SQL> insert into t1 values(1,'cjc');
SQL> commit;

新增列

Oracle語法:

alter table t1 add (col1 char(10),col2 number(2));

MySQL語法:

alter table t1 add (col1 char(10),col2 int);
alter table t1 add column (col1 char(10),col2 int);

新增列、預設值、非空

alter table t1 add(col3 int default 5 not null);

修改列型別

Oracle語法:

alter table t1 modify(col1 char(15));

MySQL語法:

alter table t1 modify col1 char(15);

Oracle語法:

修改列型別、預設值

alter table t1 modify(col2 number(3) default 10);

MySQL語法:

alter table t1 modify col2 int default 10;

新增約束

新增檢查約束

Oracle、MySQL語法

ALTER TABLE t1 ADD CONSTRAINT chk_t1_col3 CHECK (col3 >=3);

新增主鍵約束

alter table t1 add constraint pk_t1_id primary key(id);

新增外來鍵約束

---create table t2 as select * from t1;
---alter table t2 add constraint pk_t2_id primary key(id);
alter table t1 add constraint fk_t1_id foreign key(id) references t2(id);

查詢約束

Oracle語法:

SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME='T1';

MySQL語法:

show create table t1\G;
select CONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_SCHEMA='cjc';

重新命名列

Oracle語法:

ALTER TABLE t1 RENAME COLUMN col3 TO col5;

MySQL語法:

alter table t1 change col3 col5 int;

新增備註

Oracle語法:

新增表備註

COMMENT ON TABLE t1 is 'The Test table t1';

新增列備註

comment on column t1.id is 'The table t1 column id';

MySQL語法:

新增表備註

ALTER TABLE t1 COMMENT='The Test table t1';

新增列備註

ALTER table t1 MODIFY id int COMMENT 'The table t1 column id';

查詢備註

Oracle語法:

select * from user_tab_comments where table_name='T1';

查詢列備註

select * from user_col_comments where table_name='T1';

MySQL語法:

show create table t1\G;
SHOW FULL COLUMNS  FROM t1;

列備註

SHOW FULL COLUMNS FROM t1;


###chenjuchao 20230102 17:30###

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2930456/,如需轉載,請註明出處,否則將追究法律責任。

相關文章