Sql Server, Oracle, Sybase ve MySQL ipuçları
Son güncelleme 2 Eylül 2007 Pazar
Yeni bir uygulama için birden fazla veritabanı destekli kod geliştirmek ORM araçları ve Enterprise Library gibi kütüphaneler sayesinde çok kolay bir hale gelmiş olsa da, yenisini yazma imkanı olmayan eski uygulamaların desteğini sürdürmek de sürekli karşımıza çıkan bir problemdir.
Benzer işlerle uğraşan arkadaşlara faydası olabilecek birkaç ipucu:
- MySQL için depolama motoru olarak transaction destekli InnoDB iyi bir seçim olur, performansı için tıklayınız.
- Oracle'a \r (return karakteri = ascii 13) göndermemelisiniz, \n (satır sonu karakteri = ascii 10) ile replace edilebilir.
- Sybase'de Türkçe sistemlerde fonksiyon isimleri küçük harf olmalı, keywordlerin ise önemi yok.
- SQL Server'da
@@identity yerine SCOPE_IDENTITY() tercih edilmeli (mesela araya trigger girip insert yapsa @@identity triggerın son insert id'sini verir)
Doğal (native) veri erişim kütüphaneleri:
Sql Server |
SqlClient : .net framework ile geliyor |
Oracle |
OracleClient : Microsoft'un kütüphanesidir, .net framework ile geliyor
ODP.Net : Oracle'ın kütüphanesidir (ücretsiz), OracleClient'dan daha hızlı ve daha çok özelliğe sahip. |
Sybase ASE |
AseClient : Sybase'in kütüphanesidir (ücretsiz).
DataDirect Connect : ücretli |
MySql |
MySQL Connector/Net : MySQL AB'nin kütüphanesidir (ücretsiz)
MyDirect .NET : ücretli, performansı yüzünden düşünülebilir |
Bazı SQL farklılıkları;
|
String birleştirme işlemi:
Sql Server |
s1 + s2 |
Oracle |
s1 || s2 |
Sybase ASE |
s1 + s2 ve s1 || s2 |
MySql |
concat(s1, s2) |
Integer to string çevrimi:
Sql Server |
str(n) |
Oracle |
to_char(n) |
Sybase ASE |
str(n) |
MySql |
concat(n) |
Null ise n yapmak:
Sql Server |
isnull(n, v) |
Oracle |
nvl(n, v) |
Sybase ASE |
isnull(n, v) |
MySql |
ifnull(n, v) |
Insert'den sonra insert edilen sequence'i elde etmek:
Sql Server |
SELECT SCOPE_IDENTITY() |
Oracle |
SELECT SEQUENCE_ADI.CURRVAL FROM DUAL |
Sybase ASE |
SELECT @@IDENTITY |
MySql |
SELECT @@identity FROM TABLO |
|
|
Trim işlemi:
Sql Server |
ltrim(rtrim(s)) |
Oracle |
trim(s) |
Sybase ASE |
ltrim(rtrim(s)) |
MySql |
trim(s) |
Tablodaki bir kolonu silmek :
Sql Server |
ALTER TABLE T DROP COLUMN C |
Oracle |
ALTER TABLE T DROP COLUMN C |
Sybase ASE |
ALTER TABLE T DELETE C |
MySql |
ALTER TABLE T DROP COLUMN C |
Tablodaki bir kolonu değiştirmek:
Sql Server |
ALTER TABLE T ALTER COLUMN C TANIM |
Oracle |
ALTER TABLE T MODIFY C TANIM |
Sybase ASE |
ALTER TABLE T MODIFY C TANIM |
MySql |
ALTER TABLE T MODIFY C TANIM |
|
ArgeLab.net, bu sitenin
eksiksiz ve hatasız olduğu
konusunda bir garanti veremez. Bu sitede yer alan bilgilerin ve
programların kullanımı sonucu oluşabilecek zararlardan
sorumlu tutulamaz.