Хранение информации сайтами и компьютерами является обязательным условием обработки поступающих данных. Для этого создаются целые базы. Работа с собранными материалами проводится при помощи специальных команд. Они называются запросы SQL. Так характеризуют непроцедурный декларативный язык. Пользователь будет «говорить», что делать со сведениями, не ссылаясь на необходимые способы.
У SQL несколько диалектов, которые служат производными основного языка. Ситуация напрямую зависит от используемой БД. На практике чаще всего выделяют:
- MySQL;
- Postgre;
- Microsoft SQL Server.
Запрос SQL – объект, имеющий классификацию по различным категориям. Это помогает понять, для каких целей используется та или иная команда.
Языки запросов
Можно легко запутаться, если не изучить разделение БД на различные крупные категории. Их называют языками. Выделяют следующие варианты:
- DDL – определение информации. Используется для создания непосредственных запросов в базах, а также при описании их структур. Основополагающая всего «архива».
- DML – манипулирование. Включает команды, использование которых позволяет проводить всевозможные действия с материалами. С их помощью можно вносить корректировки. Составляют основную часть операторов.
- DCL – управление данными. Используется для работы с командами, отвечающими за разрешения, права, а также иные параметры СУБД.
- TCL – управление транзакциями. Конструкции задействуются при управлении корректировками запросов SQL совместно с DML. Последние операции могут объединяться в целые наборы транзакций.
Других языковых представлений базы данных не предусматривают. Далее будут рассмотрены ключевые операции и операторы.
Классификация – основное
В любой базе данных выделяют 4 «главных» типа запроса. Они относятся к SML-языку. Используя их, человек получит возможность выполнения основной массы задач.
Речь идет о следующих вариантах:
- Insert – данные в таблице добавляются (новые строки);
- Select – выбор;
- Update – обновление сведений;
- Delete – удаление строчки.
У каждого собственные операторы и функционал, задействованный для манипуляций с таблицами. Так, вторая операция обладает наибольшим количеством опций. Есть и дополнительные виды запросов, которые применяются на практике совместно с “Селектом» – join/union. Но они пригодятся при более углубленном изучении темы.
Простые запросы
Программистам приходится работать в основном с так называемыми простыми командами. Это – основа, без которой дальнейшее изучение БД и их корректировка невозможна. Рассмотрим несколько «ключевых» операций.
Создание
Первое, с чем предстоит столкнуться каждому – это с созданием таблиц. Чтобы получить новую базу, используется операция Create table. Параметрами послужат количество колонок и их типы.
Можно создать табличку в виде своеобразного календаря. Путь в ней будут следующие элементы:
- id – номер месяца;
- days – количество дней в выбранном периоде;
- name – как называется месяц.
В конечном итоге кодовая комбинация получит следующий вид:
Create table calendar (id int, name varchar (10), days int);
Здесь используются целочисленные типы, а также предельная длина строчки name составляет 10 символов.
При создании таблицы обязательно делать колонку primary key, в которой значения будут уникальными. Обычно таковой служит ID. Рассмотренный пример позволяет присвоить соответствующий параметр колонке name. Все названия месяцев сами по себе уникальные.
Ввод информации
Простые запросы БД включают в себя внесение данных в таблицы. Далее представлены примеры с уже созданным хранилищем «Календарь».
Существуют различные варианты ввода нового материала. Но ключевой командой является Insert. В первом случае названия колонок не указываются. Значения принимаются в порядке, прописанном в таблице:
Insert into calendar values (1, ‘January’,31);
Этот вариант не подходит, если пользователь в будущем захочет добавить несколько новых строк. Все старые запросы перестанут работать. Во избежание соответствующей проблемы лучше прибегать ко второму варианту. В нем полностью прописываются названия колонок:
Insert into calendar (id,name,days) values (2, ‘February’, 28);
Если пользователь не указывает ту или иную колонку, система присвоит ей значение Null или то, что было задано по умолчанию.
Вывод на экран
Следующая команда необходима, когда хочешь посмотреть, что написано в БД. Выводит на дисплей запрошенную строчку или всю таблицу целиком.
Самый простой метод вывода – отправка на обработку команды «Селект». И вот примеры ее использования:
- Select * From Finances. На экране появится табличка со всеми материалами, занесенными в «архив» под названием Finances. «Звездочка» указывает на то, что пользователь желает увидеть все строчки и столбцы без исключений.
- Select name, home from Finances. Покажет столбцы, относящиеся к разделу «home». Для вывода конкретного столбца из таблички БД вместо «*» задействуется «name».
- Select name, home from “Finances” order by name Desc. Рассортирует записи по убыванию в разделе «home». У Order by несколько классификаторов – desc – по убыванию, asc – по возрастанию (устанавливается изначально).
Но и это еще далеко не все «элементарные» запросы БД. Иногда приходится прибегать к более сложным командам.
Фильтрование
Если нужно вывести на экран строки по заданному условию, задействуется операция where:
Select*
From Finances
Where home = “products”;
На экран выведутся все строки с расходами на продукты. Очень удобно, особенно при работе с большими БД.
Логика и математика
Прибегая к использованию «архивов» с информацией на компьютерах, пользователи могут сталкиваться с различными операциями. Иногда требуется сравнить значения в двух или нескольких столбцах, выведя на экран только материалы, соответствующие заданным значениям.
Создана таблица, хранящая информацию о самых популярных мировых музыкальных альбомах за все времена. На экран требуется вывести только рок-композиции с продажами не более 40 000 000 штук. Для этого предстоит использовать Where с логическими операторами And/or и математическими сравнительными знаками:
Select *
From albomy
Where zhanr = ‘rock’ and sales_millions <= 40
Order by released
Также могут использовать различные дополнительные команды с Where:
- In – значение в столбце сравнивается с несколькими возможными. Присваивается true, если хотя бы один из вариантов совпал.
- Between – используется для проверки нахождения значения в определенном промежутке.
- Like – поиск по заданным шаблонам.
А вот примеры, которые позволяют лучше понять запрос SQL (работа с табличкой по продажам музыкальных альбомов):
- Select * from albomy where zhanr in (‘alt’, ‘pop’); — на дисплей выводится информация об альбомах альтернативы и поп-музыки.
- Select * from albomy where released between 2000 and 2010;.
- Select * from albomy where albom_name like ‘%Z%’; — показывает все альбомы, содержащие в названии «Z». Здесь «%» указывает на любую последовательность символов. Если требуется отображение музыкальных «архивов», начинающихся на с буквы Z, последняя запись получит вид ‘Z%’.
Команда имеет инверсию. Достаточно написать перед логическим выражением Not.
Удаление
Если создана таблица с большим количеством строк, можно внести некие корректировки в нее. Довольно простой операцией является команда Delete. Достаточно указать, от чего конкретно требуется избавиться:
Delete From razvitye
Where id = 8;
Соответствующий запрос SQL уберет из таблицы «Развитие» 8 строчку. Аналогичным образом на примерах, указанных выше, объединяют несколько команд для стирания сразу нескольких строчек.
Внимание: если отсутствует запись «Where», система сотрет каждую ссылку (строчку) с информацией. Произойдет полная очистка полей.
А вот для избавления от всех сведений в таблице с ее сохранением требуется воспользоваться Truncate:
Truncate Table name_table;
Если требуется избавиться от всего архива безвозвратно, применяется Drop.
Функции
Запрос SQL имеет очень много функций, используемых для совершения тех или иных операций. Вот самые активно задействованные из них:
- Count() – возвращение числа строк;
- Sum() – возврат сумм всех полей со значениями числового характера;
- Avg() – среднее значение;
- Min()/Max() – показывает минимальные/максимальные сведения.
Наглядные примеры будут рассматриваться по таблице Albom, упомянутой выше по тексту:
- Select max (released) From albom; — год самого старого выпущенного альбома.
- Select name, avg(vozrast) from albom; Group by name – позволяет показать имя и среднее значение.
Но и это еще не все. Есть так называемые сложные запросы, задействованные при использовании результатов проведенных вычислений или для работы сразу с несколькими табличками.
Сложные запросы
Сложный запрос SQL – это более одного из перечисленных команд. Их комбинация, манипулирующая сведениями, образованными так называемыми «подзапросами». Существуют различные варианты, но внимание необходимо уделить самым распространенным из них.
Вложенные «Селект»
Иногда может потребоваться объединение нескольких операций с последующим выводом определенных строк из «архива». Для этого используются не простые запросы, а сложные.
На примере работы с таблицей по музыкальным альбомам: требуется вывести на экран исполнителя, год выпуска, а также альбом, который является самым старым из всех.
Столбцы отобразятся при помощи “Селекта» с продолжением artist, albom_name, releaser From albomy;, а для вывода наиболее «молодого» музыкального сборника используется Select Min(released) From albomy;.
Далее запросы требуется объединить при помощи Where. Получится запись типа:
Select artist,albom_name,released
From albomy
Where released = (
Select Min(released) From albomy
);
Соединение
Обычно запрос SQL задействует несколько табличек для вывода информации на экран. Работа с большим количеством БД производится через «сложные операции».
Есть два виртуальных хранилища информаций: разработчики и выпущенные игры. Первая называется igry и включает в себя столбец razrabotchick_id. Типы соответствующих строк во втором случае – foreign_key. Связующее звено между двумя архивами.
При желании отобразить все материалы об игрушке, включая ее разработчика, требуется подключение второй таблицы. Делается это посредством Inner Join:
SELECT igry.name, igry.genre, game_developers.name, game_developers.country
FROM igry
INNER JOIN razrabotchicki
ON igry.developer_id = razrabotchick.id;
Join используется по-разному. К примеру, для присвоения псевдонима.
Псевдонимы
Если хорошо рассмотреть предыдущий «код», можно заметить присутствие двух столбцов с одним именем «name». Данный момент способен запутать даже опытного программиста. Поэтому некоторым столбцам присваивают псевдонимы. Для этого используется слово AS:
SELECT games.name, games.genre, devs.name AS developer, devs.country
FROM igry AS games
INNER JOIN razrabotchiki AS devs
ON razrabotchik_id = devs.id;
Подобная команда делает таблицу более красивой и удобной.
Корректировка
Вложенные запросы – не единственное, о чем должен знать человек, работающий с электронными материалами и их хранилищем. Корректировка информации тоже является сложной командой. Включает в себя ключевую фразу Update, вписанную в команду.
Ее использование подразумевает:
- выбор базы, в которой есть поле, подлежащее корректировке;
- ввод новых значений;
- использование Where для обозначения определенного места в табличке.
Имеется архив с самыми «дорогими» сериалами, показываемых по ТВ. Но «Игра Престолов» там фигурирует в качестве анимэ. Это требуется изменить:
UPDATE tv_serialy
SET genre = ‘fantasy’
WHERE name = ‘Game of Thrones’;
Теперь жанр данного сериала – фэнтэзи.
Исключающая выборка
Следующий запрос SQL лучше рассматривать на наглядном примере. Есть две таблицы – с названиями книг и авторами. Первая называется nBooks, вторая nAvtors. Требуется сделать выборку, авторами которых НЕ будут включать в себя имена «Александр» и «Владимир». Работа осуществляется с nBooks:
SELECT *
FROM nBooks
WHERE Author != ALL(SELECT AuthorId FROM nAvtors WHERE AuthorFirstName IN ('Александр', 'Владимир'));
Теперь ясно, как выглядят запрос SQL в том или ином случае. Это основные примеры, которые помогают понять использование различных операторов и команд. По каждому диалекту Structured Query Language интересующие сведения уточняются индивидуально.