Расширенная фильтрация данных. AND и OR
Сложная фильтрация данных может использовать операторы AND и OR и операторов сравнения (=,<,>,<=,>=,<>).
Пусть таблица, содержит четыре самых продаваемых альбома. Нужно выбрать альбомы, классифицирующиеся как рок и проданы менее 50 миллионов копий.
SELECT * FROM albums WHERE genre='рок' AND sales_in_millions<=50 ORDER BY released
In/Between/Like
WHERE также поддерживает несколько специальных команд, позволяющих проверять наиболее часто используемые запросы. Вот они:
· IN –указывает диапазоны условий, которые должны выполнятся
· BETWEEN – проверяет, находится ли значение в указанном диапазоне
· LIKE – ищет по определенным паттернам
Например, если нужно выбрать альбомы с поп и соул музыкой, мы можем использовать IN("value1","value2").
SELECT * FROM albums WHERE genre IN ('pop','soul');
Если нужны альбомы, изданные между 1975 и 1985годами,то :
SELECT * FROM albums WHERE released BETWEEN 1975 AND 1985;
Функции
SQL использует много функций:
· COUNT() – возвращает количество строк
· SUM() – возвращает общую сумму числового столбца
· AVG() – возвращает среднее значение из множества значений
· MIN() / MAX() – получает минимальное / максимальное значение из столбца
Чтобы получить самый последний год в таблице нужно записать запрос:
SELECT MAX(released) FROM albums;
Подзапросы
Если нужно использовать результат от расчетов, не обойтись без вложенных запросов. Допустим нужно вывести artist, album и release year для старейшего альбома в таблице.
Получить эти конкретные столбцы:
SELECT artist, album, released FROM albums;
Получить самый ранний год:
SELECT MIN(released) FROM album;
Нужно объединить два запроса с помощью WHERE:
SELECT artist,album,released FROM albums
WHERE released = ( SELECT MIN(released) FROM albums);
Объединение таблиц
В более сложных базах данных существует несколько таблиц, связанных друг с другом. Например, представлены две таблицы о видеоиграх (video_games) и разработчиков видеоигр (game_developers).
Таблица video_games
Таблица game_developers
В таблице video_games есть колонка разработчик (developer_id), но в ней содержится целое число, а не имя разработчика. Это число представляет собой идентификатор (id) соответствующего разработчика из таблицы разработчиков игр (game_developers), связывая логически два списка, что позволяет нам использовать информацию, хранящуюся в них обоих одновременно.
Если нужно создать запрос, возвращающий все, что нужно знать об играх, можно использовать INNER JOIN для связи колонок из обеих таблиц.
SELECT video_games.name,
video_games.genre,
game_developers.name,
game_developers.country
FROM video_games
INNER JOIN game_developers
ON video_games.developer_id = game_developers.id;
Это самый простой и наиболее распространенный тип JOIN. Есть несколько других вариантов.
Алиасы
В примере две колонки называемые name. Можно установить псевдоним одного из повторяющихся столбцов, например, name из таблицы game_developers будет называться developer.
Можно сократить запрос задав псевдонимы имен таблиц: video_games назовем games, game_developers – devs :
SELECT games.name,
games.genre,
devs.name AS developer,
devs.country
FROM video_games AS games
INNER JOIN game_developers AS devs
ON games.developer_id = devs.id;
Обновление данных
В SQL с помощью инструкции UPDATE изменяются данные в некоторых строках. Инструкция UPDATE состоит из:
· Таблицы, в которой находится значение для замены;
· Имен столбцов и их новых значений;
· Выбранные с помощью WHERE строки, которые обновятся. Если этого не сделать, то изменятся все строки в таблице.
Ниже приведена таблица tv_seriesс сериалами с их рейтингом. В таблицу закралась маленькая ошибка: хотя сериал Игра престолов и описывается как комедия, он на самом деле ей не является. Исправление
Данные таблицы tv_series
UPDATE tv_series SET genre = 'драма' WHERE id = 2;
Удаление данных
Удаление строки таблицы с помощью SQL происходит при помощи выбора таблицы и строки, которую нужно удалить. Удаление из предыдущего примера последней строки в таблице tv_series делается с помощью инструкции DELETE
DELETE FROM tv_series WHERE id = 4
Будьте осторожными при написании инструкции DELETE и убедитесь, что условие WHERE присутствует, иначе все строки таблицы будут удалены!
Удаление таблицы
Удаление всех строк с сохранением таблицы выполняет команда TRUNCATE:
TRUNCATE TABLE table_name;
Удаление всей таблицы – DROP:
DROP TABLE table_name;
Дата добавления: 2022-04-12; просмотров: 116;