IPAMA, founded in 1988 and the Association was registered in Delhi in 1991, the acronym for Indian Printing, Packaging and Allied Machinery Manufacturers’ Association is an independent organisation serving the needs of the printing, packaging and allied industries in a rapidly changing marketplace.
IPAMA, founded in 1988 and the Association was registered in Delhi in 1991, the acronym for Indian Printing, Packaging and Allied Machinery Manufacturers’ Association is an independent organisation serving the needs of the printing, packaging and allied industries in a rapidly changing marketplace.
IPAMA, founded in 1988 and the Association was registered in Delhi in 1991, the acronym for Indian Printing, Packaging and Allied Machinery Manufacturers’ Association is an independent organisation serving the needs of the printing, packaging and allied industries in a rapidly changing marketplace.
IPAMA, founded in 1988 and the Association was registered in Delhi in 1991, the acronym for Indian Printing, Packaging and Allied Machinery Manufacturers’ Association is an independent organisation serving the needs of the printing, packaging and allied industries in a rapidly changing marketplace.
IPAMA, founded in 1988 and the Association was registered in Delhi in 1991, the acronym for Indian Printing, Packaging and Allied Machinery Manufacturers’ Association is an independent organisation serving the needs of the printing, packaging and allied industries in a rapidly changing marketplace.
PHP ile etkileşimli programlar oluşturmak istiyorsak web sunucu ve yorumlayıcıya ihtiyaç vardır. Birinin olmaması durumunda program çalışmaz.
Üye kaydı, ürün bilgisi gibi verilerin kullanılacağı bir web sayfasında ise veri tabanı sunucu gerekir. Veri tabanı sunucusunu daha kolay kontrol etmek ve verileri düzenlemek için de yardımcı veri tabanı programı yönetimi programları ( PhpMyAdmin vb.) kullanılabilir.
2. VERİ TABANININ TANIMLANMASI
(CREATE DATABASE):
• SOL Server Management Studio içinden veya
CREATE DATABASE ile veri tabanı
oluşturabiliriz.
Temel yapıda geçen ifadeleri kısaca açıklayalım;
• veritaban_ad: Yeni veri tabanının adı, Server
içerisinde benzersiz bir isim olacaktır. En fazla 128
karakter uzunluğunda olması gerekir.
• ON: Veri tabanı dosyalarını oluşturur. Bulunacağı yer
ve dosyalara ait bilgiler ile, eğer konulacak ise dosya
grup bilgisi içerir.
3. • LOG ON: Veri tabanı için log dosyalarını oluşturur. Bu
parametre verilmez ise otomatik olarak sistem, veri
tabanını örnek olarak kullanıp bir dosya oluşturur. Boyutu
ise veri tabanı dosyasının %25 kadardır. Kullanımı ON
yapısına çok benzer, ancak bir grup içinde olamaz.
• COLLATE: Veri tabanı için kullanılacak dil seçeneğini
belirler. Veri tabanı için varsayılan dil seçimi yapılır.
• PRIMARY: Birincil dosya tanımlaması yapılır. Birincil dosya
grupları, bütün veri tabanının sistem tablolarını içerir. Veri
tabanının ve sistem tablolarının mantıksal başlangıcını
içeren dosyadır. Veri tabanı sadece bir tane birincil
dosyaya sahip olabilir. Şayet birincil dosya
belirlenmemişse, CREATE DATABASE komut dizimindeki
listelenen ilk dosya birincil dosya olur.
4. • NAME: Mantıksal bir özel isimdir. Mantıksal ad, veri tabanı
oluşturulduktan sonra herhangi bir Transact- SQL
komutundan referans gösterilecek olan isimdir. Veri tabanı
içinde bu isimin benzersiz olması gerekir.
• FILENAME: İşletim sistemindeki dosyanın adıdır. Dosya
oluşturulduğu zaman işletim sistemi tarafından kullanılan
dosya adı ve yeri. Burada belirtilen yerin, işletim sistemi
tarafından sıkıştırılmış bir alan olmaması gerekir.
• MAXSIZE: Dosyanın maksimum büyüyebileceği boyuttur. KB,
MB, GB veya TB ekleri kullanılabilir. Varsayılanı MB'tır. Tam
sayı kullanılır, ondalıklı bir sayı kullanılamaz. Eğer belirtilmedi
ise disk doluncaya kadar anlamına gelir.
• UNLIMITED: Dosyanın büyüklüğü disk doluncaya kadar
anlamına gelir.
5. VERİ VE LOG DOSYALARINDA DEĞİŞİLİKLER
• ALTER DATABASE ile daha önce oluşturulmuş
veri tabanının içinde değişiklik yapabiliriz.ALTER
ifadesi kullanılırken veri tabanı adı ve içinde
bulunan mantıksal adlardan yararlanılır.
Kullanım şekli:
ALTER DATABASE veritaban_ad {
<add_or_modify_files>
| <add_or_modify_filegroups>
| MODIFY NAME = new_database_name
I COLLATE collationname }
6. Eğer kodumuzda bir sınır belirtmez isek; küçültebileceği kadar
küçültür:
use Prestige4
DBCC SHRINKFILE(prestigeist3)
Eğer EMPTYFILE parametresini kullanırsak, içindeki tüm dosyaları aynı
dosya grubu içinde bulunan diğer dosyalara taşır. Bu, bir fiziksel
küçültme yapmaz.
use Prestige4
DBCC SHRINKFILE(prestigeist3,EMPTYFILE)
TRUNCATEONLY parametresini kullanılırsak; dosyaları taşımadan,
kullanılmayan alanları siler. Eğer bir sınır verilerek kullanılmış ise, bu
değeri dikkate alır.
use Prestige4
DBCC SHRINKFILE(prestigeist3,TRUNCATEONLY)
7. VERİ TABANI VE DOSYA SİLME
Veri tabanı içinde daha önce oluşturulan bir Secondary
dosyasını veya Grubu silmek için ALTER DATABASE komutu,
veri tabanı tamamen silinecekse o zaman, DROP DATABASE
komutu kullanılır.
SEMA (SCHEMAS) OLUŞTURMA
• Table, View, Procedure gibi nesneleri içerebilir. Aynı
zamanda veri tabanı ve server bilgilerini de barındırabilir.
• Bir veri tabanı içinde şema oluşturulabilir ve üzerinde
istenilen değişiklik yapılabilir.
• Varsayılan olarak dbo isimli bir şema vardır ve sa isimli
kullanıcıya bağlıdır. Varsayılan şema, CREATE USER veya
ALTER USER'ın DEFAULT_SCHEMA seçeneği ile atanabilir
veya değiştirilebilir. Eğer DEFAULT_SCHEMA veri tabanı
oluşumunda tanımlanmazsa varsayılan olarak dbo şemasına
sahip olur.
8. VERİ TABANI SNAPSHOT OLUŞTURMA
Var olan bir veri tabanının snapshot kopyası
sadece okunabilirdir. Bu yapı raporlama için
kullanılır.
Data-page düzeyli işlem söz konusudur. Snapshot
yapısı mutlaka aynı server içinde olmalıdır. Eğer
veri tabanında bir bozulma varsa, snapshot
yapıldığı andan itibaren veriler kurtarılabilir.
Böylelikle yönetim ve kullanıcı hatalarına karşı
veri tabanımızı bir nevi sigortalamış oluruz.
9. VERİ TİPLERİ
Geniş Boyutlu Veri Tipleri:
Daha önce kullandığımız varchar, nvarchar ve
varbinary veri tipleri maxifadesi ile beraber
kullanılarak limitleri yaklaşık 2GB'a çıkartılmıştır. Eski
versiyonda üst değerin sadece 8000 byte olduğunu
düşünürsek, gelişimin boyutunu daha iyi anlayabiliriz.
Eski versiyonla aynı özelliklere sahip olan bu veri tipleri,
varchar(max), nvarchar(max) varbinary(max) şeklinde
kullanılır. Önceki versiyonlarda kullanılan text, ntext ve
image veri tiplerine tercih edilebilir.
10. Tarih ve Zaman Veri Tipleri:
Tarih ve zaman ile ilgili veri tipleri oldukça zenginleşmiştir.
Bunlar en ince hassasiyetten, genel görüme kadar kullanılacak
seçeneklerdir.
Burada datetimeoffset kısmında bulunan +02:00ülkenin saat
konumunu belirler. Eğer kayıt girerken bu belirlenmez ise
Control Panel içindeki Bölgesel Ayarlardaki ülke zaman
ayarlarını kabul eder.
11. Geography Veri Tipi:
Dünyamızın koordinat bilgilerini depolamak
istediğimiz zaman kullanacağımız veri tipidir.
Geometry Veri Tipi:
Open GeospatialConsortium(OGC) tarafından
belirlenmiş geometri standartları için
kullanılan veri tipidir. Oldukça geniş kullanım
seçenekleri bulunmaktadır.
12. PARTIONED TABLE
• Eski versiyonda geniş tablolardan oluşturduğumuz ayrı view yapıları oluşturarak
performansı arttırabiliyorduk. Yeni versiyonda ise bu işlemi direkt tablo üzerine
uygulayabiliyoruz.
• Bir tabloyu yatay olarak bölümlere ayırabiliriz. Satırlar farklı dosya gruplarına
dağıtılabilir.
• Buradaki amaç:
• *Çoklu işlemci bulunan sistemde performansı arttırmak.
• * Geniş tabloların yönetimini basitleştirmek.
• INSERT INTO SELECT FROM ifadesi kullanılarak çok hızlı bir şekilde veriler;
bölümlenmiş tablolar arasında taşınabilir. Burada veri fiziksel olarak taşınmaz, sadece
metadata bilgileri değişir.
• Örneğin; eski yıla ait bilgileri bölerek ayrı bir bölümde tutmak bu yapı için
kullanılabilecek bir özelliktir.
• $partition fonksiyonu ile bölümlenmiş bir tablo hakkında bilgi sahibi olabiliriz.
• Bölümlenmiş bir tablo oluşturmak için aşağıdaki kademeler
uygulanmalıdır;
• *** Bölümlenme ile ilgili fonksiyon oluşturma (CREATE PARTITION FUNCTION)
• *** Bölümlenme ile ilgili şema oluşturma. (CREATE PARTITION SCHEME)
• *** Bölümlenmiş tablo oluşturma. (CREATE TABLE)
13. INDEX
Performans için en gerekli özelliklerinden biri de index
yapısıdır.
*** DISABLE: Bu ifade ile kullanıcıların geçici olarak
clusteredindex yapısındaki index mekanizmasını açmasını
engeller. Tekrar aktif hale getirmek için REBULID ifadesi
kullanılır.
*** REBUILD: Tek bir index veya bulunan tüm index'leri yeniden
aktivite etmek için kullanılır. DBCC DBREINDEX ifadesinin yaptığını
yapar.
*** REORGANIZE: lndex yapısında bulunan leaf bölümünü yeniden
düzenleyerek performansı arttırır. Bir nevi ekleme ve silmelerden
dolayı oluşan index parçalanmalarını düzenleyerek, daha
performanslı çalışmasını sağlar.
14. • ONLINE={ON/OF}: Sorgulama veya güncelleme işlemlerinde
tablonun kilitli olup-olmamasını belirler.
• ALLOW_ROW_LOCK={ON/OFF}:Satır bazlı kilitleme olup-
olamamasını belirler.
• ALLOW_PAGE_LOCK={ON/OFF}:Sayfa bazlı kilitleme olup-
olamamasını belirler.
• MAXDROP=işlemci sayısı:Kontrolün kaç işlemci tarafından
yapılacağını belirler. Bu seçeneği server düzeyinde devreye sokmak
için ise sys.sp_configure kullanılır.
• PERFORMANS: Performansı arttıran diğer bir etken de
nonclusterindex ile beraber kullanılan key değeri bulunmayan
sütunların yapıya dahil edilmesidir. Bunun maksimum limiti 16
sütundur.
• INDEX BÖLÜMLEME: Bir önceki bölümde anlattığımız ve üç adımda
oluşan tablo bölümleme işlemi aynen index yapısı için de
geçerlidir.Büyük indexbilgileri ayrı dosya gruplarında tutularak
performansarttırılabilir.
15. İLERİ DATA MANIPULATIONLAN.(DML)
ÖZELLİKLERİ:
OUTPUT:
SQL Server içinde bir trigger oluşturduğumuz zaman
inserted ve deleted özel tablolarında bulunan bilgiler
ile işlemler gerçekleştirme; eski versiyonda olduğu gibi,
yeni versiyonda da devam etmektedir.
Aşağıdaki hallerin dışında herhangi bir DML ifadesi
içinde OUTPUT kullanılabilir.
*** Hedef view yapısında INSERT ifadesi.
*** Uzaktaki tablo ve view için kullanılacak DML ifadeleri.
*** Lokal veya dağıtılmış bölünmüş view yapılarında
16. COMMON TABLE EXPRESSION(CTES):
Temel yapısı SELECT sorgusu içermektedir. SELECT, INSERT,
UPDATE ve DELETE ifade sonuçları yakalanabilir.
• Kullanım ifadeleri:
WITH <common_table_expression> [,...n]]
<common_table_expression>::=
expression_ad
[{sütun ad[,...n])]
AS
(<CTE_sorgu_tanımlaması>)
• Expression_ad: CTE adıdır. Herhangi bir isimi olabileceği gibi, veri
tabanında bulunan bir tablo adı bile olabilir.
• Sütun_ad: CTE için kullanılacak sütun adı veya adlarıdır. Seçilen
sütun sayısı ile sorgu sonucu oluşan sütun sayısı birbiriyle aynı
olmalıdır.
• CTE_sorgu_tanımlaması: Sonuç yapısı için kullanılacak özel SELECT
ifadesidir.
17. • Aşağıdaki yapılar CTE_sorgu tanımlamasında kullanılmaz.
*** COMPUTE or COMPUTE BY
*** ORDER BY (TOP ifadesi varsa hariç)
*** INTO
*** OPTİON (sorgu yapısında)
*** FOR XML
*** FOR BROWSE
Kullanılması:
• CTE sütun listesi seçilir.
• CTE SELECT sorgusu oluşturulur.
• Sorgu içinde CTE kullanılır
Eski yapıda türetilmiş tablolar ayrı ayrı oluşturulurken, bu yapıyla
birlikte aynı kod içinde bulunması; okunabilirliği ve basitliği arttırır.
Ayrıca kod hiyerarşi karmaşıklığından kurtuluruz.
18. PIVOT UNPIVOT
• Geniş veri tabanları için güçlü çapraz sorgular oluşturmakta
yararlanacağımız yeni bir özelliktir.
• PIVOT ile çapraz sorgular oluşturularak; sum, average, count gibi
fonksiyonlar ve gruplamalar yapılabilir. Microsoft Access programının
Transformifadesine benzer.
• Kullanım Şekli:
SELECT*FROM tablo_kaynağı
PIVOT(küme_fonksiyon( sütun_değer)
FOR pivot_sütun
IN(<sütun_liste>)
) tablo_takmaad
• UNPIVOT ise sütunu değere dönüştürür. PIVOT yapısının zıttıdır.
UNPIVOT kullanım şekli, PIVOT yapısına benzer. Ancak PIVOT yerine
özel UNPIVOT işlemleri kullanılır.
19. APPLY
Birbirleri ile JOIN ifadesi ile ilişkilendirilmiş
tablonun her bir satırını tablo fonksiyonu olarak
döndürmek için kullanılır.
İki çeşidi vardır;
*** CROSS APPLY: Yalnızca satırları bir tablo
fonksiyonu döndürür.
*** OUTER APPLY: Tüm satırları tablo fonksiyonu
döndürür. Satır yoksa veya null değeri taşıyorsa
bile döndürme işlemini gerçekleştirir.
20. DİZİ(RANK) FONKSİYONLAR
• SQL Server dört çeşit dizi fonksiyonuna destek vermektedir. Bunlar;
RANK, DENSE_RANK, NTITLE ve ROW_NUMBER.Hepsinin de OVER
cümleciği ile beraber kullanılması gerekmektedir.
• OVER ifadesi bölümlenmeyi ve satır sıralanmasını sağlar. Kullanım
şekli aşağıdaki gibidir;
over ([ PARTITION BY < ifade_deðeri > , ... [ n ] ]
ORDERBY<sütun> [ ASC | DESC ] [, ...[ n ] ])
• PARTITION BY cümleciği ile dizi için satırların nasıl gruplanacağı
belirlenir. Her bir bölümün satır sıralanmasının nasıl olacağı ise
ORDER BY cümleciği ile ayarlanır.
• RANK:Sonuç yapısı içinde ayrılmış özel bir bölümle birlikte her bir
satırın dizi olarak dönmesi için kullanılan fonksiyondur. Eğer
OrderBy ile belirtilen değeri birden fazla hücre içinde varsa aynı dizi
numarasını alırlar.
21. HATA KONTROLÜ
Hata kontrolü bazı Transact-SQL ifadeleri için vazgeçilmezdir.
Exception; .NET dilleri için ortak ve yaygın kullanılan bir yapıdır. Bu sürüm
ile SQL Server 2005 bünyesinden itibaren dahil edilmiştir.
TRY... CATCH: TRY...CATCHbloğu Exceptionyapısında kullanılır. TRY bloğu esas
çalışması gereken kodu içerirken, CATCH bloğu ise hata durumunda
devreye girecek ifadeleri içerir.
Kullanım Şekli:
BEGINTRY
{sql ifadesi /sql ifadelen}
ENDTRY
BEGINCATCH
{sql ifadesi/sql ifadeleri}
ENDCATCH