## NULL Değerleri ve Kullanımı
MySQL’de `NULL`, bir sütunda değer olmadığını veya bilinmediğini belirtmek için kullanılır. `NULL`, boş bir string (`””`) veya sıfır (`0`) değerinden farklıdır. Bu bölümde, `NULL` değerlerinin nasıl kullanıldığını ve nasıl test edildiğini inceleyeceğiz.
### 1. **NULL Değerlerinin Kullanım Alanları**
– **Henüz bilinmeyen veriler:** Örneğin, bir projenin bitiş tarihi (`end_date`) henüz belirlenmemiş olabilir.
– **Opsiyonel veriler:** Örneğin, bir kullanıcının ikinci adı (`middle_initial`) olmayabilir. Bu durumda `NULL` kullanılabilir.
– **Matematiksel hesaplamalar:** Örneğin, sıfırın sıfıra bölünmesi gibi geçersiz hesaplamalar `NULL` ile temsil edilir.
**Örnek:**
“`sql
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
middle_initial CHAR(1) NULL
);
“`
Bu örnekte, `middle_initial` sütunu opsiyonel olduğu için `NULL` değer alabilir.
### 2. **NULL Değerlerini Test Etme**
`NULL` değerlerini test etmek için `IS NULL` ve `IS NOT NULL` ifadeleri kullanılır. `=` operatörü `NULL` değerlerini test etmek için kullanılmaz.
**Örnek Kullanım:**
“`sql
SELECT * FROM users WHERE middle_initial IS NULL;
“`
Bu sorgu, `middle_initial` sütunu `NULL` olan tüm kullanıcıları getirecektir.
**NULL Güvenli Karşılaştırma:**
“`sql
SELECT * FROM users WHERE middle_initial <=> NULL;
“`
Bu sorgu da `middle_initial` sütunu `NULL` olan kullanıcıları getirecektir. `<=>` operatörü, `NULL` değerlerini güvenli bir şekilde karşılaştırmak için kullanılır.
### 3. **LEFT JOIN ile NULL Kullanımı**
`LEFT JOIN` işlemlerinde, bir tablodaki kayıtların diğer tabloda karşılığı olup olmadığını kontrol etmek için `NULL` kullanılabilir.
**Örnek Kullanım:**
“`sql
SELECT a.*
FROM table_a a
LEFT JOIN table_b b ON a.id = b.id
WHERE b.id IS NULL;
“`
Bu sorgu, `table_a` tablosundaki `id` değerlerinin `table_b` tablosunda karşılığı olmayan kayıtları getirecektir.
—
## LIMIT ve OFFSET Kullanımı
`LIMIT` ve `OFFSET` ifadeleri, sorgu sonuçlarını sınırlamak ve belirli bir kayıttan başlayarak sonuçları getirmek için kullanılır. Bu, özellikle sayfalama (pagination) işlemlerinde kullanışlıdır.
### 1. **LIMIT ile Sonuçları Sınırlama**
`LIMIT` ifadesi, sorgu sonuçlarının kaç satır döneceğini belirler.
**Örnek Kullanım:**
“`sql
SELECT * FROM users ORDER BY id ASC LIMIT 2;
“`
Bu sorgu, `users` tablosundaki ilk 2 kaydı getirecektir.
### 2. **LIMIT ve OFFSET ile Sayfalama**
`LIMIT` ve `OFFSET` birlikte kullanılarak, belirli bir kayıttan başlayarak sonuçlar getirilebilir.
**Örnek Kullanım:**
“`sql
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 2;
“`
Bu sorgu, ilk 2 kaydı atlayıp sonraki 2 kaydı getirecektir. Yani, 3. ve 4. kayıtlar dönecektir.
**Alternatif Sözdizimi:**
“`sql
SELECT * FROM users ORDER BY id ASC LIMIT 2, 2;
“`
Bu sorgu da aynı sonucu verecektir. İlk sayı offset, ikinci sayı ise limit değerini belirtir.
—
## Veritabanı ve Kullanıcı Oluşturma
MySQL’de veritabanı ve kullanıcı oluşturmak, veritabanı yönetiminin temel adımlarındandır. Bu bölümde, veritabanı ve kullanıcı oluşturma işlemlerini inceleyeceğiz.
### 1. **Veritabanı Oluşturma**
Yeni bir veritabanı oluşturmak için `CREATE DATABASE` komutu kullanılır.
**Örnek Kullanım:**
“`sql
CREATE DATABASE Baseball;
“`
Eğer veritabanı zaten varsa, hata almamak için `IF NOT EXISTS` ifadesi kullanılabilir:
“`sql
CREATE DATABASE IF NOT EXISTS Baseball;
“`
### 2. **Kullanıcı Oluşturma ve İzin Verme**
Yeni bir kullanıcı oluşturmak için `CREATE USER` komutu kullanılır. Daha sonra bu kullanıcıya belirli veritabanları üzerinde izinler verilebilir.
**Örnek Kullanım:**
“`sql
CREATE USER ‘John123’@’%’ IDENTIFIED BY ‘OpenSesame’;
“`
Bu komut, `John123` adında bir kullanıcı oluşturacak ve bu kullanıcıya herhangi bir yerden bağlanma izni verecektir.
**İzin Verme:**
“`sql
GRANT ALL ON Baseball.* TO ‘John123’@’%’;
“`
Bu komut, `John123` kullanıcısına `Baseball` veritabanındaki tüm tablolar üzerinde tüm izinleri verecektir.
—
Bu bilgilerle, MySQL’de `NULL` değerlerini, `LIMIT` ve `OFFSET` kullanımını, veritabanı ve kullanıcı oluşturma işlemlerini daha iyi anlayabilirsiniz. Bir sonraki yazıda, JOIN’ler ve alt sorgular gibi daha gelişmiş SQL konularına değineceğiz.
—