SQL Materialized View Oluşturma

 Materialized View bir tablonun veya view'ın kendi database'imizde oluşturulan kopyasıdır ve veri içeren tablolar gibi çalışır. Uzak bir database'de sorgu çalıştırmaktansa tabloyu kendi database'imize kopyalayıp çalıştırmamızı sağlar ve bu sorgunun çok hızlı cevap vermesi demektir. Materialized View içindeki verileri istediğimiz gibi güncelletebiliriz. Materialized View database'inizde fiziksel olarak veriyi tutar. Komut formatı şöyledir:

- Normal
CREATE MATERIALIZED VIEW view-name
BUILD [IMMEDIATE | DEFERRED]
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

-- Pre-Built
CREATE MATERIALIZED VIEW view-name
ON PREBUILT TABLE
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
AS
SELECT ...;

BUILD veri yükleme opsiyonları;

IMMEDIATE : Materialized View oluşturulduğu anda veri de tabloya doldurulur.
DEFERRED : İlk güncelleme sırasında veri doldurulur.

REFRESH opsiyonları;

FAST : Materialized View Log'u kullanılarak güncelleme yapılır. Materialized View Log bulamazsa güncelleme yapamaz.
COMPLETE :  Sorguya göre Materialized View içindeki veriler tamamen silinir ve yeniden ilgili database'lerden çekilir.
FORCE : İlk olarak Fast dener, çalışmazsa Complate Refresh dener.

ON COMMIT : Materialized View de veri güncelleme ilgili databaselerde commit gönderildiğinde yapılır.
ON DEMAND : Yenileme işlemi manuel olarak veya bir zamanlayıcı set edildiğinde yapılır.

START WITH SYSDATE NEXT SYSDATE + 1  aralığı ile yenilenir. Buradaki “1” gün’ü ifade eder. Yani burada günde bir defa refresh edilmesi istenilmiş. Eğer 1/(60*24) yapsaydık, dakikada 1 refresh edilmesini belirtmiş olurduk.

Günde bir yenileme
CREATE MATERIALIZED VIEW view-name
REFRESH COMPLETE
NEXT (SYSDATE +1)
AS
SELECT .....

Saatte bir yenileme
CREATE MATERIALIZED VIEW view-name
REFRESH COMPLETE
NEXT (SYSDATE +1/24)
AS
SELECT .....

SQL Data link üzerinden  Materialized View nasıl oluşturulur.
CREATE MATERIALIZED VIEW view-name
AS
SELECT * FROM the_table@si_db;

si_db : Data Link adı.

Materialized View nasıl silinir.

DROP MATERIALIZED VIEW view_name;

Örnek:
CREATE MATERIALIZED VIEW MV_EXAMPLE_TABLE_NAME
PARALLEL 16
BUILD IMMEDIATE
REFRESH COMPLETE
NEXT (SYSDATE + 1/24)
AS
select /*+  parallel(16) */ * FROM


Kaynak : 
https://oracle-base.com/articles/misc/materialized-views#create-materialized-view

WEB Sayfanıza Harita Ekleyin

 Web sayfanıza harita ekleyip bu harita içerisinde bazı noktaları işaretlemek, harita üzerine çizimler yapmak istiyorsanız bunu Leaflet uygulaması ile kolaylıkla yapabilirsiniz. Sadece aşadaki HTML kodu kendi sitenize uyarlamanız yeterli. Harita üzerindeki gösterimler için siteyi ziyaret edin, çok basit bir şekilde harita üzerinde istediğiniz tüm gösterimleri yapabilirsiniz. Çok basit, çok hızlı. Aşağıdaki kodda center: alanı koordinat bilgisidir.

<!DOCTYPE html>

        <html>
           <head>
              <title>Leaflet</title>
              <link rel = "stylesheet" href = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
           </head>
          <body>
<div id = "map" style = "width: 900px; height: 580px"></div>
<script src = "http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
              <script>
                 // Creating map options
                 var mapOptions = {
                    center: [41.332453, 28.577112],
                    zoom: 10
                 }
                 
                 // Creating a map object
                 var map = new L.map('map', mapOptions);
                 
                 // Creating a Layer object
                 var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
                 
                 // Adding layer to the map
                 map.addLayer(layer);
              </script>

           </body>
        </html>

Sayfanızda SSL çalışıyorsa yukarıdaki kodda aşağıdaki link ve script yerine aşağıdaki bölümleri kullanın.

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.4/dist/leaflet.css" integrity="sha512-puBpdR0798OZvTTbP4A8Ix/l+A4dHDD0DGqYW6RQ+9jxkRFclaxxQb/SJAWZfWAkuyeQUytO7+7N4QKrDh+drA==" crossorigin=""/>
<script src="https://unpkg.com/leaflet@1.3.4/dist/leaflet.js" integrity="sha512-nMMmRyTVoLYqjP9hrbed9S+FzjZHW5gY1TWCHA5ckwXZBadntCNs8kEqAWdrb9O7rxbCaA4lKTIWjDXZxflOcA==" crossorigin=""></script>

Ayrıntılı bilgi için : https://leafletjs.com/

HTML Kod Örnekleri

  HTML kod içinde çok kullanışlı bazı kod örneklerini burada vereceğiz. PHP veya bunun gibi dinamik kod sistemlerinin yapabileceği birçok basit işlem HTML içinde de yapılabilir. Bunlardan bazılarına değinelim.

HTML Form Alanlarının Boş Bırakılmasını Engelleme

HTML form içinde bulunan herhangi bir değeri zorunlu hale getirmek ve bu zorunlu değer girilmezse hata mesajı verdirmek için aşağıdaki kod örneği kullanılabilir.

<input class="form-control" type="email"  required placeholder="E-Mail"

 oninvalid="this.setCustomValidity('Lütfen geçerli bir E-Mail adresi yazın.')"

 oninput="setCustomValidity('')">

HTML Sayfada Butonla Popup Sayfa Açma

Htlm sayfa içinden bir buton vasıtası ile popup pencere aştırmak için aşağıdaki basit kodu kullanabilirsiniz. Aynı sayfadan birkaç fakrlı popup sayfa açacaksanız her buton için "MyWindow" kelimesi yerine başka birşey yazın. Böylece her buton için faklı popup pencere açılacaktır.

<a href="#" onClick="MyWindow=window.open('http://www.google.com','MyWindow','width=600,height=300'); return false;">Click Here</a>

Bu kod css ve js dosyası gerektirmez, html dosyanız içine yukarıdaki şekilde yazmanız yeterlidir.

Ziyaretciyi HTML kod ile belli bir URL'e yönlendirme. 

<meta http-equiv="Refresh" content="0; url='http://www.google.com'" />

Oracle SQL Türkçe Karekter Uygulamaları

 Oracle SQL'de en çok karşılaşacağınız sorunların başında Türkçe karekter sorunları yer alıyor. Bu sorunları gidermek için aşağıdaki yöntemleri kullabilirsiniz.

Bir string içindeki Türkçe karekterleri dönüştürmek için;

SELECT TRANSLATE ('Türkçe karekter dönüştürme, ğüşİçö', 'ĞÜŞİÖÇğüşıöç', 'GUSIOCgusioc') FROM dual;

Turkce karekter donusturme, gusIco



ORACLE SQL Zaman Fonksiyonları ve Sıralama

Oracle SQL'de belirli bir süre geri gitmek ve bu tarihlere göre bir sıralama yapabilmek için bazı standart formarlar gerekir. Bu formatları kendi sorgunuz ile uygun bir şekilde birleştirerek sıralamayı istediğiniz gibi başlatıp hazırlayabilirsiniz. İlk olarak yardımcı fonksiyonlara bakalım.

SYSDATE : Veritabanı sunucusuna ait tarih-saat bilgisini verir.
SELECT SYSDATE FROM DUAL
2022-11-02 13:23:59

CURRENT_DATE : Kullanılan sunucuya ait sistemin tarih-saat bilgisini verir.
SELECT CURRENT_DATE FROM DUAL
2022-11-02 13:24:59

CURRENT_TIMESTAMP : Kullanıcıya ait sistemin tarih-saat bilgisini verir.
SELECT CURRENT_TIMESTAMP FROM DUAL
2022-11-02 13:26:56

DBTIMEZONE : Veritabanı sunucusuna ait saat dilimini verir.
SELECT DBTIMEZONE FROM DUAL
+00:00

LAST_DAY : Tarihe ait ayın son gününü verir.
SELECT LAST_DAY(SYSDATE) FROM DUAL
2022-11-30 13:29:41

NEW_TIME : Tarihe ait saat dilimini çevirir.
SELECT NEW_TIME(SYSDATE, 'GMT', 'PST') FROM DUAL
2022-11-02 05:31:31

ADD_MONTHS : Belirttiğiniz tarihe istenilen değer kadar ay ekler.
SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL
2023-01-02 13:32:41

EXTRACT : Tarih bilgisinden yıl, ay, gün, saat gibi her bir parçayı almayı sağlar.
SELECT EXTRACT(YEAR FROM DATE '2022-01-02') FROM DUAL
2022

SELECT EXTRACT(MONTH FROM DATE '2022-01-02') FROM DUAL
1

SELECT EXTRACT(DAY FROM DATE '2022-01-02') FROM DUAL
2

MONTHS_BETWEEN : Verilen tarih aralığını ay olarak hesaplar.
SELECT MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, 2), SYSDATE) FROM DUAL
2

NEXT_DAY : Tarihten sonraki ilk günün tarihini verir.
SELECT NEXT_DAY(SYSDATE, 'SUNDAY') FROM DUAL

TRUNC : Belirtilen tarih alanının ilk anını hesaplar, saat bilgilerini sıfırlar.
SELECT TRUNC(SYSDATE) FROM DUAL
2022-11-02 00:00:00

SELECT TRUNC(SYSDATE, 'YEAR') FROM DUAL
2022-01-01 00:00:00

SELECT TRUNC(SYSDATE, 'MONTH') FROM DUAL
2022-11-01 00:00:00

TO_TIMESTAMP : String ifadeyi tarih formatına çevirir.
SELECT TO_TIMESTAMP('2022/01/01 12:00:01', 'YYYY/MM/DD HH:MI:SS') FROM DUAL
2022-01-01 12:00:01

TO_DATE : String ifadeyi tarih formatına çevirir.
SELECT TO_DATE('2022/01/01', 'YYYY/MM/DD') FROM DUAL
2022-01-01 00:00:00

TO_CHAR : Tarih ve saat biçimini string ifadeye çevirir.
SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL
2022-11-02

SQL ile bu yıl
select TO_CHAR(TRUNC(SYSDATE),'YYYY') from dual

SQL ile bu gün
select TO_CHAR(TRUNC(SYSDATE),'DD.MM.YYYY') from dual

SQL ile bir gün önce
SELECT TO_DATE(current_date - 1) AS yesterday_date FROM dual

SQL ile bir gün sonra
SELECT TO_DATE(current_date + 1) AS tomorrow_date FROM dual

X Ay önceki ayın ilk gününü;

Örnekte X=11

SELECT TRUNC(ADD_MONTHS(SYSDATE, -11), 'MM') FROM DUAL

2021-01-01 00:00:00

SQL'de son X ayı sıralar;

Örnekte X=5

SELECT 1 + LEVEL - 1 AS SIRA, to_char(add_months(trunc(sysdate), - LEVEL + 1), 'MM') AS TARIH from dual connect by level <= 5

SIRA TARIH

1 12

2 11

3 10

4 09

5 08

SQL'de son X günü tarihi ile sıralar; 

Örnekte X=5

SELECT 1 + LEVEL - 1 AS SIRA, TO_CHAR((TRUNC(SYSDATE) - LEVEL + 1),'YYYY.MM.DD') AS TARIH FROM DUAL CONNECT BY LEVEL <= 5

SIRA TARIH

1 2021.12.01

2 2021.11.30

3 2021.11.29

4 2021.11.28

5 2021.11.27

Geriye dönük hafta numaraları listesi elde etme;

ör: Son 50 gün için hafta numaraları listesi

SELECT SUM(SIRA) AS SIRA, TARIH FROM
(SELECT 1 + LEVEL - 1 AS SIRA, TO_CHAR( TO_DATE(sysdate) - LEVEL + 1 , 'IW' ) AS TARIH 
FROM  DUAL CONNECT BY LEVEL <= 50) GROUP BY TARIH ORDER BY SIRA

Sıra Tarih(Hafta)
1 01
35 52
84 51
133 50
182 49
231 48
280 47
329 46

Bulunduğunuz günden geri gün listesi elde etme.

SELECT to_char(TO_DATE (SYSDATE - (LEVEL -1)), 'DD.MM.YYYY')  tarih FROM DUAL CONNECT BY LEVEL <= 360

Google