| Editor Login | Register | ||
| > Akademik İnternet ® > SQL SERVER |
|
|
| SQL Programlama ( Geniş Anlatım 3 ) | |||||||||||||||||||||||||||||||||||||||||||||
|
Otomatik Numara Üretimi(Sequence)
Yaptığı iş unique sayılar üretmektir. Belli oranlarda arttırmalar yapılmakta kullanılır. Her çağrıldığında yeni bir sayı üretir. Extra bir hesaplama yapılmadan, seri olarak tanımlandığı şekilde rakamlar üretir. Sayıları cacheden okuduğu için çok hızlı sonuç üretir. Yazılımı; CREATE SEQUENCE kolon [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE]
INCREMENT BY n à Sayının artış miktarı belirtilir. Varsayılan değer 1’dir. Birer birer sayı arttırılır. START WITH n à Numaranın üretileceği başlangıç numarasıdır. Varsayılan değer 1’dir. MAXVALUE n à Numaranın alabileceği maksimum rakam yazılır. NOMAXVALUE ile bitiş numarası verilmez. Max = 1027 MINVALUE n à Numaranın alabileceği minimum rakam yazılır. NOMINVALUE ile başlangıç numarası verilmez. Min = 1 CYCLE | NOCYCLE à Maxvalue değeri kadar işlem yapıldıktan sonra işlemi tekrardan başlatır.Varsayılan değer NOCYCLE’dır. CACHE à Cache sayısı kadar sayıyı hafızaya gönderir. Varsayılan değer NOCACHE=20’dir.
Örnek: Personel departmanının pers_id kolonunu 10’dan 50’ye kadar 2’şer 2’şer arttıralım; CREATE SEQUENCE pers_id INCREMENT BY 2 START WITH 10 MAXVALUE 50 NOCYCLE NOCACHE
Örnek: Personel departmanının pers_id kolonunu birer birer arttıralım; CREATE SEQUENCE pers_id INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE
USER_SEQUENCES : Sequences’in en son durumu gösterir. Yazılımı; SELECT sequence_name, min_value, max_value, increment by, last_number FROM user_ sequences
Sequence_name à İşlemlerin tanımlandığı isimdir. Min_value à Sayının aldığı min değerdir. Max_value à Sayının aldığı max değerdir. Increment_by à Sayının aldığı artış miktarının gösterir. Cycle_flag à İşlemin tekrar yapılması isteniyorsa Y, istenmiyorsa N değerini alır. Cache_size à Hazıfazadaki cache sayısıdır. Last_number à Numaranın alacağı değerdir
NEXTVAL : En son aldığı sayının bir sonra alacağı değeri gösterir.
Örnek: Personel tablosuna pers_id kolonuna otomatik değerler tayarak kayıt edelim; INSERT INTO personel VALUES (pers_id.NEXTVAL,’Kazım’,’Sarıkaya’)
CURRVAL : O anki sayısal değeri gösterir. Eğer hiç nextval fonksiyonu kullanılmamışsa değeri boş değer gelir.
Örnek: pers_id kolonunun o anki alacağı değeri seçelim; SELECT pers_id.CURRVAL FROM DUAL
ALTER_SEQUENCE : Değişiklik bir yerden başlanacaksa önce drop edilir, sequence işlemini değiştirir. Yazılımı; ALTER SEQUENCE kolon [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE]
DROP_SEQUENCE : Kolon için yaratılan işlemleri siler. Yazılımı; DROP SEQUENCE kolon View
Bir tablo üzerinde sorgulama yapılması için kullanılan nesnedir. Fiziksel olarak herhangi bir yerde saklanmaz. Avantajları; o Database erişimini kısıtlar. Böylece sadece sorgulanan verileri gözükür. o Sorgulamaları kolaylaştırabilir. o Datayı bağımsız olarak gösterebiliriz. Yazılımı; CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view_adi [alias] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY]
FORCE à Hata durumu oluşursa gözardı ettirilir. NOFORCE ise gözardı edilmez. View_adi à Yaratılan view sorgu adıdır.. Alias à Yaratılan işlemin adıdır. WITH CHECK OPTION [CONSTRAINT à View objesine hatalı işleme yapılmasını engeller.
Örnek: Departman numarası 41 olan peroneller için perview isminde bir view olşturalım; · · CREATE VIEW persview AS SELECT * FROM personel WHERE dept_id=41 WITH CHECK OPTION CONSTRAINT empview_ck;
Departman id’si 16 olan personellerin departman numarasını 38 yapalım; UPDATE persview SET dept_id=38 WHERE id=16; Bu durumda bu değişiklik tabiki yapılamaz. WITH READ ONLY à View objesinin sadece okuma amaçlı olduğu belirtilir. Farklı bir işlem yapıldığında bunu engeller. Aslında kayıtlar üzerinde değişiklik yapılmasını engeller.
Örnek: Departman numarası 45 olan peroneller için perview isminde bir view olşturalım; · · CREATE VIEW persview AS SELECT * FROM personel WHERE dept_id=41 WITH READ ONLY;
Departman id’si 10 olan personellerin silinmesini sağlayalım; DELETE FROM persview WHERE id=10; Bu durumda işlemi keser ve uyarı verir.
USER_VIEWS : Data dictionary tablosunda view tanımları bulunur. View adı, text uzunluğu ve text’I saklar. VİEW_NAME à Kullanıcıya ait view adlarının tutar. TEXT_LENGTH à Sql ifadenin uzunluğudur. TEXT à Sql ifadedir.
DROP VİEW : Yaratılan view objesini siler.
Yazılımı; DROP VIEW view_adı
INDEX YARATMA
Indexler, bir tablonun istenilen kolonlarına daha hızlı erişim olanağı sağlamak için kullanılır. Tablodaki kayıtlar üzerinde giriş/çıkış işlemleri yapılırken dataya daha hızlı ulaşılması sağlanır. Primary key tanımlanan kolonlar için otomatik olarak index yaratılır. Index en fazla 16 kolondan oluşur. Bir kolon tipi long veya long raw olamaz.
Yazılımı; CREATE INDEX index_adi ON tablo_adı(kolonlar)
Örnek: Personelin adına ve soyadına göre index oluşturalım; CREATE INDEX personel_inx ON personel(ad,soyad); Böylece ad kolonu öncelikli olmak kaydıyla birlikte soyadına göre sıralama yapar, yani index oluşturur. Önce ada göre sıralar, eğer aynı isimden birden fazla kayıt oluşursa bu sefer soyad kolonundaki değerlere göre sıralama oluşturur.
Index yaratabilmek için; o Index yaratılacak tablonun var olması gereklidir, o Index yaratma hakkına sahip olmalıdır, o Limitsiz tablespace hakkına sahip olmalıdır.
Index yaratılma ihtiyacı aşağıdaki koşullar oluştuğunda belirir; o Where ifadesi ile sık sık kullanılan kolonlar kullanılıyorsa, o Join ile birleştirme işlemi yapıldığında, o Kolon değerleri geniş aralıkta ise, o Büyük rakamlı kolonların içinde null değerler bulunuyorsa.
Index yaratılmama ihtiyacı aşağıdaki koşullar oluştuğunda belirir; o Tablo küçük ise, o Tablodaki bazı kolonlara sık sık ihtiyaç duyulmadığında, o Tabloda sık sık değişiklikler yapılıyorsa.
USER_INDEXES à İndex isimlerini ve unique olup olmadığı bilgilerini saklar.
Örnek: Personel tablosuna ait index dosyalarını listeleyelim; SELECT ic.index_name,ic.column_name,ic.colum_position,ix.uniqueness FROM user_indexes ix, user_ind_columns ic WHERE ic.index_name=ix.index_name AND table_name=’Personel’;
DROP INDEX à Yaratılan indexleri veri tabanından yok etmek için kullanılır. DATABASE GÜVENLİĞİ
Database güvenliği için kullanıcılar tanımlanır. Her kullanıcının bir şifresi bulunur. Kullanıcılara belirli yetkiler verilir. Sistem ve data güvenliği olmak üzere iki kısımda incelenir. Sistem güvenliği içinde kullanıcıya yaratma, değiştirme, silme vb. yetkiler tanımlanır. Data güvenliği için ise datalar başka bir ortama yedekleme(backup) yapılarak sağlanır. Database level aşamaları ile güvenlik sınırlanır. Eğer yüksel level yetkisi varsa yeni kullanıcı(veya tablolar) yaratabilir veya silinebilir. Tabloların yedekleri alınabilir. CREATE USER à Database üzerinde işlemler yapılabilmesi için kulanıcı yaratılır. Yazılımı; CREATE USER user_adı IDENTIFIED BY tifre DROP USER à Databaseden kullanıcıyı siler. Yazılımı; DROP USER user_adı GRANT (Yetki) à Kullanıcıya yetki verilmesi için kullanılır. Yazılımı; GRANT yetkiler_roller TO kullanıcı [PUBLIC] [WITH GRANT OPTION] [PUBLIC] WITH GRANT OPTION à Sistem haklarını veya rollerini diğer kullanıcılara vermeyi sağlar. Bir rolü bu şekilde belirlersek kullanıcı rolleri değiştirebilir veya silebilir. PUBLIC à Sistem haklarını veya rollerini tüm kullanıcılara vermeyi sağlar. Örnek: Personel tablosunun pers_id,ad kolonlarına webserver kullanıcısı için düzeltme yetkisi verelim; GRANT select(pers_id,ad) ON Personel TO webserver Örnek: Personel tablosuna webserver kullanıcısı için seçme yetkisi verelim; GRANT select ON Personel TO webserver Örnek: Kazım kullanıcısı, webserver kullanıcısının personel tablosu için kayıt etme ve sorgulama yetkilerini verelim; GRANT select,insert ON personel TO webserver WITH GRANT OPTION
Örnek: Kazım kullanıcısının personel tablosunu tüm kullanıcılara sorugulama yapabilmesini sağlayalım; GRANT select ON kazim.personel TO PUBLIC
Grant yetkisi ile kullanıcılara aşağıdaki tablodaki yetkiler verilebilir
CREATE ROLE à Kullanıcıya yetki olarak verilen rollerdir.
Yazılımı; CREATE ROLE rol;
Örnek: CREATE ROLE Manager; GRANT create table, create view TO Manager; GRANT Manager TO webserver;
Manager isminde rol tanımlandı. Tablo ve view yaratma yetkisi verildi. Bu yetkiler Webserver isminde kullanıcıya aktarıldı.
Kullanıcının şifresini değiştirmek için; ALTER USER user_adı IDENTIFIED BY şifre
REVOKE à Verilen rolleri geri alır.
Yazılımı; REVOKE rol ON tablo FROM kullanıcı
Örnek: webserver kullanıcısının şifre tablosuna kayıt etme,düzeltme ve sorgulama yetkilerini kaldıralım, REVOKE select,insert,update ON tifre FROM webserver CREATE SYNONYM à Bir objenin aynısının kopyasının alarak kendi userında yaratır.
Yazılımı; CREATE [PUBLIC ] SYNONYM obje_adı FOR kullanıcı.obje
PUBLIC à Tüm kullanıcıların yetkilerini alır.
Örnek: Webserver’ın personel tablosunun aynısını kendi alanımızda yaratalım CREATE SYNONYM personel FOR webserver.personel DROP SYNONYM à Bir objenin aynısının kopyasının alarak yaratılan objeyi siler. Yazılımı; DROP [PUBLIC ] SYNONYM obje_adı
|
|
| Bağlantılar: bilgininefendisi.net |
| Open Source Document Project | AUP&TOS |