Add second lecture SQL examples
This commit is contained in:
parent
83391d472f
commit
aef8bfe76e
@ -30,4 +30,52 @@ 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;
|
||||
|
||||
-- PostgreSQL console command for describing the accounts table: \d accounts
|
||||
|
||||
42
lecture_2/01-definicni-prikazy.sql
Normal file
42
lecture_2/01-definicni-prikazy.sql
Normal file
@ -0,0 +1,42 @@
|
||||
-- Display the name of the current database.
|
||||
|
||||
SELECT CURRENT_DATABASE();
|
||||
|
||||
-- Create tables starting with entities that do not depend on foreign keys.
|
||||
|
||||
CREATE TABLE enclosures (
|
||||
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
area INTEGER,
|
||||
biome VARCHAR(20)
|
||||
);
|
||||
|
||||
-- Delete a table.
|
||||
DROP TABLE enclosures;
|
||||
|
||||
CREATE TABLE keepers (
|
||||
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR NOT NULL,
|
||||
salary NUMERIC(10, 3)
|
||||
);
|
||||
|
||||
CREATE TABLE animals (
|
||||
id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||||
enclosure_id INT,
|
||||
name VARCHAR NOT NULL,
|
||||
is_healthy BOOLEAN DEFAULT TRUE,
|
||||
adoption_date DATE,
|
||||
note TEXT,
|
||||
FOREIGN KEY (enclosure_id) REFERENCES enclosures (id)
|
||||
);
|
||||
|
||||
-- Junction table for the many-to-many relationship.
|
||||
CREATE TABLE animals_keepers (
|
||||
animal_id INT NOT NULL,
|
||||
keeper_id INT NOT NULL,
|
||||
PRIMARY KEY (animal_id, keeper_id),
|
||||
FOREIGN KEY (animal_id) REFERENCES animals (id),
|
||||
FOREIGN KEY (keeper_id) REFERENCES keepers (id)
|
||||
);
|
||||
|
||||
-- Change an existing table structure with ALTER TABLE.
|
||||
64
lecture_2/02-manipulacni-prikazy.sql
Normal file
64
lecture_2/02-manipulacni-prikazy.sql
Normal file
@ -0,0 +1,64 @@
|
||||
-- Use INSERT to add a record.
|
||||
INSERT INTO
|
||||
enclosures (biome, name, area)
|
||||
VALUES (
|
||||
'Arktida',
|
||||
'Ledové království',
|
||||
2500
|
||||
);
|
||||
|
||||
SELECT * FROM enclosures;
|
||||
|
||||
INSERT INTO
|
||||
enclosures (name, area, biome)
|
||||
VALUES (
|
||||
'Savanvoá pláň',
|
||||
1700,
|
||||
'Savana'
|
||||
),
|
||||
(
|
||||
'Křišťálová laguna',
|
||||
900,
|
||||
'Tropické vody'
|
||||
),
|
||||
(
|
||||
'Zelený divoký les',
|
||||
750,
|
||||
'Mírný les'
|
||||
);
|
||||
|
||||
-- Increase every enclosure area by 100 square meters.
|
||||
UPDATE enclosures SET area = area + 100;
|
||||
|
||||
SELECT * FROM enclosures;
|
||||
|
||||
-- Increase smaller enclosure areas by 50 square meters.
|
||||
|
||||
UPDATE enclosures SET area = area + 50 WHERE area < 1500;
|
||||
|
||||
-- Update multiple columns in one statement.
|
||||
UPDATE enclosures SET biome = 'Oceán', area = area + 25 WHERE id = 3;
|
||||
|
||||
-- Delete a selected record.
|
||||
|
||||
DELETE FROM enclosures WHERE id = 3;
|
||||
|
||||
SELECT * FROM enclosures;
|
||||
|
||||
INSERT INTO
|
||||
animals (name, adoption_date, note)
|
||||
VALUES (
|
||||
'hroch',
|
||||
'2026-10-25',
|
||||
'hrošík Igor'
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
animals (name, adoption_date, note)
|
||||
VALUES ('vlk', NOW(), 'pozor kouše');
|
||||
|
||||
INSERT INTO
|
||||
animals (name, adoption_date, note)
|
||||
VALUES ('vlk', NOW(), 'pozor kouše');
|
||||
|
||||
SELECT * FROM animals;
|
||||
Loading…
Reference in New Issue
Block a user