{"id":218,"title":"SQL Notlar\u0131: `NULL` de\u011ferlerini, `LIMIT` ve `OFFSET` kullan\u0131m\u0131","content":"<p>## NULL De\u011ferleri ve Kullan\u0131m\u0131<\/p><p>MySQL'de `NULL`, bir s\u00fctunda de\u011fer olmad\u0131\u011f\u0131n\u0131 veya bilinmedi\u011fini belirtmek i\u00e7in kullan\u0131l\u0131r. `NULL`, bo\u015f bir string (`\"\"`) veya s\u0131f\u0131r (`0`) de\u011ferinden farkl\u0131d\u0131r. Bu b\u00f6l\u00fcmde, `NULL` de\u011ferlerinin nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ve nas\u0131l test edildi\u011fini inceleyece\u011fiz.<\/p><p>### 1. **NULL De\u011ferlerinin Kullan\u0131m Alanlar\u0131**<\/p><p>- **Hen\u00fcz bilinmeyen veriler:** \u00d6rne\u011fin, bir projenin biti\u015f tarihi (`end_date`) hen\u00fcz belirlenmemi\u015f olabilir.<br>- **Opsiyonel veriler:** \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n ikinci ad\u0131 (`middle_initial`) olmayabilir. Bu durumda `NULL` kullan\u0131labilir.<br>- **Matematiksel hesaplamalar:** \u00d6rne\u011fin, s\u0131f\u0131r\u0131n s\u0131f\u0131ra b\u00f6l\u00fcnmesi gibi ge\u00e7ersiz hesaplamalar `NULL` ile temsil edilir.<\/p><p>**\u00d6rnek:**<br>```sql<br>CREATE TABLE users (<br>&nbsp; &nbsp;id INT PRIMARY KEY,<br>&nbsp; &nbsp;username VARCHAR(50) NOT NULL,<br>&nbsp; &nbsp;middle_initial CHAR(1) NULL<br>);<br>```<\/p><p>Bu \u00f6rnekte, `middle_initial` s\u00fctunu opsiyonel oldu\u011fu i\u00e7in `NULL` de\u011fer alabilir.<\/p><p>### 2. **NULL De\u011ferlerini Test Etme**<\/p><p>`NULL` de\u011ferlerini test etmek i\u00e7in `IS NULL` ve `IS NOT NULL` ifadeleri kullan\u0131l\u0131r. `=` operat\u00f6r\u00fc `NULL` de\u011ferlerini test etmek i\u00e7in kullan\u0131lmaz.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>SELECT * FROM users WHERE middle_initial IS NULL;<br>```<\/p><p>Bu sorgu, `middle_initial` s\u00fctunu `NULL` olan t\u00fcm kullan\u0131c\u0131lar\u0131 getirecektir.<\/p><p>**NULL G\u00fcvenli Kar\u015f\u0131la\u015ft\u0131rma:**<br>```sql<br>SELECT * FROM users WHERE middle_initial &lt;=&gt; NULL;<br>```<\/p><p>Bu sorgu da `middle_initial` s\u00fctunu `NULL` olan kullan\u0131c\u0131lar\u0131 getirecektir. `&lt;=&gt;` operat\u00f6r\u00fc, `NULL` de\u011ferlerini g\u00fcvenli bir \u015fekilde kar\u015f\u0131la\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/p><p>### 3. **LEFT JOIN ile NULL Kullan\u0131m\u0131**<\/p><p>`LEFT JOIN` i\u015flemlerinde, bir tablodaki kay\u0131tlar\u0131n di\u011fer tabloda kar\u015f\u0131l\u0131\u011f\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in `NULL` kullan\u0131labilir.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>SELECT a.*<br>FROM table_a a<br>LEFT JOIN table_b b ON a.id = b.id<br>WHERE b.id IS NULL;<br>```<\/p><p>Bu sorgu, `table_a` tablosundaki `id` de\u011ferlerinin `table_b` tablosunda kar\u015f\u0131l\u0131\u011f\u0131 olmayan kay\u0131tlar\u0131 getirecektir.<\/p><p>---<\/p><p>## LIMIT ve OFFSET Kullan\u0131m\u0131<\/p><p>`LIMIT` ve `OFFSET` ifadeleri, sorgu sonu\u00e7lar\u0131n\u0131 s\u0131n\u0131rlamak ve belirli bir kay\u0131ttan ba\u015flayarak sonu\u00e7lar\u0131 getirmek i\u00e7in kullan\u0131l\u0131r. Bu, \u00f6zellikle sayfalama (pagination) i\u015flemlerinde kullan\u0131\u015fl\u0131d\u0131r.<\/p><p>### 1. **LIMIT ile Sonu\u00e7lar\u0131 S\u0131n\u0131rlama**<\/p><p>`LIMIT` ifadesi, sorgu sonu\u00e7lar\u0131n\u0131n ka\u00e7 sat\u0131r d\u00f6nece\u011fini belirler.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>SELECT * FROM users ORDER BY id ASC LIMIT 2;<br>```<\/p><p>Bu sorgu, `users` tablosundaki ilk 2 kayd\u0131 getirecektir.<\/p><p>### 2. **LIMIT ve OFFSET ile Sayfalama**<\/p><p>`LIMIT` ve `OFFSET` birlikte kullan\u0131larak, belirli bir kay\u0131ttan ba\u015flayarak sonu\u00e7lar getirilebilir.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 2;<br>```<\/p><p>Bu sorgu, ilk 2 kayd\u0131 atlay\u0131p sonraki 2 kayd\u0131 getirecektir. Yani, 3. ve 4. kay\u0131tlar d\u00f6necektir.<\/p><p>**Alternatif S\u00f6zdizimi:**<br>```sql<br>SELECT * FROM users ORDER BY id ASC LIMIT 2, 2;<br>```<\/p><p>Bu sorgu da ayn\u0131 sonucu verecektir. \u0130lk say\u0131 offset, ikinci say\u0131 ise limit de\u011ferini belirtir.<\/p><p>---<\/p><p>## Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma<\/p><p>MySQL'de veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturmak, veritaban\u0131 y\u00f6netiminin temel ad\u0131mlar\u0131ndand\u0131r. Bu b\u00f6l\u00fcmde, veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturma i\u015flemlerini inceleyece\u011fiz.<\/p><p>### 1. **Veritaban\u0131 Olu\u015fturma**<\/p><p>Yeni bir veritaban\u0131 olu\u015fturmak i\u00e7in `CREATE DATABASE` komutu kullan\u0131l\u0131r.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>CREATE DATABASE Baseball;<br>```<\/p><p>E\u011fer veritaban\u0131 zaten varsa, hata almamak i\u00e7in `IF NOT EXISTS` ifadesi kullan\u0131labilir:<br>```sql<br>CREATE DATABASE IF NOT EXISTS Baseball;<br>```<\/p><p>### 2. **Kullan\u0131c\u0131 Olu\u015fturma ve \u0130zin Verme**<\/p><p>Yeni bir kullan\u0131c\u0131 olu\u015fturmak i\u00e7in `CREATE USER` komutu kullan\u0131l\u0131r. Daha sonra bu kullan\u0131c\u0131ya belirli veritabanlar\u0131 \u00fczerinde izinler verilebilir.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>CREATE USER 'John123'@'%' IDENTIFIED BY 'OpenSesame';<br>```<\/p><p>Bu komut, `John123` ad\u0131nda bir kullan\u0131c\u0131 olu\u015fturacak ve bu kullan\u0131c\u0131ya herhangi bir yerden ba\u011flanma izni verecektir.<\/p><p>**\u0130zin Verme:**<br>```sql<br>GRANT ALL ON Baseball.* TO 'John123'@'%';<br>```<\/p><p>Bu komut, `John123` kullan\u0131c\u0131s\u0131na `Baseball` veritaban\u0131ndaki t\u00fcm tablolar \u00fczerinde t\u00fcm izinleri verecektir.<\/p><p>---<\/p><p>Bu bilgilerle, MySQL'de `NULL` de\u011ferlerini, `LIMIT` ve `OFFSET` kullan\u0131m\u0131n\u0131, veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturma i\u015flemlerini daha iyi anlayabilirsiniz. Bir sonraki yaz\u0131da, JOIN'ler ve alt sorgular gibi daha geli\u015fmi\u015f SQL konular\u0131na de\u011finece\u011fiz.<\/p><p>---<\/p><p>&nbsp;<\/p>","excerpt":"MySQL'de `NULL` de\u011ferlerini, `LIMIT` ve `OFFSET` kullan\u0131m\u0131n\u0131, veritaban\u0131 ve kullan\u0131c\u0131 olu\u015fturma i\u015flemlerini daha iyi anlayabilirsiniz. Bir sonraki yaz\u0131da, JOIN'ler ve alt sorgular gibi daha geli\u015fmi\u015f SQL konular\u0131na de\u011finece\u011fiz.","created_at":"2025-01-13 14:40:59","updated_at":"2026-09-07 13:47:11","category_id":9,"view_count":645,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-01-13 14:40:59","featured_image":"resimyok.jpg","slug":"sql-notlari-null-degerlerini-limit-ve-offset-kullanimi","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"}