SQL¶e G R

maXXTor Bilgisayar Mühendisi www.cyber-warrior.org maXXTor@inbox.ru aSTaNa
by MaXXTor 1

Veritaban 


Düzenli bilgiler toplulu udur. Kelimenin anlam bilgisayar ortam nda saklanan düzenli verilerle s n rl olmamakla birlikte, daha çok bu anlamda kullan lmaktad r. Veritaban yaz l m ise verileri sistematik bir biçimde depolayan yaz l mlara verilen isimdir. Birçok yaz l m bilgi depolayabilir ama aradaki fark, veritaban n bu bilgiyi verimli ve h zl bir ekilde yönetip de i tirebilmesidir. Veritaban , bilgi sisteminin kalbidir ve etkili kullanmakla de er kazan r. Bilgiye gerekli oldu u zaman ula abilmek esast r. ndeksi olmayan bir kütüphane ve bütün kitaplar n ayn kapa a sahip oldu unu dü ündü ünüzde kütüphane kullan c lar n n ne kadar çok i i olaca n tahmin edersiniz. Bir veritaban bir kütüphanenin mükemmel bir indeks sistemi oldu u gibi , ayn zamanda kütüphanenin kendisidir. li kisel Veritaban Yönetim Sistemleri (Relational Database Management Systems RDBMS) büyük miktarlardaki verilerin güvenli bir ekilde tutulabildi i, bilgilere h zl eri im imkanlar n n sa land , bilgilerin bütünlük içerisinde tutulabildi i ve birden fazla kullan c ya ayn anda bilgiye eri im imkan n n sa land programlard r. Oracle veritaban da bir ili kisel veri taban yönetim sistemidir

by MaXXTor

2

Veri Taban Yöneticili i 

Günümüzde veritaban sistemleri, bankac l ktan otomotiv sanayisine, sa l k bilgi sistemlerinden irket yönetimine, telekomünikasyon sistemlerinden hava ta mac l na, çok geni alanlarda kullan lan bilgisayar sistemlerinin alt yap s n olu turmaktad r. Veritaban fiziksel olarak bilgileri tutarken mant ksal bir hiyerar iye de sahiptir. Veritaban sistemlerinin kurulumu, konfigürasyonu, dizayn , sorgulamas , güvenli i ve denetiminin karma k bir hal almas veritaban yöneticili i kavram n n olu mas na neden olmu tur.Bir veritaban yöneticisi mant ksal data modelleme, fiziksel veritaban dizayn ç karma, fiziksel olarak veritaban olu turma, Transact-SQL kullanarak sorgu yazma, Microsoft SQL Server kurulumu ve konfigürasyonu, güvenlik yönetimi ve konfigürasyonu, veritaban yönetimi ve bak m , veritaban denetleme ve optimize etme i lerini üstlenir.

by MaXXTor

3

Veritaban olu turman n zorluklar ?
Evet bir zamanlar gerçekten veritaban kullanmak zordu« Text dosyalar ve fonksiyonlar içinde bo u urduk«  Ama günümüzde ç kan bir çok Veri taban program ve Programlanabilir ara yüzler sayesinde ciddi bir ekilde basitle mi tir. 

by MaXXTor 4

Neden Veritaban ? 

Çok geni kütüklerle bo u mak
Her yerde ve çok fazla ihtiyaç olmas  Kütüklerin yönetimi  Kütükleri korumak  Yedekleme  Güvenlik  H zl sorgu 

by MaXXTor

5

Neden Veritaban ?
Birden fazla veri yap s n bir arada tutmak  Ya ekleme yapmak gerekirse  Peki ya de i iklik olursa  Bu dosya yap lar çöpe mi yoksa bir beyin f rt nas ndan ve yüzlerce sat rl k kod yazd ktan sonra bir sonraki f rt naya kadar geçici bir rahatlama m? 

by MaXXTor 6

Peki ya internet yüzü? 

Online gezinirken gerekli olursa
Bir Database in ula labilirli i  Sunucu gücü  Haz rlan lan bu dosyalara ula m neyle yapaca z?  Peki ya güvenlik? 

by MaXXTor

7

Veri Taban Çe itleri 

li kisel veri taban sistemleri 
   

PostgreSQL MySQL Oracle Sybase BerkeleyDB SQL PL/SQL Tcl . . .
by MaXXTor 8 

Veri taban dilleri 
    

Peki SQL Nedir?
Structured Query Language  Veritaban yönetimi için bir programlama standard .  ANSI ve ISO standartlar nda ve bir çok programlama dilli standart komutlar nda SQL özelliklerini kullanmaya imkan sa l yor. 

by MaXXTor

9

SQL Kullan m nas l?
Basitçe al labilecek komutlarla kullan m  Veri ekleyip ç karmaktan tutup  Veri yerini kolayl kla bulmaya kadar  Programlanabilir ara yüz mevcut  Yedek almak ve al nan yedekleri geri yüklemek çok kolay 

by MaXXTor 10

SQL Nerede laz m?
Her eve laz m asl nda :)  irketin mali durumlar n toparlamak  Stok kontrolleri  Veri arama sistemleri (Arama motoru, vb)  Özellikle PHP kullananlara  Web ara yüzlü sitelerde 

by MaXXTor 11

SQL Avantajlar ?
Asl nda bu biraz da kulland n z SQL¶e ba l (MySQL, PostgreSQL vs.)  Ba lang ç için en iyisi MySQL  Sonraki ad m PostgreSQL  Tüm ihtiyaçlar n za ücretsiz çözüm 

by MaXXTor

12

MySQL ne? Yenir mi? 

lk ba layanlar için MySQL 

Alt n dörtlünün bir parças

MyAdmin ile zorlanmadan ö renerek kullan m imkan  Çoklu dil seçene i ile kolay kullan m  Tüm programlar burdan download edebilirsiniz« http://dev.mysql.com/downloads/ 

by MaXXTor 13

MySQL ile s nma hareketleri 

MySQL¶e ba lanmak
mysql -h localhost -u root ±p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 18 to server version: 3.23.38 Type 'help;' or '\h' for help. Type '\c' to clear the buffer mysql> mysql>

by MaXXTor

14

MySQL ile s nma hareketleri 

MySQL de i kenlerini görmek
mysql> show variables;  Versiyon bilgisinden bölge saatine kadar 78 farkl bilgi verir. mysql> status; Connection id: Current database: Current user: Server version: Protocol version: Connection: Client characterset: Server characterset: TCP port: Uptime:

18 root@localhost 3.23.38 10 localhost via TCP/IP latin1 latin1 3306 11 min 43 sec Opens: 243 Flush tables:

Threads: 2 Questions: 247 Slow queries: 0 1 Open t ables: 64 Queries per second avg: 0.351 by MaXXTor

15

MySQL ile s nma hareketleri 

Databaseleri görmek:
mysql> show databases; +----------+ | Database | +----------+ | cengdb | | deneme | | muhasebe | | mysql | | nuke | | test | | theatre | +----------+ 7 rows in set (0.00 sec)

show databases; Sisteme ba l olan kullan c n n haklar n n izin verdi i tüm databaseleri gösterir.

by MaXXTor

16

MySQL ile s nma hareketleri
Database seçmek için: use <database ad > Ör: mysql> use cengdb; cengdb; Database changed 


Database çindeki tablelar görmek için: show tables; [ Veri taban nda veriler tablolar halinde tutulur. ]

by MaXXTor

17

MySQL ile s nma hareketleri
mysql> show tables; +------------------+ | Tables_in_cengdb | +------------------+ | course_news | | courses | | exam_news | | exam_types | | firm | | general_news | | instructor | | place_exam_rel | | places | | student | | system_log | | user | +------------------+ 12 rows in set (0.00 sec)
by MaXXTor 18

MySQL ile s nma hareketleri 
Tabloyu

Analiz etmek:

mysql> analyze table courses; +----------------+---------+----------+----------+ | Table | Op | Msg_type | Msg_text | +----------------+---------+----------+----------+ | cengdb.courses | analyze | status | OK | +----------------+---------+----------+----------+ 1 row in set (0.00 sec) mysql>

by MaXXTor

19

MySQL ile s nma hareketleri
Tabloyu optimize etmek: mysql> optimize table courses; 

+----------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +----------------+----------+----------+----------+ | cengdb.courses | optimize | status | OK | +----------------+----------+----------+----------+ 1 row in set (0.00 sec) mysql>

by MaXXTor

20

MySQL ile s nma hareketleri
Tabloyu Onarmak: mysql> repair table courses; 

+----------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +----------------+--------+----------+----------+ | cengdb.courses | repair | status | OK | +----------------+--------+----------+----------+ 1 row in set (0.00 sec) mysql>

by MaXXTor

21

MySQL ile s nma hareketleri
Tabloyu kontrol etmek: mysql> check table courses; +----------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +----------------+-------+----------+----------+ | cengdb.courses | check | status | OK | +----------------+-------+----------+----------+ 1 row in set (0.00 sec) 

mysql>

by MaXXTor

22

MySQL ile s nma hareketleri
Database yaratma; create database <database ad > 

mysql> create database deneme; deneme; Query OK, 1 row affected (0.00 sec)

by MaXXTor

23

De i ken tipleri
TINYINT(M) -> Nümerik tamsay lar için. -128, 127 aras nda de er alabilir. UNSIGNED ifadesi kullan labilir. SMALLINT(M) -> Nümerik tamsay lar için. -32768, 32767 aras nda de er alabilir. UNSIGNED ifadesi kullan labilir. MEDIUMINT(M) -> Nümerik tamsay lar için. -8388608, 8388607 aras nda de er alabilir. UNSIGNED ifadesi kullan labilir. INT(M),INTEGER(M) -> Nümerik tamsay lar için. -8388608, 8388607 aras nda de er alabilir. UNSIGNED ifadesi kullan labilir. BIGINT(M) -> Nümerik tamsay lar için. -9223372036854775808, 9223372036854775807 aras nda de er alabilir. FLOAT((M)(D)) -> Üstel tamsay lar için. -3.402823466E+38, 1.175494351E1.175494351E-38 aras nda de er alabilir.
by MaXXTor 24

De i ken tipleri
DOUBLE((M)(D)) -> Üstel tamsay lar için. 1.7976931348623157E+308, -2.2250738585072014E-308 2.2250738585072014Earas nda de er alabilir. DECIMAL((M)(D)) -> Noktal say lar için. DATE -> Tarih formatl veri için. 'YYYY-MM-DD' 'YYYY-MMformundad r. DATETIME -> Tarih-saat formatl veri için. 'YYYY-MM-DD Tarih'YYYY-MMHH:MM:SS' formundad r. TIMESTAMP -> Özel tarih-saat formatl veri için. tarihTIME -> Zaman formatl veri için. 'HH:MM:SS' formundad r.
by MaXXTor 25

De i ken tipleri
YEAR(2|4) -> 2 yada 4 dijitli y l de eri tutan tarih format . 'YYYY' veya 'YY' formundad r. CHAR(M) -> Sabit uzunluklu karakter dizisi için. 1-255 aras nda karakter tutabilir. 1VARCHAR(M) -> De i ken uzunluklu karakter dizisi için. 1-255 aras nda 1karakter tutabilir.
by MaXXTor 26

De i ken tipleri
TEXT -> De i ken uzunluklu karakter dizisi için. 1165535 aras nda karakter tutabilir. MEDIUMTEXT -> De i ken uzunluklu karakter dizisi için. 1-16777215 aras nda karakter tutabilir. 1LONGTEXT -> De i ken uzunluklu karakter dizisi için. 1-4294967295 aras nda karakter tutabilir. 1ENUM('deger1'..) -> Kullan c n n belirtti i anahtarlar tutar. Anahtar 65535'e kadar olabilir.

by MaXXTor

27

Table Olu turma
create table <table ad > (de i kenler) CREATE TABLE `tablom` ( `id` INT NOT NULL AUTO_INCREMENT, `isim` VARCHAR(25) NOT NULL, `soyisim` VARCHAR(50) NOT NULL, INDEX (`id`), UNIQUE (`id`) );

by MaXXTor

28

Alanlar n Özelliklerini görme
mysql> show columns from tablom; +---------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | isim | varchar(25) | | | | | | soyisim | varchar(50) | | | | | +---------+-------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)

by MaXXTor

29

Alan özellikleri de i tirme
ALTER TABLE `deneme`.`tablom` CHANGE `id` `id` BIGINT(11) NOT NULL AUTO_INCREMENT;
mysql> show columns from tablom; +---------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+----------------+ | id | bigint(11) | | PRI | NULL | auto_increment | | isim | varchar(25) | | | | | | soyisim | varchar(50) | | | | | +---------+-------------+------+-----+---------+---------------+3 rows in set (0.00 sec)

by MaXXTor

30

Tabloya Veri eklemek ve ekli verileri görmek
INSERT INTO `tablom` (`id`, `isim`, `soyisim`) VALUES ('1', 'cyber','warrior'); mysql> select * from tablom; +----+--------+------------+ | id | isim | soyisim | +----+--------+------------+ | 1 | cyber | warrior | +----+--------+------------+ 1 row in set (0.00 sec)
by MaXXTor 31

Veri eklemek
INSERT INTO `tablom` (`id`, `isim`, `soyisim`) VALUES ('', µcyber', µwarrior');

by MaXXTor

32

Belirli alanlar tarama
mysql> select * from `tablom` where `isim`=µcyber'; +----+-------+---------+ | id | isim | soyisim | +----+-------+---------+ | 2 | cyber | warrior | +----+-------+---------+ 1 row in set (0.00 sec)

by MaXXTor

33

Yanl

girilenlerin düzeltilmesi

UPDATE `tablom` SET `isim` = 'cyber 2' WHERE `id` = '1' LIMIT 1; mysql> select * from tablom; +----+----------+------------+ | id | isim | soyisim | +----+----------+------------+ | 1 | cyber2 | warrior2 | | 2 | cyber | warrior | +----+----------+------------+ 2 rows in set (0.00 sec)

by MaXXTor

34

Distinct ile teke indirgenen seçimler
mysql> select * from main; +------+------------------+---------------+-------+----------+ | t_id | c_name | t_name | t_row | t_column | +------+------------------+---------------+-------+----------+ | 1 | Ankara | Küçük Tiyatro | 12 | 15 | | 2 | Ankara | yeni sahne | 10 | 5 | | 3 | stanbul(Trakya) | bkm | 50 | 20 | +------+------------------+---------------+-------+----------+ 3 rows in set (0.00 sec)

by MaXXTor

35

Distinct ile indirgenen seçimler
mysql> select c_name from main; +------------------+ | c_name | +------------------+ | Ankara | | Ankara | | stanbul(Trakya) | +------------------+ 3 rows in set (0.00 sec) mysql> select distinct c_name from main; +------------------+ | c_name | +------------------+ | Ankara | | stanbul(Trakya) | +------------------+ 2 rows in set (0.00 sec)

by MaXXTor

36

Distinct ile indirgenen seçimler
mysql> select distinct c_name,t_name from main; +------------------+---------------+ | c_name | t_name | +------------------+---------------+ | Ankara | Küçük Tiyatro | | Ankara | yeni sahne | | stanbul(Trakya) | bkm | +------------------+---------------+ 3 rows in set (0.00 sec)

by MaXXTor

37

Having ile ko ula ba l seçim
mysql> SELECT * FROM `tablom` having`id`>1; +------------+---------+ | id | isim | soyisim | +----+-------+---------+ | 2 | cyber | warrior | +----+-------+---------+ 1 row in set (0.00 sec)

by MaXXTor

38

Where kullan m
mysql> select * from tablom where id=1; +----+--------+------------+ | id | isim | soyisim | +----+--------+------------+ | 1 | cyber | warrior | +----+--------+------------+ 1 row in set (0.00 sec)

by MaXXTor

39

Having + Where kullan m
mysql> SELECT * FROM `tablom` where `id`>0 having `isim`=µcyber'; +----+-------+---------+ | id | isim | soyisim | +----+-------+---------+ | 2 | cyber | warrior | +----+-------+---------+ 1 row in set (0.00 sec)

by MaXXTor

40

Select biraz daha..
mysql> select * from tablom where id between 0 and 3; +----+--------+------------+ | id | isim | soyisim | +----+--------+------------+ | 1 | cyber | warrior | | 2 | cyber2 | warrior2 | +----+--------+------------+ 2 rows in set (0.01 sec)

by MaXXTor

41

Biraz da gerekebilir String fonksiyonlar
Like de imi '_' karakteri => herhangi bir karakter '%' karakteri => herhangi bir karakter dizisi SELECT 'cyber' LIKE µcyb%' 1 SELECT 'cyber' LIKE µcyb__µ 0 NOT: \ (escape karakteri)

by MaXXTor

42

Biraz da gerekebilir String fonksiyonlar
' STRCMP ' FADES STRCMP ( kelime1, kelime2 ) 
 

Kelime1 ile Kelime2 ayn ise 0, Kelime1 Kelime2'den alfabetik olarak büyük ise 1, Di er durumda -1 degeri üretilir.

SELECT STRCMP('abc','abc') =>0 STRCMP('abc',cba')=> -1 STRCMP('cba','abc') => 1
by MaXXTor 43

Biraz da gerekebilir String fonksiyonlar
' BINARY ' FADES SELECT "a"="A"; =>1 SELECT BINARY "a"="A"; =>0

by MaXXTor

44

Di er String fonksiyonlar
ASCII ( veri ) : veri'nin ascii kar l n bulur. CONV ( veri, a1, a2 ) : veri'yi a1 tabanl olarak al p a2 tabana dönü türür. BIN ( N ) : 10 tabanl N verisini binary forma yani 2'lik tabana dönü türür. OCT ( N ) : 10 tabanl N verisini oktal forma yani 8'lik tabana dönü türür. HEX ( N ) : 10 tabanl N verisini heksadesimal yani 16'lik tabana dönü türür. CHAR ( N1, N2 .. ) : ascii kodlu N1,N2 de erlerini stringe dönü türür ve birle tirir. CONCAT ( N1, N2 .. ) : N1,N2 verilerini stringe çevirip birle tirerek geri verir. NULL de er girilirse sonuç NULL olur. LENGTH ( N1 ) : N1 stinginin karakter say s n bulur.
by MaXXTor 45

Matematiksel ifadeler
ABS ( x ) : x'in pozitif de erini bulur. SIGN ( x ) : x pozitif ise 1, negatif ise -1, 0 ise 0 de erini üretir. MOD ( x, y ) : x y'ye bölünür ve kalan de er fonksiyondan döner. FLOOR ( x ) : x'e en yak n ve x'den küçük tamsay y bulur. CEILING ( x ) : x'e en yak n ve x'den büyük tamsay y bulur. ROUND ( x ) : x'e en yak n tamsay y verir. ROUND ( x, D ) : noktal say larda x'e en yak n, noktadan sonra D rakam olan say y verir.

by MaXXTor

46

Matematiksel Fonksiyonlar
POW ( x, y ) , POWER ( x, y ) : x'in y'ninci kuvvetini bulur. SQRT ( x ) : x'in karekökünü bulur. PI ( ) : Pi say s n verir. GREATEST ( x, y, z .. ) : en büyük veriyi bulur. TRUNCATE ( x, D ) : noktal x say s n noktadan sonra D rakaml hale sokar.

by MaXXTor

47

Tarih ± Saat fonksiyonlar
DAYOFWEEK(tarih) => YYYY - MM - DD formundaki tarih'in, ODBC standard nda haftan n kaç nc günü oldu unu bulur. SELECT DAYOFWEEK('2001-12-26') =>4 DAYOFMONTH(tarih) => Ay n kaç nc günü oldu unu bulur. DAYOFYEAR(tarih) => Y l n kaç nc günü oldu unu bulur. MONTH(tarih) => Kaç nc gün oldu unu bulur. DAYNAME(tarih) => Gün ad n bulur. MONTHNAME(tarih) => Ay ad n bulur. QUARTER(tarih) => Tarihin, y l n kaç nc çeyre inde oldu unu bulur. WEEK(tarih) => Y l n kaç nc haftas oldu unu bulur. YEAR(tarih) => Hangi y l oldu unu bulur. HOUR(zaman) => HH : MM : SS format ndaki zaman verisinden saat bulunur. MINUTE(zaman) => Dakikay bulur. SECOND(zaman) => Saniyeyi bulur. by MaXXTor

48

DATE_FORMAT
%M : Ay adi ( January, December ) %W : Gün adi ( Sunday, Saturay %k : Saat ( 0 , 23 ) ) %h : Saat , 2 dijit ( 01 , 12 ) %D : Gün de eri ve eki ( 1st, %l : Saat ( 1 , 12 ) 2nd ) %i : Dakika ( 00 , 59 ) %Y : Y l de eri , 4 dijit ( 1993 ) %r : Zaman , 12 saatlik ( hh : mm %y : Y l de eri , 2 dijit ( 93 ) : ss [AP] M ) %a : K salt lm gün adi ( Sun, %T : Zaman , 24 saatlik ( hh : mm Sat ) : ss ) %d : Gün de eri , 2 dijit ( 00 , %S : Saniye ( 00 , 59 ) 31 ) %p : AM yada PM %e : Gün de eri ( 0 , 31 ) %w : Haftan n kaç nc günü oldu u %m : Ay de eri , 2 dijit ( 01 , 12 ( 0=Sunday , 6=Saturday ) ) %U : Y l n kaç nc haftas oldu u ( %c : Ay de eri ( 1 , 12 ) Sunday haftan n birinci günü ) %b : K salt lm ay adi ( Jan , %u : Y l n kaç nc haftas oldu u ( Dec ) Monday haftan n birinci günü ) %j : Y l n gün say s ( 001 , 366 ) %% : Sadece ' % ' karakteri 49 %H : Saat , 2 dijit ( 00 , 23 ) by MaXXTor

DATE SON
µCURDATE ' , ' CURRENT_DATE ' O anki tarih ' NOW ' , ' SYSDATE ' , ' CURRENT_TIMESTAMP ' O anki
zaman gün ay y l

SELECT NOW(); 2001-12-26 14:52:46

by MaXXTor

50

ASP ile
Veritaban m za ASP (Active Server Pages) script dilini kullanarak, DSN kayd olmaks z n ba lanaca z.Veritaban n ço u Web Tasar mc s gibi Microsoft Access program ile haz rlad k. Sitemizden gelen talebi Veritaban m za ba layan DSN'siz ASP kodlar a a da gördü ünüz gibidir; <% Dim conn, connStr, rs, SQL Set conn=Server.CreateObject("ADODB.Connection") connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("../cybersql.mdb") & "; Persist Security Info=False;"conn.Open (connStr) SQL="SELECT * FROM cyber_data ORDER BY uye_id ASC" Set rs=Server.CreateObject("ADODB.Recordset") rs.Open SQL, conn, 1 %>Burada Uye Kay tlar n n Tutuldu u TABLE'daki verileri ÜYE numaras na göre küçükden Büyü e S ralamas n istedik. ../cybersql.mdb veritaban m z n varsay lan yoludur

by MaXXTor

51

SONUÇ
SQL Veri taban esnek, h zl , güvenilir, uyumlu ve ücretsiz oldu u için piyasaya hakim hale gelmi tir«  Windows, Linux uygulamalar nda ve Web uygulamalar nda en çok kullan lan veritaban konumundad r« 

by MaXXTor

52

Kaynaklar
Wikipedia  Hakk Öcal SQL dersleri  Google  http://www.php.net,  www.php.org.tr  http://www.mysql.com 

by MaXXTor

53

Bu Doküman www.cyber-warrior.org için maXXTor taraf ndan haz rlanm t r«
by MaXXTor 54

Sign up to vote on this title
UsefulNot useful