Добавить в корзинуПозвонить
Найти в Дзене
"Мы"-Прогер

Изучаем SQL с нуля на примере PostgreSQL - Что такое SQL, DDL, DML?

SQL - Simple Query Language - "простой язык запросов". Он позволяет обращаться к данным, которые хранятся в базе данных - получать их оттуда, сохранять, изменять, удалять. БД - "база данных". Это что-то вроде нескольких файликов на диске, в которых особым образом хранятся данные. СУБД - "система управления базами данных". В чём разница между БД и СУБД? Как Word позволяет редактировать файлы, лежащие на диске, так и СУБД позволяет работать с данными, лежащими в базе данных. Именно СУБД принимает запросы и выдаёт данные в ответ. То есть, на языке SQL мы обращаемся к СУБД и говорим: дай нам такие-то данные или измени то-то. По сути, СУБД - это сервер, а БД - это данные на нём. Знать SQL очень полезно, потому что почти никакое приложение не обходится без базы данных. И здесь SQL - это не просто язык, это стандарт для баз данных. Все популярные "классические" СУБД, такие как PostgreSQL, Microsoft SQL Server, Oracle, используют стандартный SQL с небольшими изменениями (называются диалекты яз
Оглавление

SQL - Simple Query Language - "простой язык запросов". Он позволяет обращаться к данным, которые хранятся в базе данных - получать их оттуда, сохранять, изменять, удалять.

БД - "база данных". Это что-то вроде нескольких файликов на диске, в которых особым образом хранятся данные.

СУБД - "система управления базами данных". В чём разница между БД и СУБД? Как Word позволяет редактировать файлы, лежащие на диске, так и СУБД позволяет работать с данными, лежащими в базе данных. Именно СУБД принимает запросы и выдаёт данные в ответ. То есть, на языке SQL мы обращаемся к СУБД и говорим: дай нам такие-то данные или измени то-то. По сути, СУБД - это сервер, а БД - это данные на нём.

Знать SQL очень полезно, потому что почти никакое приложение не обходится без базы данных. И здесь SQL - это не просто язык, это стандарт для баз данных. Все популярные "классические" СУБД, такие как PostgreSQL, Microsoft SQL Server, Oracle, используют стандартный SQL с небольшими изменениями (называются диалекты языка SQL), так что, выучив SQL, вы сможете работать с ними.

Чем отличается SQL от No-SQL?

СУБД, где используется SQL, являются реляционными. Это означает, что все данные хранятся в виде связанных между собой таблиц. Для простоты пока приведу пример с одной таблицей (так делать неправильно) - таблица оценок учеников:

Пример таблицы в реляционной базе данных
Пример таблицы в реляционной базе данных

Столбцы здесь - "ФИО студента", "ФИО преподавателя", "Предмет", "Оценка" и "Комментарий". Для тех, кто знает хотя бы один объектно-ориентированный язык программирования, скажу, что таблица = класс объектов, столбец = поле в классе, а строка = конкретный объект этого класса. Причём объекты не упорядочены, то есть, неважно, в каком порядке идут строки таблицы. Узнаваемо также ключевое слово null (в последнем столбце), которое означает отсутствие данных.

В последнее время появились No-SQL СУБД. Данные в них имеют другую структуру, чем таблицы, поэтому язык SQL к ним неприменим (он работает с таблицами). Например, в MongoDB все данные хранятся в виде одного гигантского JSON-текста:

-2

No-SQL СУБД позволяют легко и быстро записывать данные. Например, их использовали на адронном коллайдере, когда надо было очень быстро записать много данных. Но сложная обработка данных в них делается труднее и медленнее, так что SQL по-прежнему популярен.

DDL и DML

Язык SQL состоит из двух больших половинок. Первая - DDL - Data Definition Language - язык определения данных. Он описывает, какие таблицы надо создать и какими будут связи между ними. Например, можно создать таблицу или добавить в существующую таблицу столбец, можно поменять тип данных столбца и прочее. Можно навешивать ограничения на данные, например, сделать столбец обязательным для заполнения, запретить повторение каких-то данных. То есть, DDL работает со структурой данных.

Вторая - это DML - Data Manipulation Language - язык манипуляций с данными. Например, можно получить данные из базы, добавить в таблицу новую строчку (читай "новый объект"), отредактировать что-то, удалить строку. В отличие от обычных языков программирования, все операции с данными в SQL массовые, то есть, затрагивают все строки указанной таблицы, но можно навешивать фильтры, чтобы, например, отредактировать одну нужную нам строку.

Также в современных СУБД можно писать свои функции (если вы не знаете, что это такое, не страшно) и есть набор встроенных функций для обработки данных, такие как substring() (выделяет подстроку-кусок текста), sum() (суммирует числовые значения) и тому подобное. Для написания функций каждая СУБД использует свой язык, также основанный на SQL, к которому добавлены операторы условий, циклы и исключения, какие есть в "обычных" языках программирования - получается супер-смесь массовых операций с обычными.

Далее

Оглавление: