Filtrera och sortera data

Fråga en PostgreSQL-databas i Java

Miller Trujillo

Staff Software Engineer

Varför filtrera och sortera?

  • De flesta applikationer visar inte alla poster
  • Resultaten behöver begränsas
  • Data bör organiseras meningsfullt
  • Visa hanterbara mängder

$$

$$

$$

$$

  • WHERE, ORDER BY, LIMIT, OFFSET

En nätbokhandel

Fråga en PostgreSQL-databas i Java

Filtrera med WHERE

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

pstmt.setInt(1, 2000); ResultSet rs = pstmt.executeQuery();
  • Använd ? som platshållare och bind med setInt()
  • Java-koden förblir densamma, bara SQL:en ändras
Fråga en PostgreSQL-databas i Java

Kan vi filtrera i Java istället?

  • Filtrering på databasnivå:
    • Minskar mängden data som överförs ✅
    • Förhindrar nätverksbelastning ✅
    • Ger bättre prestanda ✅
  • Undantag: komplex logik (externa API:er, AI-modeller) 💡

Analogi med matbeställning

Fråga en PostgreSQL-databas i Java

Sortera med 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";
  • += lägger till text i SQL-strängen
  • ?: – ternär operator (kompakt if-else)
Fråga en PostgreSQL-databas i Java

Paginering med LIMIT och OFFSET

  • LIMIT styr hur många rader som returneras
  • OFFSET hoppar över rader innan resultaten returneras
  • ORDER BY säkerställer konsekventa resultat mellan sidor
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();
Fråga en PostgreSQL-databas i Java

Nu kör vi en övning!

Fråga en PostgreSQL-databas i Java

Preparing Video For Download...