Change Font Size

Change Screens

Change Profile

Change Layouts

Change Direction

Change Menu Styles

Cpanel
Perşembe, 24 Haziran 2010 15:33

Primary keyi olmayan tablolarda kayıtlar üzerinde işlem yapmak

Yazan&Gönderen  Yusuf Arslan
Bu Öğeyi Derecelendir
(0 Oylar)

Veritabanı modellemesinde primary keyler vazgeçilmez unsurlardır. Primary keyler kayıtlara kolay erişimi sağladıkları gibi, aynı zamanda normalizasyona yardım ederler. Buna karşın bazen primary keyi olmayan tablolarla karşılaşabilirsiniz. Bu tablolar genelde yazılımda sabit değerleri tutmak için kullanılırlar. Böyle tablolarda kayıtlar üzerinde nasıl değişiklik yapabiliriz bunu inceleyelim:

Öncelikle bir tablo oluşturup, içine rastgele değerler girelim:


SQL> CREATE TABLE deneme ( isim VARCHAR2(30) );
SQL> INSERT INTO deneme VALUES( ‘GOKHAN’ );
SQL> INSERT INTO deneme VALUES( ‘TOM’ );
SQL> INSERT INTO deneme VALUES( ‘GOKHAN’ );
SQL> INSERT INTO deneme VALUES( ‘MIKE’ );
SQL> COMMIT;

Şimdi diyelim ki ikinci girilen GOKHAN kaydını silmek istiyoruz. Bu durumda tablomuzdaki 3. kayıda nasıl ulaşabiliriz? Bunun için ROWID pseudo kolonu kullanacağız.

SQL> SELECT ROWID, isim FROM deneme;
ROWID ISIM
—————— ———-
AAANFkAABAAAO9iAAA GOKHAN
AAANFkAABAAAO9iAAB TOM
AAANFkAABAAAO9iAAC GOKHAN
AAANFkAABAAAO9iAAD MIKE


SQL> DELETE FROM deneme
WHERE ROWID = ‘AAANFkAABAAAO9iAAC’;

ROWID, kayıtların tablodaki fiziksel sırasını gösteren pseudo (sanal) bir kolondur. Genel olarak bu tip tablolarda, tabloyu oluşturan alanlar zaten UNIQUE değerlerden oluşacaktır ve silinen kaydın tabloda fiziksel olarak kaçıncı kayıt olduğuda önemi genelde yoktur. Sadece yenilen kayıtları teke indirmek yeterli olacaktır. Bu sağlandıktan sonra gerekli değişiklikler ROWID kullanılmadan da yapılabilir. Bu yüzden ROWID’in gereksiz olduğunu düşünebilirsiniz ama tekrarlanan kayıtları silmek için de ROWID’i çok kullanışlı olabilir. Örnek verilen tabloda eğer tekrarlanan kayıtları silmek istersek şu SQL’i kullanabiliriz:
SQL> DELETE FROM deneme WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM deneme GROUP BY isim);

Son Düzenleme Cuma, 10 Aralık 2010 12:32
Yusuf Arslan

Yusuf Arslan

Oracle Open Source

1985 Tokat/Reşadiye doğumluyum.İlk-orta-lise hayatını Amasya/Suluova ilçesinde geçirdim.Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerime Oracle,SAP alanlarında danışmanlık vermek üzere devam etmekteyim. Kullandığım,bildiğim teknolojiler ve diller; SAP BO Oracle BI Applications Oracle Data Mining Oracle BI Reports(http://www.iski.gov.tr/web/statik.aspx?KID=1000717) Oracle Data Integrator Oracle BI Publisher(XML Publisher) Oracle Database 10g Oracle Mapviewer PL/SQL,Java,Oracle JDeveloper,Oracle Forms-Reports,C# Data warehouse process optimization Database system implementation Using encoding for security systems Software development, test and deployment Presentation and communication skills Bu adreslerden de bana ulaşabilirsiniz, [email protected] https://datawarehouse.gen.tr/ http://www.arslanyusuf.blogspot.com/ http://yusufarslaneng.blogspot.com/ http://twitter.com/yusars http://tr.linkedin.com/pub/yusuf-arslan/27/35b/57b

Website: arslanyusuf.blogspot.com/ E-posta: Bu e-Posta adresi istek dışı postalardan korunmaktadır, görüntülüyebilmek için JavaScript etkinleştirilmelidir

Yorum yaz

Make sure you enter the (*) required information where indicated.
Basic HTML code is allowed.

You are here Kategoriler ORACLE Primary keyi olmayan tablolarda kayıtlar üzerinde işlem yapmak