{"id":210,"title":"SQL Notlar\u0131:  Regular Expressions (Regex) Kullan\u0131m\u0131 ve View Olu\u015fturma","content":"<p>MySQL, veritaban\u0131 y\u00f6netiminde g\u00fc\u00e7l\u00fc ara\u00e7lar sunar. Bu ara\u00e7lardan ikisi, **Regular Expressions (Regex)** ve **View** olu\u015fturmad\u0131r. Bu yaz\u0131da, bu iki konuyu detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p><p>#### 1. Regular Expressions (Regex) ile Veri Filtreleme<\/p><p>Regular Expressions (Regex), karma\u015f\u0131k arama desenlerini belirlemek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. MySQL'de `REGEXP` (veya e\u015f anlaml\u0131s\u0131 `RLIKE`) operat\u00f6r\u00fc ile regex kullanarak verileri filtreleyebilirsiniz.<\/p><p>##### \u00d6rnek 1: Belirli Bir Desen \u0130\u00e7eren \u0130simleri Se\u00e7me<\/p><p>\u00d6rne\u011fin, `LAST_NAME` alan\u0131nda \"in\" i\u00e7eren ve `FIRST_NAME` alan\u0131nda \"a\" harfi bulunan t\u00fcm \u00e7al\u0131\u015fanlar\u0131 se\u00e7mek istiyorsan\u0131z:<\/p><p>```sql<br>SELECT * FROM employees&nbsp;<br>WHERE FIRST_NAME REGEXP 'a'&nbsp;<br>AND LAST_NAME REGEXP 'in';<br>```<\/p><p>Bu sorguda, `REGEXP` operat\u00f6r\u00fc kullan\u0131larak belirli bir desen aran\u0131yor. `^` veya `$` kullan\u0131lmad\u0131\u011f\u0131 i\u00e7in desen, metnin herhangi bir yerinde olabilir.<\/p><p>##### \u00d6rnek 2: Belirli Harflerle Ba\u015flayan \u0130simleri Se\u00e7me<\/p><p>E\u011fer `FIRST_NAME` alan\u0131 \"A\", \"B\" veya \"C\" ile ba\u015flayan \u00e7al\u0131\u015fanlar\u0131 se\u00e7mek istiyorsan\u0131z:<\/p><p>```sql<br>SELECT * FROM employees&nbsp;<br>WHERE FIRST_NAME REGEXP '^';<br>```<\/p><p>Bu sorguda, `^` i\u015fareti, desenin ba\u015flang\u0131c\u0131n\u0131 belirtir. `` ise \"A\", \"B\" veya \"C\" harflerinden herhangi birini ifade eder.<\/p><p>##### \u00d6rnek 3: Desen E\u015fle\u015fmelerini Sayma<\/p><p>Regex kullanarak e\u015fle\u015fen ve e\u015fle\u015fmeyen sat\u0131rlar\u0131 saymak da m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, `FIRST_NAME` alan\u0131 \"N\" ile ba\u015flayan \u00e7al\u0131\u015fanlar\u0131 saymak i\u00e7in:<\/p><p>```sql<br>SELECT&nbsp;<br>&nbsp; &nbsp;IF(FIRST_NAME REGEXP '^N', 'matches ^N', 'does not match ^N') as matching,<br>&nbsp; &nbsp;COUNT(*)<br>FROM employees<br>GROUP BY matching;<br>```<\/p><p>Bu sorgu, \"N\" ile ba\u015flayan ve ba\u015flamayan isimlerin say\u0131s\u0131n\u0131 gruplayarak g\u00f6sterir.<\/p><p>#### 2. View Olu\u015fturma ve Kullan\u0131m\u0131<\/p><p>View'lar, karma\u015f\u0131k sorgular\u0131 basitle\u015ftirmek ve tekrar kullan\u0131labilir hale getirmek i\u00e7in kullan\u0131l\u0131r. Bir view, bir veya daha fazla tablodan veri \u00e7eken bir `SELECT` sorgusunu paketler.<\/p><p>##### \u00d6rnek 1: Basit Bir View Olu\u015fturma<\/p><p>A\u015fa\u011f\u0131daki \u00f6rnekte, `t` tablosundan `qty` ve `price` s\u00fctunlar\u0131n\u0131 se\u00e7en ve bu s\u00fctunlar\u0131n \u00e7arp\u0131m\u0131n\u0131 i\u00e7eren bir view olu\u015fturuluyor:<\/p><p>```sql<br>CREATE TABLE t (qty INT, price INT);<br>INSERT INTO t VALUES(3, 50);<\/p><p>CREATE VIEW v AS&nbsp;<br>SELECT qty, price, qty*price AS value&nbsp;<br>FROM t;<\/p><p>SELECT * FROM v;<br>```<\/p><p>Bu view, `qty` ve `price` s\u00fctunlar\u0131n\u0131 ve bunlar\u0131n \u00e7arp\u0131m\u0131n\u0131 i\u00e7eren bir tablo gibi davran\u0131r.<\/p><p>##### \u00d6rnek 2: \u0130ki Tablodan Veri \u00c7eken View<\/p><p>View'lar, birden fazla tablodan veri \u00e7ekmek i\u00e7in de kullan\u0131labilir. \u00d6rne\u011fin, `main_table` ve `other_table` tablolar\u0131ndan veri \u00e7eken bir view olu\u015ftural\u0131m:<\/p><p>```sql<br>CREATE VIEW myview AS<br>SELECT a.*, b.extra_data&nbsp;<br>FROM main_table a<br>LEFT OUTER JOIN other_table b<br>ON a.id = b.id;<br>```<\/p><p>Bu view, `main_table` ve `other_table` tablolar\u0131n\u0131 birle\u015ftirir ve `extra_data` s\u00fctununu ekler.<\/p><p>##### \u00d6rnek 3: View'\u0131 G\u00fcncelleme ve Silme<\/p><p>View'lar, tablolar gibi g\u00fcncellenebilir veya silinebilir. Ancak, view'lar\u0131n g\u00fcncellenebilir olmas\u0131 i\u00e7in belirli ko\u015fullar vard\u0131r. \u00d6rne\u011fin, `GROUP BY`, `UNION`, `HAVING`, `DISTINCT` gibi karma\u015f\u0131k sorgular i\u00e7eren view'lar g\u00fcncellenemez.<\/p><p>```sql<br>CREATE VIEW few_rows_from_t1 AS&nbsp;<br>SELECT * FROM t1 LIMIT 10;<\/p><p>DROP VIEW few_rows_from_t1;<br>```<\/p><p>Bu \u00f6rnekte, `t1` tablosundan ilk 10 sat\u0131r\u0131 se\u00e7en bir view olu\u015fturuluyor ve daha sonra bu view siliniyor.<\/p><p>#### 3. View'lar\u0131n K\u0131s\u0131tlamalar\u0131<\/p><p>- View'lar, sistem de\u011fi\u015fkenlerine veya kullan\u0131c\u0131 tan\u0131ml\u0131 de\u011fi\u015fkenlere referans veremez.<br>- View'lar, ge\u00e7ici tablolara referans veremez ve ge\u00e7ici view'lar olu\u015fturulamaz.<br>- View'lar, tetikleyicilerle ili\u015fkilendirilemez.<br>- View'lar, her zaman e\u015fde\u011fer `SELECT` sorgusu kadar iyi performans g\u00f6stermeyebilir.<\/p><p>#### Sonu\u00e7<\/p><p>MySQL'de **Regular Expressions** ve **View** olu\u015fturma, veritaban\u0131 y\u00f6netiminde olduk\u00e7a faydal\u0131 ara\u00e7lard\u0131r. Regex, karma\u015f\u0131k arama desenleri olu\u015fturman\u0131za olanak tan\u0131rken, View'lar karma\u015f\u0131k sorgular\u0131 basitle\u015ftirir ve tekrar kullan\u0131labilir hale getirir. Bu ara\u00e7lar\u0131 etkili bir \u015fekilde kullanarak, veritaban\u0131 sorgular\u0131n\u0131z\u0131 daha verimli hale getirebilirsiniz.<\/p><p>Bu yaz\u0131da, MySQL'de regex kullan\u0131m\u0131 ve view olu\u015fturma konular\u0131n\u0131 ele ald\u0131k. Umar\u0131m bu bilgiler, veritaban\u0131 y\u00f6netimi s\u00fcre\u00e7lerinizde size yard\u0131mc\u0131 olur. Bir sonraki yaz\u0131da g\u00f6r\u00fc\u015fmek \u00fczere!<\/p>","excerpt":"MySQL'de **Regular Expressions** ve **View** olu\u015fturma, veritaban\u0131 y\u00f6netiminde olduk\u00e7a faydal\u0131 ara\u00e7lard\u0131r. Regex, karma\u015f\u0131k arama desenleri olu\u015fturman\u0131za olanak tan\u0131rken, View'lar karma\u015f\u0131k sorgular\u0131 basitle\u015ftirir ve tekrar kullan\u0131labilir hale getirir. Bu ara\u00e7lar\u0131 etkili bir \u015fekilde kullanarak, veritaban\u0131 sorgular\u0131n\u0131z\u0131 daha verimli hale getirebilirsiniz.","created_at":"2025-01-13 15:22:57","updated_at":"2026-09-07 15:37:26","category_id":9,"view_count":483,"reading_time":4,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2025-01-13 15:22:57","featured_image":"resimyok.jpg","slug":"sql-notlari-regular-expressions-regex-kullanimi-ve-view-olusturma","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim","category_color":"#ef4444"}