Veritabanı
Bu kategoride veritabanları ile ilgili çeşitli sorulara cevap ve makaleler bulunmaktadır
Bu kategoride veritabanları ile ilgili çeşitli sorulara cevap ve makaleler bulunmaktadır
Foreign Data Wrapper Nedir? Foreign Data Wrapper (FDW), PostgreSQL gibi veritabanı sistemlerinde kullanılan bir veri erişim yöntemidir. FDW, PostgreSQL veritabanı sunucusunun, diğer veritabanları, dosya sistemleri ve hatta web servisleri gibi dış veri kaynaklarına erişmesini sağlar. Bu sayede, veritabanı yöneticileri ve geliştiricileri farklı veri kaynakları arasında veri aktarımı yapmalarına gerek kalmadan, tek bir yerden veri toplayabilirler. FDW Nasıl Çalışır? FDW, bir arayüz modülü olarak çalışır. Veritabanı sunucusu, kullanıcı tarafından oluşturulan SQL sorgusunu alır ve FDW arayüz modülüne iletir. Bu modül, sorguyu dış veri kaynağına iletir ve sonuçları geri getirir. Veritabanı sunucusu, sonuçları alır ve SQL sorgusunu çalıştırmış gibi işler. FDW Örnekleri PostgreSQL FDW: PostgreSQL'in kendi FDW'si, başka PostgreSQL veritabanlarına, Oracle, MySQL ve SQL Server gibi veritabanlarına ve hatta CSV dosyalarına bile erişim sağlar. MySQL FDW: MySQL veritabanlarının PostgreSQL'de kullanılmasını sağlar. Bu, bir PostgreSQL veritabanı üzerinde, MySQL veritabanı için bir FDW kullanarak SQL sorguları yapmanızı sağlar. RESTful Web Servisi FDW: Bu FDW, RESTful web servisleri aracılığıyla veri toplamak için kullanılır. Bu, bir web servisine istek göndererek, sonuçları bir PostgreSQL veritabanına yazarak veya bir PostgreSQL sorgusundan verileri alarak bir web servisine göndererek yapılabilir. Sonuç Olarak Foreign Data Wrapper, PostgreSQL veritabanı sistemleri için oldukça kullanışlı bir özelliktir. Farklı veritabanlarına ve veri kaynaklarına erişim sağlar ve veri toplama sürecini kolaylaştırır. PostgreSQL'in kendi FDW'si ve diğer özel FDW'ler, veri yöneticilerinin ve geliştiricilerin verileri daha hızlı ve daha verimli bir şekilde toplamasına yardımcı olabilir.
Yapttığımız projelerde kullandığımız veritabanlarından biri de ücretsiz hizmet sunan MYSQL veritabanıdır. Peki MYSQL veritabanı kullanırken bize projemiz için gerekli sorguları nasıl yaza biliriz? Aşağıdakı örneklerde iki tablo kullanarak MYSQL sorgu sintaksisini anlatmaya çalışacağım. users - id - fullName - phone - birthday - regDate books - id - userIid - bookName - createDate Tüm kullanıcıları listelemek için: SELECT * FROM users; Kullanıcının adı, telefonu ve doğum tarihini almak için: SELECT fullName, phone, birthday FROM users; Belirli bir kullanıcının bilgilerini almak için (fullName'i 'John Doe' olan kullanıcı için): SELECT * FROM users WHERE fullName = 'John Doe'; Kullanıcının adı ve kayıt tarihini, kitap adıyla birlikte almak için: SELECT u.fullName, u.regDate, b.bookName FROM users u JOIN books b ON u.id = b.userId; Belirli bir tarih aralığındaki kitapların adını, oluşturulma tarihini ve ilgili kullanıcının tam adını almak için: SELECT b.bookName, b.createDate, u.fullName FROM books b JOIN users u ON u.id = b.userId WHERE b.createDate BETWEEN 'başlangıçTarihi' AND 'bitişTarihi'; Burada 'başlangıçTarihi' ve 'bitişTarihi' yerine istediğiniz tarih aralığını belirtmeniz gerekmektedir. Kullanıcının adı, telefonu ve kitap sayısını almak için: SELECT u.fullName, u.phone, COUNT(b.id) AS kitapSayisi FROM users u LEFT JOIN books b ON u.id = b.userId GROUP BY u.fullName, u.phone; Yaşı 20'den büyük olan kullanıcılara ait kitapları listelemek için aşağıdaki SQL sorgusunu kullanabilirsiniz: SELECT u.fullName, b.bookName FROM users u JOIN books b ON u.id = b.userId WHERE TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) > 20; Son 30 günde eklenen kitaplar ve sahiplerinin adını listelemek için aşağıdaki SQL sorgusunu kullanabilirsiniz: SELECT u.fullName, b.bookName FROM users u JOIN books b ON u.id = b.userId WHERE b.createDate >= DATE_SUB(CURDATE(), INTERVAL 30 DAY); Yeni bir kullanıcı eklemek için aşağıdaki SQL sorgusunu kullanabilirsiniz: INSERT INTO users (fullName, phone, birthday, regDate) VALUES ('Yeni Kullanıcı Adı', 'Yeni Kullanıcı Telefonu', 'Yeni Kullanıcı Doğum Tarihi', CURDATE()); Kullanıcı adını güncellemek için aşağıdaki SQL sorgusunu kullanabilirsiniz: UPDATE users SET fullName = 'Yeni Kullanıcı Adı' WHERE id = 'Kullanıcı ID'; Kullanıcıyı silmek için aşağıdaki SQL sorgusunu kullanabilirsiniz: DELETE FROM users WHERE id = 'Kullanıcı ID'; Hiç kitabı olmayan kullanıcıları silmek için aşağıdaki SQL sorgusunu kullanabilirsiniz: DELETE FROM users WHERE id NOT IN (SELECT DISTINCT userId FROM books); Yeni bir kullanıcı eklemek için MySQL'de bir stored procedure (saklı procedure) oluşturabilirsiniz. İşte bir örnek: DELIMITER // CREATE PROCEDURE AddNewUser( IN p_fullName VARCHAR(255), IN p_phone VARCHAR(255), IN p_birthday DATE ) BEGIN INSERT INTO users (fullName, phone, birthday, regDate) VALUES (p_fullName, p_phone, p_birthday, CURDATE()); END // DELIMITER ; Kullanıcı adını güncellemek için MySQL'de bir stored procedure (saklı procedure) oluşturabilirsiniz. İşte bir örnek: DELIMITER // CREATE PROCEDURE UpdateUserName( IN p_userId INT, IN p_newFullName VARCHAR(255) ) BEGIN UPDATE users SET fullName = p_newFullName WHERE id = p_userId; END // DELIMITER ; Yukarıdaki SQL sorgularında, "users" ve "books" tablolarını kullanarak veritabanından istediğiniz verileri çekebilirsiniz. Sorguları veritabanınıza uygun şekilde düzenleyebilirsiniz.