- Создание таблицы
- SELECT
- LIMIT
- WHERE
- OR, AND
- NULL
- LIKE
- Интервалы
- ORDER BY
- SQL функции (AVG, ROUND, MAX, MIN, SUM, COUNT)
- DISTINCT
Создайте таблицу книги используя этот запрос:
CREATE TABLE книги (
isbn VARCHAR(20),
название TEXT,
автор TEXT,
переводчик TEXT,
формат TEXT,
страницы INT,
издательство TEXT,
опубликовано DATE,
год INT,
голоса INT,
рейтинг NUMERIC(3,2)
);
Добавьте данные:
INSERT INTO книги (isbn, название, автор, переводчик, формат, страницы, издательство, опубликовано, год, голоса, рейтинг)
VALUES
('978-5-1234-5670-1', 'Жизнь и судьба', 'Василий Гроссман', 'Ирина Кузнецова', 'Твердая', 912, 'Издательство Восток', '2018-03-12', 2018, 2541, 4.80),
('978-5-1234-5671-8', 'Зулейха открывает глаза', 'Гузель Яхина', 'Анна Сидорова', 'Мягкая', 480, 'Молодая Гвардия', '2020-09-21', 2020, 3210, 4.70),
('978-5-1234-5672-5', 'Лавр', 'Евгений Водолазкин', 'Мария Белова', 'Твердая', 368, 'Эксмо', '2019-05-15', 2019, 4120, 4.32),
('978-5-1234-5673-2', 'Авиатор', 'Евгений Водолазкин', 'Мария Белова', 'Мягкая', 320, 'Эксмо', '2021-02-15', 2021, 5611, 4.18),
('978-5-1234-5674-9', 'Метро 2033', 'Дмитрий Глуховский', 'Мария Смирнова', 'Мягкая', 330, 'АСТ', '2018-09-02', 2018, 9420, 3.85),
('978-5-1234-5675-6', 'Текст', 'Дмитрий Глуховский', 'Александр Сидоров', 'Мягкая', 320, 'Эксмо', '2019-05-01', 2019, 17845, 4.07),
('978-5-1234-5676-3', 'Зулейха и её судьба', 'Гузель Яхина', 'Анна Сидорова', 'Твердая', 416, 'Молодая Гвардия', '2021-06-10', 2021, 3724, 4.24),
('978-5-1234-5677-0', 'Соловьёв и Ларионов', 'Евгений Водолазкин', 'Мария Белова', 'Твердая', 256, 'Эксмо', '2018-11-07', 2018, 4120, 3.94),
('978-5-1234-5678-7', 'Обливион', 'Сергей Лебедев', 'Антон Лебедев', 'Мягкая', 360, 'НЛР', '2021-07-22', 2021, 1918, 3.88),
('978-5-1234-5679-4', 'Время прощаний', 'Ольга Славникова', 'Мария Смирнова', 'Твердая', 448, 'Corpus Press', '2022-01-18', 2022, 1853, 3.96),
('978-5-1234-5680-0', 'Серые пчёлы', 'Андрей Курков', 'Борис Дралюк', 'Мягкая', 400, 'Фолио', '2022-06-08', 2022, 5256, 4.17),
('978-5-1234-5681-7', 'Смерть и пингвин', 'Андрей Курков', 'Георг Бёрд', 'Мягкая', 304, 'Фолио', '2020-03-03', 2020, 7428, 4.05),
('978-5-1234-5682-4', 'Гора и стена', 'Алиса Ганиева', 'Карол Апполлио', 'Мягкая', 320, 'НЛР', '2021-07-11', 2021, 1543, 3.64),
('978-5-1234-5683-1', 'Невеста и жених', 'Алиса Ганиева', 'Карол Апполлио', 'Мягкая', 272, 'АСТ', '2020-09-22', 2020, 1675, 3.71),
('978-5-1234-5684-8', 'Город мечты', 'Алексей Иванов', 'Екатерина Юнг', 'Твердая', 480, 'Эксмо', '2021-11-30', 2021, 5123, 4.09),
('978-5-1234-5685-5', 'Сердце Пармы', 'Алексей Иванов', 'Екатерина Юнг', 'Мягкая', 640, 'АСТ', '2020-12-14', 2020, 3850, 4.19),
('978-5-1234-5686-2', 'Забор', 'Захар Прилепин', 'Андрей Рейнольдс', 'Мягкая', 416, 'АСТ', '2019-08-16', 2019, 1735, 3.58),
('978-5-1234-5687-9', 'Клуастер', 'Захар Прилепин', 'Андрей Рейнольдс', 'Твердая', 560, 'АСТ', '2020-06-01', 2020, 4679, 4.02),
('978-5-1234-5688-6', 'Метель', 'Владимир Сорокин', 'Джейми Гамбелл', 'Твердая', 256, 'Corpus Press', '2021-01-05', 2021, 3800, 3.89),
('978-5-1234-5689-3', 'Теллурия', 'Владимир Сорокин', 'Макс Лоутон', 'Мягкая', 480, 'Corpus Press', '2022-04-22', 2022, 2901, 4.11),
('978-5-1234-5690-9', 'День опричника', 'Владимир Сорокин', 'Джейми Гамбелл', 'Мягкая', 320, 'Corpus Press', '2020-10-02', 2020, 4156, 3.77),
('978-5-1234-5691-6', 'Ледяная трилогия', 'Владимир Сорокин', 'Джейми Гамбелл', 'Мягкая', 704, 'АСТ', '2020-07-21', 2020, 3810, 3.83),
('978-5-1234-5692-3', 'Анима', 'Мария Галина', 'Мария Смирнова', 'Мягкая', 368, 'Эксмо', '2021-03-27', 2021, 963, 3.75),
('978-5-1234-5693-0', 'Свет и тьма', 'Михаил Шишкин', 'Андрей Бромфилд', 'Мягкая', 384, 'АСТ', '2020-05-05', 2020, 3674, 4.15),
('978-5-1234-5694-7', 'Волосы девы', 'Михаил Шишкин', 'Мария Смирнова', 'Твердая', 480, 'АСТ', '2021-07-29', 2021, 2845, 4.22),
('978-5-1234-5695-4', 'Сад', 'Татьяна Толстая', 'Джейми Гамбелл', 'Мягкая', 352, 'АСТ', '2021-02-20', 2021, 1456, 3.86),
('978-5-1234-5696-1', 'Слинкс', 'Татьяна Толстая', 'Джейми Гамбелл', 'Твердая', 368, 'АСТ', '2020-01-09', 2020, 3250, 3.94),
('978-5-1234-5697-8', 'Завтра', 'Дмитрий Быков', 'Андрей Рейнольдс', 'Мягкая', 416, 'Эксмо', '2020-08-14', 2020, 4920, 4.12),
('978-5-1234-5698-5', 'Орфография', 'Дмитрий Быков', 'Андрей Рейнольдс', 'Твердая', 512, 'АСТ', '2021-10-10', 2021, 4102, 4.01),
('978-5-1234-5699-2', 'Лавр. Дополненное', 'Евгений Водолазкин', 'Мария Белова', 'Твердая', 400, 'Эксмо', '2022-03-02', 2022, 2543, 4.27),
('978-5-1234-5700-5', 'Похороните меня за плинтусом', 'Павел Санаев', 'Екатерина Юнг', 'Мягкая', 208, 'Эксмо', '2019-04-12', 2019, 2845, 3.91),
('978-5-1234-5701-2', 'Пищеблок', 'Сергей Лебедев', 'Антон Лебедев', 'Мягкая', 320, 'НЛР', '2020-09-03', 2020, 1650, 3.88),
('978-5-1234-5702-9', 'Маленькая жизнь', 'Александр Кабаков', 'Мария Смирнова', 'Твердая', 416, 'Corpus Press', '2020-01-28', 2020, 4105, 4.05),
('978-5-1234-5703-6', 'Счастье моё', 'Александр Кабаков', 'Мария Смирнова', 'Мягкая', 384, 'Corpus Press', '2021-06-02', 2021, 2980, 3.97),
('978-5-1234-5704-3', 'Живые и мертвые', 'Василий Гроссман', 'Ирина Кузнецова', 'Твердая', 912, 'Издательство Восток', '2019-11-12', 2019, 2415, 4.78),
('978-5-1234-5705-0', 'Идеальная пара', 'Татьяна Толстая', 'Джейми Гамбелл', 'Мягкая', 272, 'АСТ', '2020-03-11', 2020, 1932, 3.85),
('978-5-1234-5706-7', 'Порог', 'Владимир Сорокин', 'Макс Лоутон', 'Твердая', 384, 'Corpus Press', '2021-08-18', 2021, 2750, 4.00),
('978-5-1234-5707-4', 'Время секонд-хэнд', 'Владимир Сорокин', 'Джейми Гамбелл', 'Мягкая', 416, 'Corpus Press', '2022-02-22', 2022, 3180, 4.05),
('978-5-1234-5708-1', 'Девушка с Земли', 'Михаил Шишкин', 'Андрей Бромфилд', 'Твердая', 432, 'АСТ', '2021-03-07', 2021, 2950, 4.17),
('978-5-1234-5709-8', 'Дети Арбата', 'Анатолий Рыбаков', 'Сергей Ковалёв', 'Твердая', 768, 'Эксмо', '2019-07-22', 2019, 4652, 4.33),
('978-5-1234-5710-4', 'Уроки французского', 'Эмиль Золя', 'Мария Смирнова', 'Мягкая', 368, 'Corpus Press', '2020-05-19', 2020, 2832, 3.95),
('978-5-1234-5711-1', 'Белая гвардия', 'Михаил Булгаков', 'Ирина Кузнецова', 'Твердая', 592, 'Эксмо', '2021-01-12', 2021, 5124, 4.21),
('978-5-1234-5712-8', 'Мастер и Маргарита', 'Михаил Булгаков', 'Ирина Кузнецова', 'Твердая', 672, 'Эксмо', '2018-10-31', 2018, 6783, 4.52),
('978-5-1234-5713-5', 'Собор', 'Александр Куприн', 'Мария Смирнова', 'Мягкая', 432, 'АСТ', '2019-11-18', 2019, 3921, 4.03),
('978-5-1234-5714-2', 'Пиковая дама', 'Александр Пушкин', 'Ирина Кузнецова', 'Твердая', 176, 'Эксмо', '2020-02-14', 2020, 4832, 4.28),
('978-5-1234-5715-9', 'Анна Каренина', 'Лев Толстой', 'Мария Смирнова', 'Твердая', 864, 'АСТ', '2021-06-01', 2021, 12583, 4.56),
('978-5-1234-5716-6', 'Война и мир', 'Лев Толстой', 'Ирина Кузнецова', 'Твердая', 1296, 'Эксмо', '2019-09-22', 2019, 14245, 4.61),
('978-5-1234-5717-3', 'Хождение по мукам', 'Александр Фадеев', 'Андрей Бромфилд', 'Мягкая', 832, 'АСТ', '2020-04-15', 2020, 6542, 4.18),
('978-5-1234-5718-0', 'Черный человек', 'Анна Ахматова', 'Мария Смирнова', 'Мягкая', 224, 'Corpus Press', '2021-07-20', 2021, 2750, 3.97),
('978-5-1234-5719-7', 'Реквием', 'Анна Ахматова', 'Ирина Кузнецова', 'Твердая', 160, 'Corpus Press', '2020-12-14', 2020, 3430, 4.12),
('978-5-1234-5720-3', 'Петр Первый', 'Александр Пушкин', 'Мария Смирнова', 'Твердая', 896, 'Эксмо', '2019-06-22', 2019, 4812, 4.23),
('978-5-1234-5721-0', 'Жизнь Клима Самгина', 'Максим Горький', 'Александр Сидоров', 'Твердая', 832, 'АСТ', '2018-08-15', 2018, 3625, 4.08),
('978-5-1234-5722-7', 'На дне', 'Максим Горький', 'Мария Смирнова', 'Мягкая', 368, 'АСТ', '2021-01-03', 2021, 2958, 4.01),
('978-5-1234-5723-4', 'Тихий Дон', 'Михаил Шолохов', 'Ирина Кузнецова', 'Твердая', 1024, 'Эксмо', '2020-11-05', 2020, 11205, 4.49),
('978-5-1234-5724-1', 'Поднятая целина', 'Михаил Шолохов', 'Мария Смирнова', 'Твердая', 896, 'Эксмо', '2019-05-22', 2019, 9320, 4.37),
('978-5-1234-5670-2', 'Жамиля', 'Чынгыз Айтматов', NULL, 'Твердая', 912, 'Издательство Восток', '2010-03-12', 2010, 2544, 5.00),
('978-5-1234-5670-2', 'Жамиля', 'Чынгыз Айтматов', NULL, 'Твердая', 912, 'Издательство Восток', '2010-03-12', 2010, 2544, 5.00);
SELECT
У нас есть таблица с названием книга в базе данных.
Давайте посмотрим какие данные имеются в это таблице.
Используйте SELECT в переводе на русский обозначает ВЫБРАТЬ, чтобы выбрать какие-то или все строки из таблицы.
SELECT *
FROM книги;
В таблица имеются много столбцов, вместо того чтобы показать все столбцы, мы можем показать только которые хотим, например только имя автора книги.
SELECT автор
FROM книги;
Мы можем выбрать несколько столбцов.
SELECT название, автор FROM книги;
LIMIT
Если в таблице базы данных содержится миллион строк, с помощью LIMIT мы можем вывести только определённое количество строк.
SELECT *
FROM книги
LIMIT 10;
WHERE
Ключевое слово WHERE, в переводе на русский ГДЕ, используется, чтобы выбрать строки по определённому условию. Оно выводит только те строки, для которых это условие выполняется.
SELECT *
FROM книги
WHERE автор='Лев Толстой';
Это запрос покажет все данные книг Лев Толстоя.
Выбрать все столбцы из таблицы книги где автор='Лев Толстой'
SELECT автор, название, год
FROM книги
WHERE год=2021;
Выбери столбцы автор, название книги, год публикации
из таблицы книги
где год=2021
Покажет все книги которые были опубликованы в 2021 году.
SELECT автор, название, год
FROM книги
WHERE год!=2021;
Покажет все книги которые не были опубликованы в 2021 году.
Операторы, которые можно использовать для указания условий в SQL:
= — «равно»,
!= — «не равно»,
<> — тоже «не равно».**
SELECT автор, название, год
FROM книги
WHERE год<>2021;
Ещё один способ получить тот же результат — использовать ключевое слово NOT.
SELECT автор, название, год
FROM книги
WHERE NOT год=2021;
OR, AND
OR = или
AND = и
Чтобы выбрать название, авторы, и год публикации книг которые были опубликованы в 2020 или 2021 году.
SELECT название, автор, год
FROM книги
WHERE год=2020 OR год=2021;
Чтобы выбрать книги Лев Толстоя которые были опубликованы в 2019 году.
SELECT название, автор, год
FROM книги
WHERE автор='Лев Толстой' AND год=2019;
Чтобы выбрать книги Лев Толстоя которые были опубликованы либо в 2019 или 2021 году.
SELECT название, автор, год
FROM книги
WHERE автор='Лев Толстой' AND (год=2019 OR год=2021);
NULL
Иногда в таблицах могут отсутствовать данные. NULL — это специальное значение, которое показывает, что у каких-то данных нет значения или они отсутствуют в таблице.
Например, в нашей базе данных у книг есть автор и переводчик. Однако только некоторые книги были переведены на английский язык. Для остальных значение переводчика будет NULL.
Условия, которые используются с NULL, — это IS NULL и IS NOT NULL.
Чтобы выбрать книги, у которых нет переводчика, мы можем выполнить такой запрос:
SELECT название, переводчик
FROM книги
WHERE переводчик IS NULL;
Чтобы выбрать книги, у которых есть переводчика:
SELECT название, переводчик
FROM книги
WHERE переводчик IS NOT NULL;
LIKE
LIKE=похоже на
Это ключевое слово используется, чтобы выбрать данные, которые примерно совпадают с указанной строкой.
Например, LIKE можно использовать, чтобы выбрать книги, в названии которых есть определённое слово или фраза.
LIKE используется вместе с оператором %, который обозначает любые символы до или после заданной строки.
% означает любое количество любых символов (включая ноль).
SELECT автор
FROM книги
WHERE автор LIKE 'Чынгыз%';
Выбери автор чьё имя начинается с Чынгыз
Если % означает любое количество любых символов (включая ноль), то _ означает ровно один любой символ.
SELECT автор
FROM книги
WHERE автор LIKE 'Чынгыз Айтмато_';
Если не знаем последний символ.
Интервалы
В условиях можно использовать операторы <, >, <=, >=, чтобы выбрать значения в определённом диапазоне.
Например, чтобы выбрать все книги, с 2019 по 2022 год (включительно), можно выполнить такой запрос:
SELECT название, год
FROM книги
WHERE год >= 2019 AND год <= 2022;
Другой способ получить тот же результат
SELECT название, год
FROM книги
WHERE год BETWEEN 2019 AND 2022;
Выбери книги у которых больше 4.0 рейтинга
SELECT название, рейтинг
FROM книги
WHERE рейтинг > 4.0;
SELECT название, рейтинг, голоса
FROM книги
WHERE рейтинг > 4.0 AND голоса > 10000;
ORDER BY
ORDER BY = группировать по
Позволяет группировать по заданному столбцу.
SELECT название, рейтинг
FROM книги
ORDER BY рейтинг;
Выбери книги и группируй по рейтингу по возрастанию
SELECT название, рейтинг
FROM книги
ORDER BY рейтинг DESC;
Выбери книги и группируй по рейтингу по убыванию
SELECT название
FROM книги
ORDER BY название;
SQL функции
AVG = Average = Среднее значение
SELECT AVG(рейтинг)
FROM книги;
Выбери среднее значение всех книг
ROUND = Округлять
SELECT ROUND(AVG(рейтинг))
FROM книги;
Выбери среднее значение всех книг и округли это среднее значение
MAX = Maximum = Максимум
SELECT MAX(рейтинг)
FROM книги;
Выбери максимум рейтинг из таблицы
MIN = Minimum = Минимум
SELECT MIN(рейтинг)
FROM книги;
Выбери минимум рейтинг из таблицы
SUM = сумма
SELECT SUM(голосы)
FROM книги;
Выбери сумму голос из таблицы
COUNT = Количество
SELECT COUNT(*)
FROM книги;
Выбери количество всех книг
SELECT COUNT(переводчик)
FROM книги;
Выбери количество всех переводчиков
SELECT COUNT(издательство)
FROM книги;
Выбери количество всех издательств
DISTINCT
DISTINCT = уникальные или без повторений.
SELECT *
FROM книги
WHERE автор = 'Чынгыз Айтматов';
После выполнения запроса вы увидите что произведение "Жамиля" был дважды добавлен в базу данных. Это не правильно, нам не нужны копии данных.
Чтобы выбрать только уникальные данные которые не повторяются:
SELECT DISTINCT(автор)
FROM книги
WHERE автор = 'Чынгыз Айтматов';
SELECT COUNT(DISTINCT(издательство))
FROM книги;
Выбрать не повторяющиеся, уникальное количество издательств
Top comments (0)