Alt Sorgular

Alt Sorgular

MySQL veri tabanında farklı veri tipleri kullanılarak veriler saklanabilir Bu veri tipleri üç ana kategoriye ayrılır: Numeric, String ve Date and Time Numeric veri tipleri tamsayı, ondalık sayı ve para birimi verilerini saklamak için kullanılırken, String veri tipleri karakter dizisi verilerini saklamak için kullanılır Date and Time veri tipleri ise tarih ve zaman verilerini saklar Boolean veri tipi de mevcuttur ve MySQL bunu TINYINT1 tipinde saklar Veri tabanı tasarlarken doğru veri tipi seçmek için verilerin doğasını ve kullanımlarını dikkate almak önemlidir Sayısal verileri saklarken INT, FLOAT, DECIMAL veri tipleri kullanılırken, String türü verileri saklamak için VARCHAR, CHAR, TEXT veri tipleri kullanılır Date and time veri tipleri ise DATETIME ve TIMESTAMP şeklinde saklanır Tarih ve saat bilgilerini saklamak için DATE, TIME ve DATETIME veri tipleri kullanılırken, TIMESTAMP ve YEAR veri tipleri de desteklenir Ver

Alt Sorgular

MySQL veri tabanı, farklı veri tiplerini saklayabilir. Veri tipleri, verilerin türüne göre ayarlanır ve veriler hatalardan korunmak için saklanır. Bu nedenle, veri tabanları için doğru ve uygun veri tipi seçmek çok önemlidir.

Veri tipleri, üç ana kategoriye ayrılır: Numeric, String ve Date and Time. Numeric veri tipleri, tamsayı, ondalık sayı ve para birimi verilerini saklamak için kullanılır. String veri tipleri, karakter dizisi verilerini saklamak için kullanılır. Date and Time veri tipleri, tarih ve zaman verilerini saklar.

Bunların yanı sıra, Boolean veri tipi de mevcuttur, ancak MySQL bunu TINYINT(1) tipinde saklar. Bu tip, doğru veya yanlış verileri saklamak için kullanılır.

Veri tabanı tasarlarken, doğru veri tipi seçmek için verilerin doğasını ve kullanımlarını dikkate almak önemlidir. Sayısal verileri saklarken INT, FLOAT, DECIMAL veri tipleri kullanılır. String türü verileri saklamak için VARCHAR, CHAR, TEXT veri tipleri kullanılır. Date and time veri tipleri ise DATETIME ve TIMESTAMP şeklinde saklanır.


Numeric

Numeric Veri Tipleri

MySQL veri tabanı, farklı sayısal veri tiplerini saklayabilir ve işleyebilir. Tamsayı veri tipleri, ondalık sayı veri tipleri ve para birimi veri tipleri gibi farklı sayısal veri tipleri vardır.

  • Tamsayı Veri Tipleri: MySQL veri tabanı, tamsayıları (integer) işlemek için kullanılan veri tiplerine sahiptir. Bu veri tipleri, küçük veya büyük tamsayıları tutabilir. Kullanılan tamsayı veri tipleri: TINYINT, SMALLINT, MEDIUMINT, INT, ve BIGINT.
  • Ondalık Sayı Veri Tipleri: MySQL veri tabanı, ondalık sayıları işlemek için FLOAT, DOUBLE, DECIMAL veri tiplerini kullanır. Bu veri tipleri, ondalık sayı değerleri tutabilir ve matematiksel işlemler gerçekleştirilebilir.
  • Para Birimi Veri Tipi: Para birimi değerlerini saklamak için DECIMAL veri tipi kullanılır. Bu veri tipi, finansal değerleri saklamak ve işlemek için kullanışlıdır.
Tamsayı Veri Tipleri Ondalık Sayı Veri Tipleri Para Birimi Veri Tipi
TINYINT FLOAT DECIMAL
SMALLINT DOUBLE
MEDIUMINT DECIMAL
INT
BIGINT

Yukarıda belirtilen veri tipleri, çalışan bir web sitesi için çok değerlidir ve herhangi bir veritabanı yapısında sıkça kullanılmaktadırlar. Tamsayı veri tipleri, web sayfalarındaki sayfa gösterimleri, sipariş numaraları gibi sayısal veri tutmak için kullanılabilmektedir. Aynı zamanda, ondalık sayı veri tipleri, fiyatlar veya oranlar gibi hassas sayısal verilerin manipüle edilmesi için kullanılır.


String

MySQL veri tipleri arasında en sık kullanılanlardan biri de String (karakter dizisi) veri tipidir. String veri tipi, metinsel bilgilerin saklanmasında kullanılır. Örneğin, veritabanında kullanıcı adları, şifreler, isimler, adresler ve açıklamalar gibi metinsel veriler kaydedilir.

MySQL'de String verileri iki şekilde saklanabilir: CHAR ve VARCHAR. CHAR, sabit boyutlu bir veri tipidir ve belirtilen uzunluğa kadar tamamen doldurulur. VARCHAR ise değişken boyutlu bir veri tipidir ve belirtilen uzunluğa kadar veri alır. Dolayısıyla, CHAR yerine VARCHAR kullanmak veritabanı alanında tasarruf etmenize yardımcı olabilir.

CHARVARCHAR
Sabit boyutluDeğişken boyutlu
Boyutu belirtilirBoyutu belirtilir
Veri alanının tamamı tutulurSadece veri kadar alan tutulur

String veriler, veritabanı sorgularında sıklıkla kullanılır. Örneğin, kullanıcı adlarına dayalı bir arama yapmak istediğinizde, WHERE kullanıcı_adı = 'JohnDoe' gibi bir SQL sorgusu yazabilirsiniz. Yalnızca karakter dizileri değil, aynı zamanda sayısal değerler de karakter dizisine dönüştürülerek saklanabilir. Bu, bir sayısal değeri bir diğer formatta göstermek veya özel karakterlerle birleştirmek istediğinizde faydalı olabilir.

String veri tiplerinin yanı sıra, MySQL'de Blob ve Text veri tipleri de metinlerin saklanması için kullanılabilir. Blob veri tipi, büyük binary objelerin (görüntüler, sesler, videolar vb.) depolanmasında kullanılırken, Text veri tipi daha büyük boyutlu metinlerin saklanmasına izin verir. Blob ve Text veri tipleri CHAR veya VARCHAR gibi karakter tabanlı değildir, ancak veritabanlarındaki en yaygın metin tabanlı veri tipleri arasındadır.


Date and Time

Tarihin ve zamanın veri tabanında doğru bir şekilde saklanması, birçok uygulamada önemlidir. MySQL, doğru bir şekilde tarih ve zaman verilerini saklamak için çeşitli veri tiplerini destekler. En yaygın kullanılan veri tipleri DATE, TIME ve DATETIME'dir.

DATE veri tipi, yalnızca yıl, ay ve gün bilgilerini saklamak için kullanılır. Herhangi bir saat bilgisi içermez. TIME veri tipi, yalnızca saat, dakika ve saniye gibi zaman bilgilerini saklar. DATETIME veri tipi ise hem tarih hem de zaman bilgilerini içerir ve en yaygın kullanılan veri tipidir.

Bunun yanı sıra, MySQL ayrıca bazı diğer tarih ve saat veri tipleri de destekler. TIMESTAMP veri tipi, bir olayın zaman damgasını saklar ve sadece belirli bir aralıktaki tarih ve saatleri destekler. YEAR veri tipi yalnızca yıl bilgilerini saklar.

Tarih ve zaman verileri saklarken, zaman dilimi de dikkate alınmalıdır. MySQL, birçok zaman dilimini destekler ve kullanıcıların yerel saat dilimine göre tarih ve zaman bilgilerini görüntülemesine olanak tanır.

Bazı durumlarda, bir uygulama belirli bir tarih ve saat formatını kullanmak zorunda kalabilir. Örneğin, bir uçuş rezervasyon sistemi her zaman UTC formatını kullanabilir. Bu durumda, kullanıcıların tarih ve saat bilgilerini UTC formatta girmesi gerekebilir.

MySQL, tarih ve zaman verilerinin ve zaman dilimlerinin doğru bir şekilde saklanmasını sağlar ve kullanıcıların uygulamalarında bu verileri kullanmalarını kolaylaştırır.

Sınırlamalar, veri tabanlarının düzenlenmesi ve kontrol edilmesi için kilit bir özelliktir. Bu özellik, veri bütünlüğünün korunmasına yardımcı olur. Veri tabanlarındaki sınırlamalar, verilerin doğru şekilde kaydedilmesine, veri hatalarının önlenmesine, veri bütünlüğünün korunmasına ve diğer benzer görevlere yardımcı olur.

Veri tabanı sınırlamaları, tablolarda ve veritabanlarındaki tutarlılık ve uygunluklarını sağlamak için kullanılır. Bunun yanı sıra, sınırlamalar, veri kaydı sırasında hataların tespit edilmesine yardımcı olan olası yanlış girişleri önlemek için de kullanılmaktadırlar.

Primary Key bir tablodaki verileri benzersiz olarak tanımlayan bir sınırlamadır. Bu özellik, bir tablonun her bir kaydını tanımlamak için kullanılır ve birincil anahtarı tanımlamak, bir veritabanının veri bütünlüğünü sağlamaya yardımcı olur. Birincil anahtarlar genellikle tek bir sütunda tanımlanır ve verilerin yeniden düzenlenmesi veya yeniden yapılandırılması durumunda kullanılmaktadırlar.

Foreign key (yabancı anahtar), bir veritabanındaki verileri birbiriyle ilişkilendirmek amacıyla kullanılan bir diğer sınırlamadır. Bu özellik, iki tablo arasındaki benzersiz ilişkileri belirlemek için kullanılır ve bir tablodaki bir sütunun birincil anahtarla eşleştirilmesiyle ilişkilendirilir. Yabancı anahtarlar, bir veritabanında verilerin uygunluğunu sağlama, veri uyumsuzluklarının önlenmesi ve diğer benzer amaçlar için kullanılmaktadırlar.


Primary Key

MySQL veri tabanında, bir tabloya ait her kaydın benzersiz ve tek bir anahtar değere sahip olması istenirse primary key kullanılır. Primary key, bir tablodaki her bir kaydın tanımlanmasında kullanılan eşsiz bir anahtar değerdir. Primary key, tablodaki kayıtların bütünlüğünü korumak için önemlidir.

Primary key kullanımı, veri tabanındaki tutarsızlıkları ve veri kaybını önler. Ayrıca, primary key ile birbirine bağlı olan tablolar arasındaki veri bağlantısı güçlendirilir. Veri eklerken, primary key sayesinde tekil kayıtların eklenmesi sağlanır. Primary key olarak belirlenen sütunlara, aynı değeri iki kere eklemek mümkün değildir, bu da veri kaynağının bütünlüğünü korur.

Primary key veri tabanında kullanılan en önemli sınırlamalardan biridir. Kendini diğer veri tiplerinden ayıran en önemli özelliklerinden biri, NULL olarak tanımlanamamasıdır. Primary key, bir tablodaki tekil kayıtları tanımlayan anahtardır. Bu nedenle, kayıtların eşsiz bir şekilde tanımlanabildiği veri tabanlarına sahip olmak için primary key kullanımı çok önemlidir.


Foreign Key

Foreign key, bir ilişkisel veritabanı modelinde, bir tablodaki bir sütunun başka bir tablonun anahtar sütununa referans olmasıdır. Yani bir tablodaki sütun, başka bir tablonun birincil anahtar sütunu ile eşleşir ve bu sayede iki tablo arasında bir ilişki kurulur. Bu ilişki, referans olarak alınan anahtar sütunun değerleriyle, diğer tablonun aynı sütunundaki değerler arasında bir bağlantı kurar.

Foreign key kullanımının en önemli avantajlarından biri, referans edilen sütundaki değerlerin bütünlüğünü korumasıdır. Yani bir tablodaki bir kaydın, referans edilen anahtar sütun değeri olmadan silinmesi veya değiştirilmesi mümkün değildir. Çünkü bu durumda, bağlantı ile ilişkili olan diğer tablonun verileri etkilenecektir. Dolayısıyla, foreign key kullanımı veri bütünlüğü açısından büyük bir önem taşır.

Bunun yanı sıra, foreign key kullanımı, veriler arasında referansların kurulmasına olanak tanır. Özellikle birden fazla tablonun bulunduğu karmaşık veri yapılarında, foreign key kullanarak tablolar arasında kolayca ilişki kurulması mümkündür. Bu da veritabanının anlaşılabilirliğini ve yönetilebilirliğini arttırır.

MySQL veri tabanı sorguları yaparken alt sorgular kullanmak oldukça faydalıdır. Alt sorgular bir sorgunun içine yerleştirilen bir sorgudur. Bu sorguları kullanarak, veri tabanınızda daha karmaşık sorgular yapabilir, farklı veri kümeleri arasındaki bağlantıları keşfedebilirsiniz. Özellikle, veri tabanınızda birden fazla tablo varsa alt sorguları kullanmak oldukça yararlıdır.

Alt sorgular, bir sorgunun içinde yer alan bir sorgudur. Bu sorgular, bir veri kümesindeki herhangi bir öğeyi seçmek, bir öğeyi diğerine bağlamak veya farklı kümeler arasındaki bağlantıları bulmak için kullanılabilir. Alt sorgular büyük bir veri kümesindeki doğru verileri bulmak için kullanılabilir.

Tek satırlık alt sorgular, yalnızca bir satırı döndüren alt sorgulardır. Bu alt sorgular, sorgunun WHERE, HAVING veya SELECT bölümlerinde kullanılabilir. Single-row subqueries, sorgunuzun belirli bir koşulu karşıladığından emin olmak için kullanılabilir.

Çoklu satırlık alt sorgular, birden fazla kayıt döndüren alt sorgulardır. Bu tip alt sorgular, IN, ANY ve ALL operatörleri gibi komutlarla birlikte kullanılabilir. Örneğin, bir müşteri veritabanınız varsa birçok farklı sipariş yapmış olabilirler. Çoklu satırlık alt sorgular, müşterinin hangi siparişleri yaptığını bulmak için kullanılabilir.


Subqueries Nedir?

Alt sorgular, büyük veritabanlarındaki verilerin karmaşıklığını azaltmak için kullanılan sorgu yöntemleridir. Alt sorgular, bir sorgu içersinde başka bir sorguyu yerleştirmek suretiyle bir ilişki oluştururlar. Bu sayede, veriler daha organize edilebilir ve yönetilebilir hale gelir.

Alt sorgular çoğu zaman daha az karmaşıklık içerirler ve ana sorgudan daha fazla ayrıntı içerirler. Örneğin, bir tablodan belirli bir veri kümesi üzerinde uygulanacak olan bir sorgu daha önce bir tablodan diğer bir tabloya veri aktarmış olan bir sorgudur.

Bir alt sorgunun amacı, verileri daha küçük parçalara ayırmak ve her bir parçayı daha kolay yönetebilmektir. Örneğin, bir tabloda bir kullanıcının adı ve soyadı bulunurken, bu kullanıcının e-posta adresi veya telefon numarası başka bir tabloda yer alıyor olabilir. Alt sorguların kullanımı ile tüm bu veriler bir araya getirilebilir ve daha kolay yönetilebilir hale getirilebilir.

Alt sorguların kullanımı, SQL sorgularının daha verimli şekilde çalışmasına olanak tanır. Bu sorgular çoklu satırların veya tek satırların bir arada kullandığı pek çok veri yönetimi işleminde kullanılabilirler. Ancak, alt sorguların karmaşık bir sorgu yapısına sahip olması nedeniyle, özellikle büyük veri setlerinin üzerinde çalışırken, performans sorunları oluşabilir.

Özetle, alt sorgular veri yönetiminde çok önemlidir. Doğru şekilde kullanılırlarsa, veri tabanlarının organize edilmesi ve verilerin daha etkin bir şekilde işlenmesi için çok önemli bir araç haline gelirler. Ancak, doğru şekilde kullanılmadıklarında, alt sorgular veri yönetimi işlemlerinin performansını olumsuz etkileyebilirler.


Single-Row Subqueries

Tek satırlık alt sorgular bir satırı döndüren sorgulardır ve genellikle bir WHERE veya HAVING dizesinde kullanılır. Bir örnek senaryoda, müşteriler tablosundan müşteri adı ve ürünleri tablosunda stokta olan bir ürünün fiyatı alınabilir. Bunun için, müşteri adı ve ürün fiyatı kriterleri tek bir sorguda birleştirilir. Örneğin:

SELECT customer_name FROM customers WHERE customer_id = (SELECT customer_id FROM orders WHERE product_id = 'product_A1')

Bu örnekte, müşteriler tablosuna gidilir ve belirtilen ürün A1'in satın alma siparişlerinde gösterildiği müşterilerin adları alınır. Öncelikle WHERE şartı, orders tablosundaki product_id'nin 'product_A1' olması koşulunu belirtir. Bu koşul gelen kaydı müşteri Tablosunun customer_id sütununda benzersiz olarak arar. Bu tek satırlık alt sorgulardaki anahtar kelime genellikle WHERE veya HAVING şartını belirlemek için kullanılır. Bir diğer senaryoda, müşteriler tablosundan belirli bir bölgeye ait müşterilerin adlarını ve bölgelerini alalım. Şöyle bir sorgu kullanabiliriz:

SELECT customer_name, customer_region FROM customers WHERE customer_region = (SELECT region_name FROM regions WHERE region_id= 'region_A')

Bu sorguda, müşteriler tablosu ve bölge tablosu birleştirilir ve müşterilerin belirli bir bölgede olup olmadığı kontrol edilir. Tek satırlık alt sorgu içinde, kaydın belirtilen bölgedeki bir kayda sahip olduğu belirtilir. Bu sorgularda, dış sorgu içindeki WHERE şartının, tek satırlık alt sorgudaki SELECT ifadesine bağlı olarak hareket ettiğine dikkat edilmelidir.

Multiple-Row Subqueries

Çoklu satırlık alt sorgular, alt sorgunun bir sekmede birden fazla veri döndürmesine izin verir. Bu, ana sorgunuzu daha karmaşık hale getirse de, çoklu satırlık alt sorgular, herhangi bir yordamı gerçekleştirmek için bir dizi veriye ihtiyacınız olduğunda kullanışlıdır.

Bir örnek olarak, aşağıdaki SQL sorgusundan faydalanalım:

```SELECT *FROM customersWHERE country IN ( SELECT country FROM customers GROUP BY country HAVING COUNT(*) > 5)```

Bu sorgu, müşterilerin listesini ülke kodu ile filtreler, ancak sadece 6'dan fazla müşterisi olan ülkeleri filtreler. Alt sorgu, müşteri sayısını hesaplamak üzere kullanılır ve ana sorguda kullanılan 'IN' ifadesi, alt sorgunun dönüştürdüğü sonuçları kullanarak ana sorgunun sonuçlarını filtreler.

Başka bir örnek olarak, aşağıdaki SQL sorgusundan faydalanalım:

```SELECT *FROM ordersWHERE order_date IN ( SELECT order_date FROM orders GROUP BY order_date HAVING COUNT(*) > 1)```

Bu sorgu, siparişlerin listesini tarih ile filtreler, ancak sadece aynı tarihte birden fazla siparişi olan tarihleri filtreler. Alt sorgu, sipariş tarihlerinin sayısını hesaplamak üzere kullanılır ve ana sorguda kullanılan 'IN' ifadesi, alt sorgunun dönüştürdüğü sonuçları kullanarak ana sorgunun sonuçlarını filtreler.

Çoklu satırlık alt sorgular, SQL sorgularınızı daha karmaşık hale getiren, ancak daha düzenli ve okunaklı sonuçlar elde etmenizi sağlayan kullanışlı araçlardır.