Top Banner
SQL’e GİRİŞ Çağlar Ülküderner [email protected]
47

SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Dec 14, 2018

Download

Documents

ngominh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

SQL’e GİRİŞ

Çağlar Ülküderner

[email protected]

Page 2: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Database yaratmanın zorlukları?Database yaratmanın zorlukları?

Ah o data structure dersi..Ah o data structure dersi.. Eskiden bir kaç text yada binary dosya Eskiden bir kaç text yada binary dosya

üzerinde herşeyi yapmaya çalışırdık.üzerinde herşeyi yapmaya çalışırdık. Fonksiyonlar yazıp sevinirdik.Fonksiyonlar yazıp sevinirdik. Buffer ayarlamaya çalışırdık.Buffer ayarlamaya çalışırdık.

Page 3: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Database Neden?Database Neden?

Çok geniş kütüklerle boğuşmakÇok geniş kütüklerle boğuşmak İhtiyaçlar çok fazlaİhtiyaçlar çok fazlaKütüklerin yönetimiKütüklerin yönetimiKütükleri korumakKütükleri korumakYedeklemeYedeklemeGüvenlikGüvenlik

Page 4: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Database Neden?Database Neden?

Birden fazla veri yapısını bir arada tutmakBirden fazla veri yapısını bir arada tutmak Ya ekleme yapmak gerekirseYa ekleme yapmak gerekirse Peki ya değişiklik olursaPeki ya değişiklik olursa Bu dosya yapıları çöpe mi yoksa bir beyin Bu dosya yapıları çöpe mi yoksa bir beyin

fırtınsından ve yüzlerce satırlık kod fırtınsından ve yüzlerce satırlık kod yazdıktan sonra bir sonraki fırtınaya kadar yazdıktan sonra bir sonraki fırtınaya kadar geçici bir rahatlama mı?geçici bir rahatlama mı?

Page 5: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Peki ya internet yüzü?Peki ya internet yüzü?

Online gezinirken gerekli olursaOnline gezinirken gerekli olursaBir database in olaşılabilirliğiBir database in olaşılabilirliğiSunucu gücüSunucu gücüHazırlanılan bu dosyalara ulaşımı neyle Hazırlanılan bu dosyalara ulaşımı neyle

yapacağız?yapacağız?Peki ya güvenlik?Peki ya güvenlik?

Page 6: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Peki SQL Nedir?Peki SQL Nedir?

Structured Query LanguageStructured Query Language Database yönetimi için bir programlama Database yönetimi için bir programlama

standartı.standartı. ANSI ve ISO standartlarında ve bir çok ANSI ve ISO standartlarında ve bir çok

programlama dilli standart komutlarında programlama dilli standart komutlarında SQL özelliklerini kullanmaya imkan SQL özelliklerini kullanmaya imkan sağlıyor. sağlıyor.

Page 7: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

SQL Kullanımı nasıl?SQL Kullanımı nasıl?

Basitçe alaşılabilecek komutlarla kullanımBasitçe alaşılabilecek komutlarla kullanım Veri ekleyip çıkarmaktan tutupVeri ekleyip çıkarmaktan tutup Veri yerini kolaylıkla bulmaya kadarVeri yerini kolaylıkla bulmaya kadar Programlanabilir arayüz mevcutProgramlanabilir arayüz mevcut Yedek almak ve alınan yedekleri geri Yedek almak ve alınan yedekleri geri

yüklemek çok kolayyüklemek çok kolay

Page 8: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

SQL Nerede Lazım?SQL Nerede Lazım?

Aslında her eve lazım :)Aslında her eve lazım :) Şirketin mali durumlarını toplarlamakŞirketin mali durumlarını toplarlamak Stok kontrolleriStok kontrolleri Veri arama sistemleri (Arama moturu, vb)Veri arama sistemleri (Arama moturu, vb) Özellikle PHP kullananlaraÖzellikle PHP kullananlara

Page 9: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

SQL Ağzıyla kuş tutar mı?SQL Ağzıyla kuş tutar mı?

Aslında bu biraz da kullandığınız SQL’e Aslında bu biraz da kullandığınız SQL’e bağlı (MySQL, PostgreSQL vs.)bağlı (MySQL, PostgreSQL vs.)

Başlangıç için en iyisi MySQLBaşlangıç için en iyisi MySQL Sonraki adım PostgreSQLSonraki adım PostgreSQL Tüm ihtiyaçlarınıza ücretsiz çözümTüm ihtiyaçlarınıza ücretsiz çözüm

Page 10: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ne? Yenir mi?MySQL ne? Yenir mi?

İlk başlayanlar için MySQLİlk başlayanlar için MySQLAltın dörtlünün bir parçasıAltın dörtlünün bir parçası

MyAdmin ile zorlanmadan öğrenerek MyAdmin ile zorlanmadan öğrenerek kullanım imkanıkullanım imkanı

Çoklu dil seçeneği ile kolay kullanımÇoklu dil seçeneği ile kolay kullanım

Page 11: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

MySQL’e bağlanmakMySQL’e bağlanmakmysql -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>

Page 12: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri MySQL değişkenlerini görmekMySQL değişkenlerini görmek

mysql> show variables; Versiyon bilgisinden bölge saatine kadar 78 farklı bilgi verir.

mysql> status;Connection id: 18Current database:Current user: root@localhostServer version: 3.23.38Protocol version: 10Connection: localhost via TCP/IPClient characterset: latin1Server characterset: latin1TCP port: 3306Uptime: 11 min 43 sec

Threads: 2 Questions: 247 Slow queries: 0 Opens: 243 Flush tables: 1 Open t

ables: 64 Queries per second avg: 0.351

Page 13: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

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

show databases;show databases;

Sisteme bağlı olan kullanıcının Sisteme bağlı olan kullanıcının haklarının izin verdiği tüm haklarının izin verdiği tüm databaseleri gösterir.databaseleri gösterir.

Page 14: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Database seçmek Database seçmek için:için:

use <database adı>use <database adı>

Ör:Ör:

mysql> use cengdbmysql> use cengdb;;

Database changedDatabase changed

Database İçindeki Database İçindeki tableları görmek için:tableları görmek için:

show tables;show tables;

[ Veri tabanında veriler [ Veri tabanında veriler tablolar halinde tablolar halinde tutulur. ]tutulur. ]

Page 15: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL 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)

Page 16: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Tabloyu Analiz etmek: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>

Page 17: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Tabloyu optimize etmek: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>

Page 18: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Tabloyu Onarmak: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>

Page 19: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Tabloyu kontrol etmek: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>

Page 20: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

MySQL ile ısınma hareketleriMySQL ile ısınma hareketleri

Database yaratma;Database yaratma;

create database <database adı>create database <database adı>

mysql> create database deneme;mysql> create database deneme;

Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)

Page 21: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Değişken tipleriDeğişken tipleri

TINYINT(M) -> Numerik tamsayılar için. -128, 127 arasında değer alabilir. TINYINT(M) -> Numerik tamsayılar için. -128, 127 arasında değer alabilir. UNSIGNED ifadesi kullanılabilir. UNSIGNED ifadesi kullanılabilir.

SMALLINT(M) -> Numerik tamsayilar için. -32768, 32767 arasında değer SMALLINT(M) -> Numerik tamsayilar için. -32768, 32767 arasında değer alabilir. UNSIGNED ifadesi kullanılabilir. alabilir. UNSIGNED ifadesi kullanılabilir.

MEDIUMINT(M) -> Numerik tamsayılar için. -8388608, 8388607 arasında MEDIUMINT(M) -> Numerik tamsayılar için. -8388608, 8388607 arasında deger alabilir. UNSIGNED ifadesi kullanılabilir. deger alabilir. UNSIGNED ifadesi kullanılabilir.

INT(M),INTEGER(M) -> Numerik tamsayılar için. -8388608, 8388607 INT(M),INTEGER(M) -> Numerik tamsayılar için. -8388608, 8388607 arasında değer alabilir. UNSIGNED ifadesi kullanılabilir. arasında değer alabilir. UNSIGNED ifadesi kullanılabilir.

BIGINT(M) -> Numerik tamsayilar için. -9223372036854775808, BIGINT(M) -> Numerik tamsayilar için. -9223372036854775808, 9223372036854775807 arasında değer alabilir. 9223372036854775807 arasında değer alabilir.

FLOAT((M)(D)) -> Üstel tamsayilar için. -3.402823466E+38, FLOAT((M)(D)) -> Üstel tamsayilar için. -3.402823466E+38, -1.175494351E-38 arasında değer alabilir.-1.175494351E-38 arasında değer alabilir.

Page 22: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Değişken tipleriDeğişken tipleri

DOUBLE((M)(D)) -> Üstel tamsayılar için. DOUBLE((M)(D)) -> Üstel tamsayılar için. -1.7976931348623157E+308, -2.2250738585072014E-308 arasında -1.7976931348623157E+308, -2.2250738585072014E-308 arasında değer alabilir. değer alabilir.

DECIMAL((M)(D)) -> Noktalı sayilar için. DECIMAL((M)(D)) -> Noktalı sayilar için.

DATE -> Tarih formatlı veri için. 'YYYY-MM-DD' formundadır. DATE -> Tarih formatlı veri için. 'YYYY-MM-DD' formundadır.

DATETIME -> Tarih-saat formatlı veri için. 'YYYY-MM-DD HH:MM:SS' DATETIME -> Tarih-saat formatlı veri için. 'YYYY-MM-DD HH:MM:SS' formundadır. formundadır.

TIMESTAMP -> Özel tarih-saat formatlı veri için. TIMESTAMP -> Özel tarih-saat formatlı veri için.

TIME -> Zaman formatlı veri için. 'HH:MM:SS' formundadır.TIME -> Zaman formatlı veri için. 'HH:MM:SS' formundadır.

Page 23: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Değişken tipleriDeğişken tipleri

YEAR(2|4) -> 2 yada 4 dijitli yıl değeri tutan tarih formatı. YEAR(2|4) -> 2 yada 4 dijitli yıl değeri tutan tarih formatı. 'YYYY' veya 'YY' formundadır. 'YYYY' veya 'YY' formundadır.

CHAR(M) -> Sabit uzunluklu karakter dizisi için. 1-255 CHAR(M) -> Sabit uzunluklu karakter dizisi için. 1-255 arasinda karakter tutabilir. arasinda karakter tutabilir.

VARCHAR(M) -> Değişken uzunluklu karakter dizisi için. 1-VARCHAR(M) -> Değişken uzunluklu karakter dizisi için. 1-255 arasında karakter tutabilir.255 arasında karakter tutabilir.

Page 24: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Değişken tipleriDeğişken tipleri

TEXT -> Değişken uzunluklu karakter dizisi için. 1-65535 TEXT -> Değişken uzunluklu karakter dizisi için. 1-65535 arasında karakter tutabilir. arasında karakter tutabilir.

MEDIUMTEXT -> Değişken uzunluklu karakter dizisi için. 1-MEDIUMTEXT -> Değişken uzunluklu karakter dizisi için. 1-16777215 arasında karakter tutabilir. 16777215 arasında karakter tutabilir.

LONGTEXT -> Değişken uzunluklu karakter dizisi için. 1-LONGTEXT -> Değişken uzunluklu karakter dizisi için. 1-4294967295 arasında karakter tutabilir. 4294967295 arasında karakter tutabilir.

ENUM('deger1'..) -> Kullanıcının belirttiği anahtarları tutar. ENUM('deger1'..) -> Kullanıcının belirttiği anahtarları tutar. Anahtar 65535'e kadar olabilir. Anahtar 65535'e kadar olabilir.

Page 25: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Table YaratmaTable Yaratma

create table <table adı> (degiskenler)create table <table adı> (degiskenler)

CREATE TABLE `tablom` (`id` INT NOT NULL AUTO_INCREMENT, `isim` VARCHAR(25) NOT NULL, `soyisim` VARCHAR(50) NOT NULL,INDEX (`id`),UNIQUE (`id`));

Page 26: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Alanların Özelliklerini görmeAlanları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)

Page 27: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Alan özellikleri değiştirmeAlan özellikleri değiştirmeALTER 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)

Page 28: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Tabloya Veri eklemek ve ekli Tabloya Veri eklemek ve ekli verileri görmekverileri görmek

INSERT INTO `tablom` (`id`, `isim`, `soyisim`)

VALUES ('1', 'çağlar','ülküderner'); mysql> select * from tablom;+----+--------+------------+| id | isim | soyisim |+----+--------+------------+| 1 | çağlar | ülküderner |+----+--------+------------+1 row in set (0.00 sec)

Page 29: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Veri eklemekVeri eklemekINSERT INTO `tablom`

(`id`, `isim`, `soyisim`)

VALUES ('', 'doruk', 'fişek'); mysql> select * from tablom;+----+--------+------------+| id | isim | soyisim |+----+--------+------------+| 1 | çağlar | ülküderner || 2 | doruk | fişek |+----+--------+------------+2 rows in set (0.00 sec)

Page 30: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Belirli alanları taramaBelirli alanları tarama

mysql> select * from `tablom` where `isim`='doruk';

+----+-------+---------+| id | isim | soyisim |+----+-------+---------+| 2 | doruk | fişek |+----+-------+---------+1 row in set (0.00 sec)

Page 31: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Yanlış girilenlerin düzeltilmesiYanlış girilenlerin düzeltilmesi

UPDATE `tablom` SET `isim` = 'çağlar 2' WHERE `id` = '1' LIMIT 1;

mysql> select * from tablom;+----+----------+------------+| id | isim | soyisim |+----+----------+------------+| 1 | çağlar2 | ülküderner || 2 | doruk | fişek |+----+----------+------------+2 rows in set (0.00 sec)

Page 32: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Distinct ile teke indirgenen seçimlerDistinct 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)

Page 33: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Distinct ile indirgenen seçimlerDistinct 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)

Page 34: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Distinct ile indirgenen seçimlerDistinct 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)

Page 35: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Having ile koşula bağlı seçimHaving ile koşula bağlı seçim

mysql> SELECT * FROM `tablom` having`id`>1;

+------------+---------+| id | isim | soyisim |+----+-------+---------+| 2 | doruk | fişek |+----+-------+---------+1 row in set (0.00 sec)

Page 36: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Where kullanımıWhere kullanımı

mysql> select * from tablom where id=1;

+----+--------+------------+| id | isim | soyisim |+----+--------+------------+| 1 | çağlar | ülküderner |+----+--------+------------+1 row in set (0.00 sec)

Page 37: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Having + Where kullanımıHaving + Where kullanımı

mysql> SELECT * FROM `tablom` where `id`>0 having `isim`='doruk';

+----+-------+---------+| id | isim | soyisim |+----+-------+---------+| 2 | doruk | fişek |+----+-------+---------+1 row in set (0.00 sec)

Page 38: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Select biraz daha..Select biraz daha..

mysql> select * from tablom where id between 0 and 3;

+----+--------+------------+| id | isim | soyisim |+----+--------+------------+| 1 | çağlar | ülküderner || 2 | doruk | fişek |+----+--------+------------+2 rows in set (0.01 sec)

Page 39: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Biraz da gerekebilir String Biraz da gerekebilir String fonksiyonlarıfonksiyonlarıLike değimi'_' karakteri => herhangi bir karakter '%' karakteri => herhangi bir karakter dizisi SELECT 'çağlar' LIKE 'çağ%'1SELECT 'çağlar' LIKE 'çağ__‘0NOT: \ (escape karakteri)

Page 40: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Biraz da gerekebilir String Biraz da gerekebilir String fonksiyonlarıfonksiyonları

' STRCMP ' İFADESİ STRCMP ( kelime1, kelime2 ) Kelime1 ile Kelime2 aynı ise 0, Kelime1 Kelime2'den alafabetik 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

Page 41: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Biraz da gerekebilir String Biraz da gerekebilir String fonksiyonlarıfonksiyonları

' BINARY ' İFADESİ

SELECT "a"="A"; =>1

SELECT BINARY "a"="A"; =>0

Page 42: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

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 tabanli 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 degerlerini 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.

Page 43: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Matematiksel ifadelerMatematiksel 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.

Page 44: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Matematiksel FonksiyonlarMatematiksel 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.

Page 45: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

Tarih – Saat fonksiyonlarıTarih – Saat fonksiyonları

DAYOFWEEK(tarih) => YYYY - MM - DD formudaki tarih'in, ODBC standardinda 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) => Dakikayi bulur. SECOND(zaman) => Saniyeyi bulur.

Page 46: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

DATE_FORMAT

%M : Ay adi ( January, December ) %W : Gun adi ( Sunday, Saturay ) %D : Gun degeri ve eki ( 1st, 2nd ) %Y : Yil degeri , 4 dijit ( 1993 ) %y : Yil degeri , 2 dijit ( 93 ) %a : Kisaltilmis gun adi ( Sun, Sat ) %d : Gun degeri , 2 dijit ( 00 , 31 ) %e : Gun degeri ( 0 , 31 ) %m : Ay degeri , 2 dijit ( 01 , 12 )%c : Ay degeri ( 1 , 12 ) %b : Kisaltilmis ay adi ( Jan , Dec ) %j : Yilin gun sayisi ( 001 , 366 ) %H : Saat , 2 dijit ( 00 , 23 )

%k : Saat ( 0 , 23 ) %h : Saat , 2 dijit ( 01 , 12 ) %l : Saat ( 1 , 12 ) %i : Dakika ( 00 , 59 ) %r : Zaman , 12 saatlik ( hh : mm : ss

[AP] M ) %T : Zaman , 24 saatlik ( hh : mm : ss ) %S : Saniye ( 00 , 59 ) %p : AM yada PM %w : Haftanin kacinci gunu oldugu

( 0=Sunday , 6=Saturday ) %U : Yilin kacinci haftasi oldugu

( Sunday haftanin birinci gunu ) %u : Yilin kacinci haftasi oldugu

( Monday haftanin birinci gunu ) %% : Sadece ' % ' karakteri

Page 47: SQL’e GİRİŞ - Seminer Çalışmaları · Peki SQL Nedir? Structured Query Language Database yönetimi için bir programlama standartı. ANSI ve ISO standartlarında ve bir çok

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