Язык программирования SQL заслуженно относится к числу самых широко используемых. В этом нет ничего удивительного, так как он применяется для создания и управления базами данных, с которыми человек сталкивается буквально повсюду – при проверке электронной почты, переводе с карты или покупке в онлайн-магазине. Практически любое программное обеспечение прикладного характера, так или иначе, использует базы данных, а следовательно – и язык SQL.
SQL является языком программирования (другие названия – язык структурированных запросов, декларативный язык), который используется для создания, изменения и управления так называемыми реляционными базами данных. К последним относятся такие массивы информации, которые взаимосвязаны между собой, упорядочены и структурированы, другими словами – имеют формат таблицы.
SQL не является полноценным языком для программирования. Дело в том, что он не используется для непосредственного написания программного кода приложения. Но SQL активно применяется в функционировании внутреннего ПО веб-сайтов и онлайн-сервисов, обозначаемого как бэкенд.
Любой запрос пользователя в поисковике и почти любой обмен данными между пользователем и сервером практически всегда происходит с непосредственным использованием SQL.
Модель реляционных или структурированных БД впервые была разработана и детально описана более полувека назад - в 1970 году. Еще через четыре года был разработан язык SQL. Первый прототип СУБД появился в 1986 году в результате разработок специалистов IBM. Полноценная реляционная база данных со встроенной системой управления выпущена тогда же компанией Relation Software, позже переименованной в Oracle.
Чтобы понять правила практического использования функционала SQL, необходимо описать механизм работы запросов. Любой из них перемещается по цепочке от пользователя к таблице базы данных через нескольких посредников – клиента, систему управления и базу данных. Важно знать значения каждого из понятий:
Обычно таблицы связаны между собой ключами – специальными столбцами,
которые логически объединяют разные кластеры информации. Ключи – это
основной механизм баз данных, потому что ключи помогают быстро искать
нужную информацию и формировать новые таблицы на основе уже
существующих.
Обязательным условием задействования языка структурирования запросов выступает наличие реляционной базы данных. Самый простой и наглядный пример последней – это обычные электронные таблицы Excel. Можно выделить несколько характеристик, обязательных для подобных БД:
Выделяют три вида ключей:
Есть еще составной ключ – это когда в одной таблице находится несколько первичных ключей. Нужно это в тех ситуациях, когда уникальность элемента таблицы нужно проверять по нескольким параметрам – например, вы хотите найти в таблице не просто пиццу с грибами, а пиццу с грибами стоимостью с 990 рублей. Сложность использования составного ключа – в том, что вы обязательно должны заполнять все поля, которые указаны как ключевые. Создается составной ключ так же, как и первичный, только указываете сразу несколько полей:
create table test(field_1 int, field_2 text, field_3 bigint, primary key (field_1, field_3));
Система ключей в SQL – достаточно сложная на первый взгляд, но вы быстро привыкнете к ней, если будете постоянно работать с таблицами.
Важной частью языка выступают операторы, под которыми понимаются слова/символы, используемые для совершения различных действий с данными. Например, сортировки по возрастанию или убыванию. По функциональному назначению различают четыре группы операторов:
Эффективное использование возможностей SQL предполагает понимание задач, которые стоят перед СУБД. Современные системы управления БД способны выполнять широкий спектр функций:
Разработкой СУБД занимаются как крупные корпорации, например, Google, Amazon или Microsoft, так и специализированные компании с нишевым охватом.
Результатом стало появление нескольких разновидностей языка, часто называемых SQL-диалектами. Все они имеют общую основу, но и содержат определенные отличия, присущие только каждому конкретному проекту. Характеристики нескольких наиболее распространенных СУБД приведены в таблице.
Параметр сравнения | СУБД | ||||
MySQL | PostgreSQL | SQLite | Google Cloud Spanner | Oracle | |
Доступ | открытый | общедоступный | платный | ||
Язык разработки | С, С++ | С | С, С++ | Java, C, C++ | |
Область использования | GitHub YouTube | Skype Avito TripAdvisor Яндекс.Почта | Adobe Photoshop Opera Mozilla Firefox Viber | PayPal Lucille Games P&G | МТС ВТБ Открытие Теле2 |
Чтобы понять принципы работы SQL, достаточно просто немного разбираться в том, как функционирует обычный Excel. Также потребуется начальный уровень знания английского языка, необходимый для понимания основ синтаксиса, который представлен следующими командами:
SELECT;
FROM;
JOIN;
WHERE;
GROUP BY;
и ORDER BY;
LIMIT;
«;»
.Практически полностью идентичные команды используются для работы любых СУБД. Экран системы выглядит следующим образом.
SQL нужно постигать на практике. К счастью, для начала вам не нужно самостоятельно разворачивать sql-сервер или MySQL у себя на компьютере – можно воспользоваться онлайн-эмулятором базы данных. Выглядит он так:
Как видите, сама база и 3 таблицы в ней уже созданы. По центру – поле для ввода и поле для вывода. Пишем запрос в поле для ввода, жмем на «Run SQL» – получаем результат в поле для вывода.
Для начала освоим SELECT – введите и исполните следующую команду:
SELECT first_name, last_name FROM Customers;
SELECT – это оператор выбора, мы дали ему поля, которые нужно вывести. FROM – откуда брать информацию, мы указали, что хотим взять информацию из таблицы Customers. Результат:
SELECT – крайне мощная команда, и пользуются ей чаще всего. Поэтому вам нужно хотя бы приблизительно помнить дополнительные опции, которые к команде можно применять:
SELECT * FROM Customers;
SELECT * FROM Customers WHERE last_name = 'Doe';
SELECT * FROM Customers WHERE age > 25;
SELECT * FROM Customers WHERE last_name = 'Doe' AND country = 'USA';
SELECT first_name, country FROM Customers WHERE country IN ('USA', 'UK');
SELECT first_name, last_name FROM Customers WHERE NOT country = 'USA';
SELECT * FROM Customers WHERE (country = 'USA' OR country = 'UK') AND age < 26;
SELECT DISTINCT country FROM Customers;
SELECT COUNT(DISTINCT country) FROM Customers;
SELECT first_name AS name FROM Customers;
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM Customers;
SELECT TOP 2 * FROM Customers;
SELECT first_name, last_name FROM Customers LIMIT 2 OFFSET 3;
SELECT customer_id, first_name FROM Customers WHERE customer_id IN (SELECT customer_id FROM Orders);
SELECT * FROM Employee WHERE email IS NULL;
SELECT * FROM Customers ORDER BY first_name;
SELECT country, COUNT(*) AS number FROM Customers GROUP BY country;
Это – не все возможности SELECT, но оставшиеся вы сами найдете в мануалах при необходимости, они используются намного реже.
Вторая команда, которую стоит рассмотреть – это JOIN, объединение таблиц:
SELECT Customers.customer_id, Customers.first_name, Orders.amount FROM Customers JOIN Orders ON Customers.customer_id = Orders.customer;
Сначала мы выбираем из клиентов id, имя и сумму чека, а затем объединяем эту информацию с данными из таблицы заказов, если id покупателя совпадает в таблицах заказов и клиентов.
Команды для работы с таблицами:
CREATE DATABASE my_db;
CREATE DATABASE IF NOT EXISTS my_db;
SHOW DATABASES;
USE my_db;
CREATE TABLE Companies (id int, name varchar(50), address text, email varchar(50), phone varchar(10));
DROP DATABASE my_db;
DROP TABLE my_table;
ALTER TABLE Customers ADD phone varchar(10);
ALTER TABLE Customers RENAME COLUMN customer_id TO c_id;
ALTER TABLE Customers DROP COLUMN age;
BACKUP DATABASE my_db TO DISK = 'C:\my_db_backup.bak';
Наконец, последнее, без чего вы не сможете полноценно использовать базы данных – это изменение информации в них:
INSERT INTO Customers(customer_id, first_name, last_name, age, country) VALUES (5, 'Harry', 'Potter', 31, 'USA');
UPDATE Customers SET first_name = 'Johnny' WHERE customer_id = 1;
SELECT * INTO CustomersCopy FROM Customers;
SELECT Customers.customer_id, Customers.first_name, Orders.amount INTO CustomerOrders FROM Customers JOIN Orders ON Customers.customer_id = Orders.customer_id;
INSERT INTO OldCustomers(customer_id, age) SELECT customer_id, age FROM Customers;
SELECT * INTO NewCustomers FROM Customers WHERE false;
Различные базы данных используются повсеместно. Особенно полезным умение самостоятельно работать с СУБД с помощью SQL ними окажется для следующих категорий специалистов:
Это язык структурированных запросов (или декларативный язык программирования), который используется для backend-разработки систем управления базами данных (СУБД).
Это набор программных инструментов и средств для хранения, обработки, изменения и анализа обширных массивов информации.
С помощью SQL и созданных с его помощью СУБД осуществляются самые разнообразные действия с базами данных – создание, пополнение, редактирование и т.д.
Сегодня разнообразные структурированные базы данных применяются практически повсеместно – в поисковых системах, в социальных сетях, в онлайн-магазинах и т.д.
Изучить принципы практического использования SQL и СУБД можно как самостоятельно, так и посредством посещения онлайн-курсов. Первый вариант позволяет сэкономить, второй обеспечивает эффективность обучения и оперативность получения нужных навыков и знаний.
Курсов по SQL очень мало, поскольку этот язык обычно учат по мануалам и на практике. Но один хороший курс все же есть, на Степике. На курсе вы за 30 часов обучения полностью освоите все распространенные и специфические команды, научитесь делать сложные и вложенные запросы. Курс – строго практической направленности, вам дадут 261 задание для выполнения.