Joins और Subqueries के साथ काम

Java में PostgreSQL डेटाबेस को क्वेरी करना

Miller Trujillo

Staff Software Engineer

डेटा कई तालिकाओं में होता है

  • books, authors, categories, book_reviews
  • तालिकाओं के बीच डेटा मिलाना जरूरी है

लाइब्रेरी डेटाबेस में रिश्ते

Java में PostgreSQL डेटाबेस को क्वेरी करना

तालिकाएँ जोड़ना (Joining)

String sql = "SELECT b.title, a.first_name, a.last_name " +
             "FROM books b " +

"INNER JOIN book_authors ba ON b.book_id = ba.book_id " + "INNER JOIN authors a ON ba.author_id = a.author_id " +
"WHERE b.publication_year > ?";
PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, 2010); ResultSet rs = pstmt.executeQuery();
| title                                              | first_name | last_name |
| -------------------------------------------------- | ---------- | --------- |
| Effective Java                                     | Joshua     | Bloch     |
| Designing Data-Intensive Applications              | Martin     | Kleppmann |
Java में PostgreSQL डेटाबेस को क्वेरी करना

INNER बनाम LEFT JOIN

-- INNER JOIN: सिर्फ मिलते हुए रिकॉर्ड
SELECT b.title, r.rating
FROM books b
INNER JOIN book_reviews r 
    ON b.book_id = r.book_id;
-- LEFT JOIN: बाईं तालिका के सभी रिकॉर्ड
SELECT b.title, r.rating
FROM books b
LEFT JOIN book_reviews r 
    ON b.book_id = r.book_id;

Inner और Left Joins

Java में PostgreSQL डेटाबेस को क्वेरी करना

Subqueries

// सबसे हाल में प्रकाशित किताब निकालना
String sql = "SELECT title FROM books " +
             "WHERE publication_year = ( " +

" SELECT MAX(publication_year) FROM books " + ")";
PreparedStatement pstmt = conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery();
| title                                              |
| -------------------------------------------------- |
| Effective Java                                     |
| Refactoring: Improving the Design of Existing Code |
Java में PostgreSQL डेटाबेस को क्वेरी करना

Parameters के साथ Subqueries

// सभी "Fantasy" किताबें निकालना
String sql = "SELECT title FROM books " +
             "WHERE category_id IN ( " +

" SELECT category_id FROM categories WHERE name = ? " + ")";
PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, "Fantasy"); ResultSet rs = pstmt.executeQuery();
| title                                    |
| ---------------------------------------- |
| The Way of Kings                         |
| Harry Potter and the Philosopher's Stone |
Java में PostgreSQL डेटाबेस को क्वेरी करना

StringBuilder

  • + से String जोड़ना धीमा और पढ़ने में कठिन है
  • append() टेक्स्ट जोड़ता है, toString() अंतिम परिणाम देता है
StringBuilder sb = new StringBuilder("SELECT * FROM ");

sb.append("books");
sb.append(" WHERE 1=1");
sb.toString(); // SELECT * FROM books WHERE 1=1
Java में PostgreSQL डेटाबेस को क्वेरी करना

अभ्यास करते हैं!

Java में PostgreSQL डेटाबेस को क्वेरी करना

Preparing Video For Download...