rg_backend_academy/Lecture_1/01-select.sql

85 lines
2.4 KiB
SQL

-- First lecture SELECT examples.
-- Run 01-bankovnictvi-import.sql before executing these queries.
-- This query returns all columns from the accounts table.
SELECT * FROM accounts;
-- Select only the account number and bank identifier.
SELECT account_number, bank_id FROM accounts;
-- Use WHERE to filter specific records.
SELECT * FROM accounts WHERE currency = 'CZK';
SELECT * FROM accounts WHERE balance > 1000;
SELECT * FROM accounts WHERE balance < 1000 AND currency = 'CZK';
SELECT * FROM accounts WHERE balance > 1000 AND currency = 'CZK';
SELECT *
FROM accounts
WHERE (
currency = 'USD'
OR currency = 'EUR'
)
and balance < 1000;
SELECT * FROM accounts WHERE currency IN ('CZK', 'USD');
SELECT * FROM accounts WHERE currency NOT IN ('CZK', 'USD');
SELECT * FROM clients WHERE email IS NULL;
SELECT * FROM clients WHERE email IS NOT NULL;
SELECT * FROM clients WHERE name LIKE 'Ja%';
-- Use ILIKE for a case-insensitive pattern match.
SELECT * FROM clients WHERE name ILIKE 'JA%';
-- Sort accounts by balance in ascending or descending order.
SELECT * FROM accounts ORDER BY balance;
SELECT * FROM accounts ORDER BY balance DESC;
-- Apply secondary sorting when currency values are equal.
SELECT * FROM accounts ORDER BY currency DESC, balance ASC;
-- Limit the number of returned records.
SELECT * FROM accounts ORDER BY currency DESC, balance ASC LIMIT 5;
-- Skip records before returning the limited result set.
SELECT *
FROM accounts
ORDER BY currency DESC, balance ASC
LIMIT 5
OFFSET
2;
-- Return distinct currency values without duplicates.
SELECT DISTINCT (currency) FROM accounts;
SELECT * FROM cards;
-- Return cards with their associated clients.
SELECT * FROM cards JOIN clients ON cards.client_id = clients.id;
-- Select only the required columns from joined tables.
SELECT clients.name, cards.card_number
FROM cards
JOIN clients ON cards.client_id = clients.id;
-- Use aliases to distinguish similarly named columns.
SELECT clients.id AS client_id, cards.id AS card_id
FROM cards
JOIN clients ON cards.client_id = clients.id;
SELECT * FROM accounts JOIN cards ON accounts.id = cards.account_id;
SELECT * FROM accounts LEFT JOIN cards ON accounts.id = cards.account_id;
-- Filter accounts with a balance greater than 10.
SELECT * FROM accounts WHERE balance > 10;
-- PostgreSQL console command for describing the accounts table: \d accounts