{"id":216,"title":"SQL Notlar\u0131: INSERT \u0130\u015flemleri","content":"<p>## MySQL'de INSERT \u0130\u015flemleri<\/p><p>MySQL'de `INSERT` komutu, veritaban\u0131 tablolar\u0131na yeni veri eklemek i\u00e7in kullan\u0131l\u0131r. Bu b\u00f6l\u00fcmde, `INSERT` komutunun farkl\u0131 kullan\u0131m senaryolar\u0131n\u0131 ve ipu\u00e7lar\u0131n\u0131 inceleyece\u011fiz.<\/p><p>### 1. **Temel INSERT \u0130\u015flemi**<\/p><p>Temel bir `INSERT` komutu, belirli bir tabloya yeni bir sat\u0131r ekler. S\u00fctun adlar\u0131 ve eklenen de\u011ferler belirtilir.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>INSERT INTO `table_name` (`field_one`, `field_two`)&nbsp;<br>VALUES ('value_one', 'value_two');<br>```<\/p><p>Bu \u00f6rnekte, `table_name` tablosuna `field_one` ve `field_two` s\u00fctunlar\u0131na s\u0131ras\u0131yla `value_one` ve `value_two` de\u011ferleri eklenir.<\/p><p>### 2. **\u00c7oklu Sat\u0131r Ekleme**<\/p><p>Tek bir `INSERT` komutu ile birden fazla sat\u0131r eklemek m\u00fcmk\u00fcnd\u00fcr. Bu, \u00f6zellikle b\u00fcy\u00fck veri setlerinde performans\u0131 art\u0131r\u0131r.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>INSERT INTO `my_table` (`field_1`, `field_2`)&nbsp;<br>VALUES&nbsp;<br>('data_1', 'data_2'),<br>('data_1', 'data_3'),<br>('data_4', 'data_5');<br>```<\/p><p>Bu sorgu, `my_table` tablosuna \u00fc\u00e7 yeni sat\u0131r ekler. Her bir sat\u0131r i\u00e7in `field_1` ve `field_2` s\u00fctunlar\u0131na farkl\u0131 de\u011ferler atan\u0131r.<\/p><p>### 3. **INSERT IGNORE ile Hatalar\u0131 Yoksayma**<\/p><p>`INSERT IGNORE` komutu, e\u011fer eklenmeye \u00e7al\u0131\u015f\u0131lan sat\u0131r bir k\u0131s\u0131tlama ihlali (\u00f6rne\u011fin, benzersiz anahtar ihlali) nedeniyle hata al\u0131rsa, bu hatay\u0131 yoksayar ve di\u011fer sat\u0131rlar\u0131 eklemeye devam eder.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>INSERT IGNORE INTO `people` (`id`, `name`)&nbsp;<br>VALUES&nbsp;<br>(2, 'anna'), &nbsp;-- Bu sat\u0131r, id=2 zaten var oldu\u011fu i\u00e7in yoksay\u0131l\u0131r<br>(3, 'mike'); &nbsp;-- Bu sat\u0131r eklenecektir<br>```<\/p><p>Bu sorgu, `people` tablosuna iki yeni sat\u0131r eklemeye \u00e7al\u0131\u015f\u0131r. E\u011fer `id=2` zaten varsa, bu sat\u0131r yoksay\u0131l\u0131r ve `id=3` eklenir.<\/p><p>### 4. **ON DUPLICATE KEY UPDATE ile G\u00fcncelleme**<\/p><p>`ON DUPLICATE KEY UPDATE` ifadesi, e\u011fer eklenmeye \u00e7al\u0131\u015f\u0131lan sat\u0131r bir benzersiz anahtar ihlali nedeniyle hata al\u0131rsa, bu sat\u0131r\u0131 g\u00fcnceller.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>INSERT INTO `table_name` (`index_field`, `other_field_1`, `other_field_2`)&nbsp;<br>VALUES&nbsp;<br>('index_value', 'insert_value', 'other_value')&nbsp;<br>ON DUPLICATE KEY UPDATE&nbsp;<br>`other_field_1` = 'update_value',&nbsp;<br>`other_field_2` = VALUES(`other_field_2`);<br>```<\/p><p>Bu sorgu, `table_name` tablosuna yeni bir sat\u0131r eklemeye \u00e7al\u0131\u015f\u0131r. E\u011fer `index_field` zaten varsa, `other_field_1` g\u00fcncellenir ve `other_field_2` orijinal de\u011ferini korur.<\/p><p>### 5. **AUTO_INCREMENT ve LAST_INSERT_ID()**<\/p><p>`AUTO_INCREMENT` s\u00fctunu olan bir tabloya veri eklendi\u011finde, yeni eklenen sat\u0131r\u0131n `AUTO_INCREMENT` de\u011ferini almak i\u00e7in `LAST_INSERT_ID()` fonksiyonu kullan\u0131l\u0131r.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>CREATE TABLE t (<br>&nbsp; &nbsp;id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL,<br>&nbsp; &nbsp;this VARCHAR(50),<br>&nbsp; &nbsp;that VARCHAR(50),<br>&nbsp; &nbsp;PRIMARY KEY(id)<br>);<\/p><p>INSERT INTO t (this, that) VALUES ('value1', 'value2');<br>SELECT LAST_INSERT_ID() INTO @id;<br>INSERT INTO another_table (t_id, other_field) VALUES (@id, 'other_value');<br>```<\/p><p>Bu \u00f6rnekte, `t` tablosuna yeni bir sat\u0131r eklenir ve `LAST_INSERT_ID()` ile yeni eklenen sat\u0131r\u0131n `id` de\u011feri al\u0131n\u0131r. Bu de\u011fer daha sonra `another_table` tablosuna eklenir.<\/p><p>### 6. **INSERT SELECT ile Ba\u015fka Tablodan Veri Ekleme**<\/p><p>`INSERT SELECT` komutu, bir tablodan se\u00e7ilen verileri ba\u015fka bir tabloya eklemek i\u00e7in kullan\u0131l\u0131r.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>INSERT INTO `tableA` (`field_one`, `field_two`)&nbsp;<br>SELECT `tableB`.`field_one`, `tableB`.`field_two`<br>FROM `tableB`<br>WHERE `tableB`.clm &lt;&gt; 'someValue'<br>ORDER BY `tableB`.sorting_clmn;<br>```<\/p><p>Bu sorgu, `tableB` tablosundan se\u00e7ilen verileri `tableA` tablosuna ekler. `WHERE` ve `ORDER BY` ifadeleri ile filtreleme ve s\u0131ralama yap\u0131labilir.<\/p><p>### 7. **AUTO_INCREMENT ID'lerinin Kayb\u0131**<\/p><p>Baz\u0131 durumlarda, `INSERT` i\u015flemleri s\u0131ras\u0131nda `AUTO_INCREMENT` de\u011ferleri \"yanabilir\" (kaybolabilir). Bu, \u00f6zellikle `INSERT IGNORE` veya `REPLACE` gibi komutlar kullan\u0131ld\u0131\u011f\u0131nda ger\u00e7ekle\u015febilir.<\/p><p>**\u00d6rnek Kullan\u0131m:**<br>```sql<br>CREATE TABLE Burn (<br>&nbsp; &nbsp;id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL,<br>&nbsp; &nbsp;name VARCHAR(99) NOT NULL,<br>&nbsp; &nbsp;PRIMARY KEY(id),<br>&nbsp; &nbsp;UNIQUE(name)<br>) ENGINE=InnoDB;<\/p><p>INSERT IGNORE INTO Burn (name) VALUES ('first'), ('second');<br>SELECT LAST_INSERT_ID(); -- 1<br>SELECT * FROM Burn ORDER BY id;<\/p><p>INSERT IGNORE INTO Burn (name) VALUES ('second'); -- id=3 yanar<br>SELECT LAST_INSERT_ID(); -- Hala \"1\"<br>SELECT * FROM Burn ORDER BY id;<\/p><p>INSERT IGNORE INTO Burn (name) VALUES ('third');<br>SELECT LAST_INSERT_ID(); -- \u015eimdi \"4\"<br>SELECT * FROM Burn ORDER BY id; -- id=3 atland\u0131<br>```<\/p><p>Bu \u00f6rnekte, `INSERT IGNORE` kullan\u0131ld\u0131\u011f\u0131nda baz\u0131 `AUTO_INCREMENT` de\u011ferleri kaybolur (yanar). Bu durum, \u00f6zellikle b\u00fcy\u00fck veri setlerinde dikkate al\u0131nmal\u0131d\u0131r.<\/p><p>---<\/p><p>Bu bilgilerle, MySQL'de `INSERT` komutunun farkl\u0131 kullan\u0131m senaryolar\u0131n\u0131 ve ipu\u00e7lar\u0131n\u0131 daha iyi anlayabilirsiniz.&nbsp;<\/p>","excerpt":"MySQL'de `INSERT` komutunun farkl\u0131 kullan\u0131m senaryolar\u0131n\u0131 ve ipu\u00e7lar\u0131n\u0131 daha iyi anlayabilirsiniz.","created_at":"2025-01-13 14:45:26","updated_at":"2026-09-07 01:42:41","category_id":9,"view_count":595,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-01-13 14:45:26","featured_image":"resimyok.jpg","slug":"sql-notlari-insert-islemleri","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim"}