Sybase復(fù)制表結(jié)構(gòu)和其他主流數(shù)據(jù)庫(kù)的區(qū)別
Sybase復(fù)制表結(jié)構(gòu)相信大家都比較熟悉了,下面就將對(duì)Sybase復(fù)制表結(jié)構(gòu)和其他數(shù)據(jù)庫(kù)系統(tǒng)的復(fù)制表結(jié)構(gòu)方法進(jìn)行比較,供您參考。
因?yàn)閿?shù)據(jù)庫(kù)SQL語(yǔ)句在各大產(chǎn)品中帶有“方言性”,即SQLSERVER SYBASE都是用了T-SQL,Mysql是用的標(biāo)準(zhǔn)SQL,Oracle有有自己的PL/SQL。由于這種“方言性”的差異導(dǎo)致很多SQL語(yǔ)句在移植的時(shí)候產(chǎn)生困難,在異構(gòu)數(shù)據(jù)庫(kù)的時(shí)候顯得很尷尬。當(dāng)然對(duì)于DBA來(lái)說(shuō),無(wú)非是查查語(yǔ)法而已的事。但是終究是不方便。這里就跟大家分享下我自己實(shí)驗(yàn)整理的,復(fù)制表結(jié)構(gòu)即數(shù)據(jù)的各數(shù)據(jù)庫(kù)中的語(yǔ)法分析。
先來(lái)說(shuō)說(shuō)SQLSERVER大家最熟悉的。
--當(dāng)數(shù)據(jù)庫(kù)中沒(méi)有新表的情況,比如有了A,沒(méi)有B表。
select * into B from A --復(fù)制表及數(shù)據(jù)
select * into B from A where 1>1 --只復(fù)制表結(jié)構(gòu)
--當(dāng)數(shù)據(jù)中已經(jīng)有了B表的情況,上面就不適用了。
insert into B select * from A --復(fù)制表數(shù)據(jù),為了避免。B表理論上應(yīng)該沒(méi)有數(shù)據(jù),如果有,可能會(huì)造成違反主鍵。
insert into B select * from A where id>10 --加上where條件可以指定復(fù)制數(shù)據(jù),上面沒(méi)有表的情況也可以這樣做。
這里要說(shuō)的是,sybase和SQLSERVER是一樣的。因?yàn)閺哪撤N角度來(lái)說(shuō),SYBASE就是SQL的原型。
接下來(lái)是Mysql。稍微語(yǔ)法有不同。
--數(shù)據(jù)庫(kù)中沒(méi)有B表的情況
create table B select * from A
create table B select * from A where 1<>1 --只復(fù)制表結(jié)構(gòu)
--有B表的情況和sqlserver基本相同
insert into B select * from A
oracle 基本上合MYSQL是一樣的,不過(guò)語(yǔ)法要求更嚴(yán)謹(jǐn)。當(dāng)然Mysql也可以這樣寫(xiě)。
--數(shù)據(jù)庫(kù)中沒(méi)有B表的情況
create table B as select * from A
create table B as select * from A where 1<>1 --只復(fù)制表結(jié)構(gòu)
create table B like A--復(fù)制表結(jié)構(gòu)
--有B表的情況基本相同
insert into B select * from A
這些都是較為初級(jí)的SQL語(yǔ)句,但是也比較適用,以后會(huì)分析一些其他的常用SQL語(yǔ)句。
【編輯推薦】
sybase分頁(yè)存儲(chǔ)過(guò)程的實(shí)現(xiàn)