Создадим таблицу, в которой будут храниться данные о студентах
Copy CREATE TABLE students (idMan INTEGER, nameMan TEXT);
Заполним таблицу данными
Copy INSERT INTO students (idMan, nameMan) VALUES (2, 'Maxim');
INSERT INTO students (idMan, nameMan) VALUES (5, 'Nina');
INSERT INTO students (idMan, nameMan) VALUES (3, 'Ann');
INSERT INTO students (idMan, nameMan) VALUES (4, 'George');
Выборка
Выбрать все записи таблицы
Copy SELECT * FROM students;
Выбрать все записи из таблицы и упорядочить их по полю idMan
Copy SELECT * FROM students ORDER BY idMan;
Проекция
Выбрать содержимое столбца nameMan
Copy SELECT nameMan FROM students;
Объединение
Создадим таблицу, хранящую информацию о геймерах. Таблица имеет те же столбцы, что и предыдущая таблица.
Copy CREATE TABLE gamers (idMan INTEGER, nameMan TEXT);
Заполним таблицу, хранящую информацию о геймерах
Copy INSERT INTO gamers (idMan, nameMan) VALUES (2, 'Maxim');
INSERT INTO gamers (idMan, nameMan) VALUES (8, 'Oleg');
INSERT INTO gamers (idMan, nameMan) VALUES (5, 'Nina');
INSERT INTO gamers (idMan, nameMan) VALUES (9, 'Piter');
Объединим две таблицы в одну с удалением лишних дублей
Copy SELECT * FROM students UNION SELECT * FROM gamers;
Пересечение
Выбрать записи, которые есть в обеих таблицах
Copy SELECT * FROM students NATURAL JOIN gamers;
Соединение
Создадим таблицу для хранения информации о странах
Copy CREATE TABLE countries (countryId INTEGER, countryName TEXT);
Создадим таблицу для хранения информации о городах
Copy CREATE TABLE cities (cityId INTEGER, cityName TEXT, countryNumber INTEGER);
Заполним информацией таблицу, хранящую страны
Copy INSERT INTO countries (countryId, countryName) VALUES (1, 'Russia');
INSERT INTO countries (countryId, countryName) VALUES (2, 'USA');
Заполним информацией таблицу, хранящую города
Copy INSERT INTO cities (cityId, cityName, countryNumber) VALUES (10, 'Moscow', 1);
INSERT INTO cities (cityId, cityName, countryNumber) VALUES (20, 'Omsk', 1);
INSERT INTO cities (cityId, cityName, countryNumber) VALUES (30, 'New-York', 2);
INSERT INTO cities (cityId, cityName, countryNumber) VALUES (40, 'Washington', 2);
Вывести таблицу, в которой отображается информация о городе и стране, в которой он находится
Copy SELECT * FROM cities INNER JOIN countries ON (countryNumber = countryId);
Вывести два столбца: название города и название страны, в которой он находится
Copy SELECT cityName, countryName FROM
(SELECT * FROM cities INNER JOIN countries ON (countryNumber = countryId)) AS myTab1;
Произведение
Создадим таблицу, хранящую информацию о мальчиках
Copy CREATE TABLE boys (boy_id SERIAL PRIMARY KEY, boy_name TEXT );
Создадим таблицу, хранящую информацию о девочках
Copy CREATE TABLE girls ( girl_id SERIAL PRIMARY KEY, girl_name TEXT );
Заполним таблицу с мальчиками
Copy INSERT INTO boys (boy_name) VALUES ('Maxim');
INSERT INTO boys (boy_name) VALUES ('George');
Заполним таблицу с девочками
Copy INSERT INTO girls (girl_name) VALUES ('Ann');
INSERT INTO girls (girl_name) VALUES ('Nina');
INSERT INTO girls (girl_name) VALUES ('Ola');
Выведем все возможные пары (девочка - мальчик)
Copy SELECT * FROM girls, boys;
Вывести все возможные пары (девочка - мальчик). Вывод только их имён.
Copy SELECT girl_name, boy_name FROM (SELECT * FROM girls, boys) AS ttt;
Разность
Создадим таблицу для хранения всех каналов
Copy CREATE table channels (slug TEXT, code INTEGER);
Заполним таблицу, хранящую все каналы
Copy INSERT INTO channels (slug, code) VALUES ( '2x2', 10 );
INSERT INTO channels (slug, code) VALUES ( 'CTC', 20 );
INSERT INTO channels (slug, code) VALUES ( 'PornoTv', 30 );
Создадим таблицу для хранения запрещённых каналов
Copy INSERT INTO prohibited_channels (slug, code) VALUES ( '2x2', 10 );
INSERT INTO prohibited_channels (slug, code) VALUES ( 'PornoTv', 30 );
Выведем на экран только разрешённые каналы.
Для этого мы вычтем из всех каналов запрещённые каналы.
Copy SELECT * FROM channels NATURAL LEFT JOIN prohibited_channels WHERE prohibited_channels IS NULL;