Filtrování a řazení dat

Dotazování PostgreSQL databáze v Javě

Miller Trujillo

Staff Software Engineer

Proč filtrovat a řadit?

  • Většina aplikací nezobrazuje všechny záznamy
  • Je třeba výsledky zúžit
  • Smysluplně organizovat data
  • Zobrazovat přehledné části

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET

Online knihkupectví

Dotazování PostgreSQL databáze v Javě

Filtrování pomocí WHERE

String sql = "SELECT * FROM books WHERE publication_year > ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • Zástupný znak ? svázán pomocí setInt()
  • Kód v Javě zůstává stejný, mění se pouze SQL
Dotazování PostgreSQL databáze v Javě

Lze filtrovat v Javě místo toho?

  • Filtrování na úrovni databáze:
    • Snižuje přenášené množství dat ✅
    • Zabraňuje přetížení sítě ✅
    • Zajišťuje lepší výkon ✅
  • Výjimka: složitá logika (externí API, modely AI) 💡

Analogie s objednávkou jídla

Dotazování PostgreSQL databáze v Javě

Řazení pomocí ORDER BY

String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year DESC";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 3);
ResultSet rs = pstmt.executeQuery();
// Adding dynamic behavior
boolean desc = true;
String sql = "SELECT title, publication_year FROM books
WHERE category_id = ? ORDER BY publication_year ";

sql += desc ? "DESC" : "ASC";
  • += připojí text k řetězci SQL
  • ?: – ternární operátor (zkrácený if-else)
Dotazování PostgreSQL databáze v Javě

Stránkování pomocí LIMIT a OFFSET

  • LIMIT určuje počet vrácených řádků
  • OFFSET přeskočí řádky před vrácením výsledků
  • ORDER BY zajišťuje konzistentní výsledky napříč stránkami
String sql = "SELECT title FROM books ORDER BY title ASC LIMIT ? OFFSET ?";
PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, 10); // LIMIT: 10 books per page pstmt.setInt(2, 20); // OFFSET: skip first 20 rows ResultSet rs = pstmt.executeQuery();
Dotazování PostgreSQL databáze v Javě

Pojďme si procvičit!

Dotazování PostgreSQL databáze v Javě

Preparing Video For Download...