SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
SQL etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

ORACLE SQL: IP Adresinin Dahil Olduğu IP Bloğunu Bulma

 Database'de bulunan bir tablonun ilgili kolonunda listelenmiş network blokları içinde (IP_Adresi/Subnet) bir IP adresinin hangi bulağa ait olduğunu bulmak için aşağıdaki sorgu kullanılabilir

Burada database kolonunda bulunan veri ör:IP_RANGE=192.168.1.0/30 şeklinde arana IP adresi ör:IP_Adresi=192.168.1.3 olabilir. Bu durumda sorgumuz;

WITH subnet_table AS (
  SELECT IP_RANGE,  regexp_substr(IP_RANGE, '(.*)/', 1, 1, null, 1) as network, 
         to_number(regexp_substr(IP_RANGE, '/(.*)', 1, 1, null, 1)) as subnet_mask_length
  FROM Tablo_adi
)
SELECT IP_RANGE, network, subnet_mask_length
FROM subnet_table
WHERE 
to_number(regexp_substr('IP_Adresi', '\d+', 1, 1)) * 16777216 +
to_number(regexp_substr('IP_Adresi', '\d+', 1, 2)) * 65536 +
to_number(regexp_substr('IP_Adresi', '\d+', 1, 3)) * 256 +
to_number(regexp_substr('IP_Adresi', '\d+', 1, 4))
BETWEEN 
to_number(regexp_substr(network, '\d+', 1, 1)) * 16777216 +
to_number(regexp_substr(network, '\d+', 1, 2)) * 65536 +
to_number(regexp_substr(network, '\d+', 1, 3)) * 256 +
to_number(regexp_substr(network, '\d+', 1, 4))
AND 
to_number(regexp_substr(network, '\d+', 1, 1)) * 16777216 +
to_number(regexp_substr(network, '\d+', 1, 2)) * 65536 +
to_number(regexp_substr(network, '\d+', 1, 3)) * 256 +
to_number(regexp_substr(network, '\d+', 1, 4)) + power(2, 32 - subnet_mask_length) - 1
ORDER BY subnet_mask_length DESC

Bu sorguda;

subnet_table : Tablonun kolonunda bulunan IP_RANGE=192.168.1.0/30 şeklindeki veriyi network=192.168.1.0 ve subnet_mask_length=30 şekline dönüştürür.

Sorgu ise IP_Adresi ve subnet_table'dan gelen network bilgilerini Decimal IP adresine dönüştürerek en küçün network IP'sinden en büyük network IP'si aralığında IP_Adresi bilgisinin olup olmadığına bakar.


subnet_table kısmı aşağıdaki gibi de yazılabilir.

select substr(IP_RANGE,1,length(IP_RANGE)-3) AS network, substr(IP_RANGE,-2,2) AS subnet_mask_length FROM Tablo_adi

veya

select substr(IP_RANGE, 1, INSTR(IP_RANGE, '/') - 1) as network, SUBSTR(IP_RANGE, INSTR(IP_RANGE, '/') + 1) as subnet_mask_length FROM Tablo_adi



Oracle SQL Bir Hücreye 4000 Karkterden Fazla Veri Yazmak

 Oracle SQL'de bir hücreye 4000 karekterden fazla veri yazmayı istiyorsanız kolon tipi olarak CLOB kullanmalısınız. VARCHAR2 ve benzeri kolonlara maximum 4000 karekter veri yazabilirsiniz. 4000 karekterden uzun veriyi tabloya yazmayı denediğinizde aşağıdaki gibi bir hata alırsınız.

General Exception: ORA-01704: string literal too long 

Bu hatayı almanız, veritabanına yazmak istediğiniz verinin uzunluğunun veritabanı tarafından desteklenmeyen bir değere ulaştığı anlamına gelir. Oracle veritabanında, bir string literal'in maksimum uzunluğu 4000 karakterdir. Eğer veritabanına yazmak istediğiniz veri bu uzunluğu aşıyorsa, CLOB veri tipi kullanmanız gerekir. GENIS_KOLON isimli CLOB Kolon aşağıdaki gibi oluşturulabilir.

CREATE TABLE "DB"."TABLO" 
   (  "NORMAL_KOLON" VARCHAR2(200), 
      "GENIS_KOLON" CLOB
   );

Bu kolona database client üzerinden istediğiniz uzunlukta veri yazabilirsiniz. Python gibi bir yazılımdan veri göndermek istiyorsanız verinin CLOB'a dönüştürülmesi gerekir. Oracle veritabanına 4000 karakterden fazla veri yazmak için Python'da cx_Oracle modülü kullanılabilir. İlgili sütun tipinin database'de CLOB (Character Large Object) tipi olduğundan emin olun. Python için örnek bir kod aşağıdaki gibidir:

import cx_Oracle
# Veritabanı bağlantısının açılması
conn = cx_Oracle.connect("username/password@hostname:port/sid")
# Veritabanı işlemleri için bir cursor oluşturulması
cursor = conn.cursor()
# Veriyi içeren değişken
long_data = "Long data here..." * 1000
# Veritabanı tablosuna veri yazma
cursor.execute("""
    INSERT INTO table_name (column_name)
    VALUES (:data)
""", data=cx_Oracle.CLOB(long_data))
# Değişikliklerin veritabanına kaydedilmesi
conn.commit()
# Bağlantının kapatılması

conn.close()

Bu kod parçacığında, cx_Oracle.CLOB() fonksiyonu ile veriyi CLOB veri tipine dönüştürülür ve veritabanına kaydedilir.


Oracle SQL ve Postgre SQL de Pivot Nasıl Yapılır

 Oracle SQL'de aşağıdaki gibi yaptığımız Pivot işlemini PostgreSQL'de yapabilmek için Crosstab komutu kullanılır. Yapacağımız örnekte dört kolona sahip bir tablo düşünelim. KolonBilgiler kolonu aynı kolona yazılmış bilgi başlıklarını, KolonDegerler kolonu bilgi başlıklarına karşılık gelen değerleri içersin. Çıktı olarak ilk iki kolonu tablodan gelecek diğer dört kolonu bilgi başlıklarının kolon olarak gösterileceği bir yapı olsun. Toplamda altı kolon oluşturacağız.

SELECT * FROM
(SELECT Kolon1, Kolon2, KolonBilgiler, KolonDegerler FROM Tablo_adı
) d PIVOT (
MAX(KolonDegerler )
FOR KolonBilgiler
IN (Bilgi1, Bilgi2, Bilgi3,Bilgi4
)) piv
WHERE .....

Yukarıdaki Oracle SQL Pivot sorgusunun Postgre DB karşılığı aşağıdaki gibidir.

SELECT *
FROM crosstab ('SELECT "Kolon1", "Kolon2", "KolonBilgiler", "KolonDegerler ", FROM "Tablo_adı" ORDER  BY 1,2'
, $$SELECT unnest('{Bilgi1, Bilgi2, Bilgi3,Bilgi4}'::text[])$$
) AS ct (Kolon1 text,  Kolon2 text, Bilgi1 text,
Bilgi2 text, Bilgi3 text, Bilgi4 text) 
WHERE .....

Burada dikkat edilmesi gereken konu bilgilerin ve bilgilerin altında seçilecek değer kolonu hariç diğer kolonların hepsinin ct içinde belirtilmesi gerekir. Belirtilmezse crosstab içinde uyumsuz kolon sayısı olduğu uyarısını alabilirsiniz.



DBeaver için Driver Nasıl Yüklenir

 DBeaver SQL yazılımı neredeyse tüm databaselere bağlanabilmektedir. Bağlantı yapabilmek için yazılım tanımlanan database'e ilk kez bağlanılıyorsa internetten driver indirilmesi gerekir. Java tabanlı jdbc driverı internet mevcutsa yazılım kendisi indirir. İnternet bağlantısı olmayan yerlerde bu driver'ı sizin bulup indirmeniz ve tanımlamanız gereklidir. Driver download etmek için aşağıdaki adreslerden faydalanabilirsiniz.

Driver Kaynak URL:

https://mvnrepository.com/ 

https://repo1.maven.org/

JDBC driverı *.jar uzantılı bir dosyadır. 

Ör: 

MySQL JDBC driverı = https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar

Postgre SQL JDBC Driverı: https://repo1.maven.org/maven2/postgresql/postgresql/9.1-901.jdbc4/postgresql-9.1-901.jdbc4.jar

Oracle SQL JDBC Driverı : https://www.oracle.com/tr/database/technologies/appdev/jdbc-downloads.html

Bu dosyayı bilgisayarınıza indirdikten sonra DBeaver SQL yazılımını açın. Database > Driver Manager ekranına girin. İlgili database'i seçin ve Copy butonuna basın. Yeni bir isim verin ör:Mysql2 Libraries tabına girin ve ekli olan satırı kaldırın. Add File seçeneğinden indirdiğiniz driverı bulun ve seçin. Ok butonuna tıklayarak ekranı kapatın. Artık yeni driver'lı bağlantınız hazır. 

Database oluşturma ekranında yeni oluşturduğunuz database ismini seçerek bağlantıyı oluşturun. Database driver'ını kendiniz indirdiğiniz için internet bağlantısına ihtiyaç olmadan database bağlantısını sağlayabilirsiniz. İnternete bağlı olmayan sunucularda bu şekilde yazılımı kullanabilirsiniz. 

      

Oracle SQL Merge Komutu

Oracle Merge komutu ile bir tablodaki bilgilerle diğer bir tabloyu rahatlıkla güncelleyebilir, aynı komut içinde diğer tabloda veriler eksik ise bunları tamamlayabilirsiniz. Komutun kullanımı aşağıdaki gibidir.

MERGE INTO target_table 

USING source_table 

ON search_condition

    WHEN MATCHED THEN

        UPDATE SET col1 = value1, col2 = value2,...

        WHERE <update_condition>

        [DELETE WHERE <delete_condition>]

    WHEN NOT MATCHED THEN

        INSERT (col1,col2,...)

        values(value1,value2,...)

        WHERE <insert_condition>;


target_table : Verisi güncellenecek olan tablo

source_table : Verinin alınacağı tablo

search_condition : Eşleşme kriteri



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

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

SQL Sorgu Sonucunun Belirli bir Bölümünü Alma

Oracle SQL'de sorgu çıktısının belli bir bölümünü almak için bazı komutlar kullanmak gerekebilir. Sondan N satır veya baştan N satır alma ihtiyacı olabileceği gibi X satırından sonra N satır al gibi işlemler yapmak ta gerekebilir. Bu komutları birer örnek ile görelim

Örnek Database

   Kolon
----------
         1
         1
         2
         2
         3
         3
         4
         4
         5
         5
         6
         6
         7
         7
         8
         8
         9
         9
        10
        10
20 rows selected.

Son 5 satırı sıralamak için.

SELECT Kolon
FROM   Table
ORDER BY Kolon DESC
FETCH FIRST 5 ROWS ONLY;

   Kolon
----------
        10
        10
         9
         9
         8
5 rows selected.

Son 5 satırı bağlantıları ile al.

SELECT Kolon
FROM   Table
ORDER BY Kolon DESC
FETCH FIRST 5 ROWS WITH TIES;

   Kolon
----------
        10
        10
         9
         9
         8
         8
6 rows selected.

İlk satırları %20 oranında sırala

SELECT Kolon
FROM   Table
ORDER BY Kolon
FETCH FIRST 20 PERCENT ROWS ONLY;

   Kolon
----------
         1
         1
         2
         2
4 rows selected.

4. satırdan başlayarak ilk 4 satırı sırala

SELECT Kolon
FROM   Table
ORDER BY Kolon
OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;

   Kolon
----------
         3
         3
         4
         4
4 rows selected.

4. Satırdan başlayarak verinin %20'sini sırala.

SELECT Kolon
FROM   Table
ORDER BY Kolon
OFFSET 4 ROWS FETCH NEXT 20 PERCENT ROWS ONLY;

   Kolon
----------
         3
         3
         4
         4
4 rows selected.



SQL Sondan bir karekter sil

select SUBSTR('350 M', 0, LENGTH('350 M') - 1) from dual;
350

SQL ilk 12 satır;

BY TARIH DESC FETCH NEXT 12 ROWS ONLY


https://www.oracletutorial.com/oracle-basics/oracle-fetch/ 

PHP Çıktısı Nasıl Excel Dosyasına Dönüştürülür (Oracle SQL)

 PHP kullanarak oracle database'e bağlanıp bir tabloyu çektikten sonra bu veriyi excel dosyasına yazdırmak istiyorsanız aşağıdaki kodu kullanabilirsiniz. Bu kod Türkçe karekter desteklemez, çıktınız Türkçe karekter içeriyorsa UTF-8 BOM satırını açmanız gerekir.

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');

$username = "username";               // Kullanıcı
$password = "password";               // Şifre
$database = "host:1521/NOR";      // Database adresi
 
$connectora = oci_connect($username, $password, $database, 'UTF8');
if (!$connectora) {
    $m = oci_error();
    trigger_error('Could not connect to database: '. $m['message'], E_USER_ERROR);
}

$query = "SELECT * FROM TABLE";  //Sorgu

$parse = oci_parse($connectora, $query);
if (!$parse) {
    $m = oci_error($connectora);
    trigger_error('Could not parse statement: '. $m['message'], E_USER_ERROR);
}
$r = oci_execute($parse);
if (!$r) {
    $m = oci_error($parse);
    trigger_error('Could not execute statement: '. $m['message'], E_USER_ERROR);
}

function filterData(&$str){
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

$fileName = "Dosya_export_".date('Ymd') . ".xlsx";
ob_end_clean();
header('Content-Encoding:UTF-8');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; charset=UTF-8; encoding=UTF-8");
header('Content-Disposition: attachment; filename='.basename($fileName));
header('Content-Transfer-Encoding: binary'); //binary veya ascii
header('Cache-Control: must-revalidate');
header('Cache-Control: max-age=1');
header('Pragma: public');
flush(); 
$developersData = array();

//echo "\xEF\xBB\xBF"; // UTF-8 BOM

while($row = oci_fetch_assoc($parse)){       
$developersData[] = $row;

}
$showColoumn = false;
if(!empty($developersData)) {
  foreach($developersData as $developerInfo) {
if(!$showColoumn) {
  echo implode("\t", array_keys($developerInfo)) . "\n";
  $showColoumn = true;
}
else {

array_walk($developerInfo, 'filterData');
echo implode("\t", array_values($developerInfo)) . "\n";}
  }

exit;
?> 

DBeaver Excell Export

 DBeaver CE database bağlantı yazılımının çıktıları excell olarak kaydedebilmesi için extension aşağıdaki gibi yüklenir.

Yazılım Açılır

Help > install New Software seçeneği seçilir. Açılan ekrana aşağıdaki link kopyalanarak next butonuna tıklanır. 

https://dbeaver.io/update/office/latest/

Yazılım seçilerek next butonuta tıklanarak eklenti kurulur. Yazılım kapatılıp açılarak eklenti kullanılmaya başlanır.

      

MySql Import Türkçe Karekter Sorunu

 Bilgisayarınızda bulunan csv dosyalarını MySql'e yüklerken Türkçe karekter sorunu ile karşılaşabilirsiniz. Bu sorun ile karşılaşmamak için ilk olarak bilgisayarınızda bulunan CSV dosyasını UTF8 encoding formatına dönüştürmelisiniz. Bunun için Notepad++ kullanabilirisiniz. 

Dosyanızı bu program ile açın, encoding menusunden UTF8 seçin. Karekterler bozulur ise içeriği silip orijinal dosyadan tekrar kopyalayın ve dosyanızı farklı kaydedin. Dosyanızı tekrar açarak encoding kısmında UTF8 seçili olduğundan emin olun. 

UTF8 formatına dönüştürdüğünüz dosyayı UTF8 encoding ile MySql'e import edin, dosyadaki Türkçe karekter sorununun UTF8 formatında çözüldüğünü göreceksiniz.

SQL Komutları

Bu yazımızda bazı SQL komutlarından bahsedeceğiz. Bu komutlar tüm SQL yazılımlarıyla çalışır.

Limit count offset skip

Bu şekilde bir komut kullanıldığında listelenecek satır sayısı sınırlanacağı gibi başlanacak satırda belirlenmiş olur.

Ör: 
....limit 10 offset 150
Bu komut 10 max satırın listelenmesini ve listelemeye 151. satırdan başlanacağını söylemektedir.

Order by columns Desc
Bu komut da oluşturulacak listenin neye göre sıralanacağını söyler. Sonda bulunan Desc listenin büyükten küçüğe sıralanmasını sağlar.

Ör:
...order by species, name

Örnekte de görüldüğü gibi birden çok sütün içinde sıralama yapılabilir.

Group by columns

Bu komutta ise farklı değerlerin gruplanması sağlanır.

Ör:
Select name, count(*) as num from animals group by name

Bu satır animals tablosunda bulunan name sütununda farklı isim gruplarının sayısını verir. "group bye name desc" şeklinde kullanırsanız sıralamayı büyükten küçüğe doğru yapacaktır.

Database'e veri eklemek için insert komutu kullanılır.

insert into table (columns1, columns2, columns3) values ('value1', 'value2', 'value3');

Örnek
insert into animals (name, species, birthdate) values ('wibble', 'opossum', '2018-04-01');

İki farklı tabloda arama yapmak için aşağıdaki komut kullanılabilir. animals ve diet isimli iki tablomuz olsun.

select animals.kolon from animals join diet on animals.kolon2 = diet.kolon2 where kolonb = 'deger';

Database içinde sadece 1 adet bulunan bir değer aranıyor ise burada having kodu kullanılabilir.

select species, count(*) as num from animals group by species having num = 1;

SQL kullanıcı sorgulama;

SELECT user FROM Dual WHERE ROWNUM = 1








Google