Содержание

Язык SQL. Курс «Введение в реляционные базы данных»

SQL – это язык программирования декларативного типа. В отличие от привычных нам процедурных языков, в которых есть условия, циклы и функции, в декларативных языках подобных алгоритмических конструкций почти нет. Декларативные выражения представляют собой скорее запросы, описание того, что хочет получить человек.

В случае SQL человек формулирует запрос на извлечение или модификацию данных, а алгоритм его выполнения почти полностью ложится на плечи конкретной СУБД. Хотя если один и тот же результат может быть получен с помощью разных запросов, программисту лучше выбрать тот, который создаст меньшую нагрузку на СУБД. То есть программисту желательно иметь представление о том, как работает СУБД.

Запрос производится к таблицам базы данных, результатом обработки запроса также является таблица, которую при желании можно сохранить.

Язык SQL предназначен для создания и изменения реляционных баз данных, а также извлечения из них данных.

Другими словами, SQL – это инструмент, с помощью которого человек управляет базой данных. При этом ключевыми операциями являются создание таблиц, добавление записей в таблицы, изменение и удаление записей, выборка записей из таблиц, изменение структуры таблиц.

Однако в процессе развития языка SQL в нем появились новые средства. Стало возможно описывать и хранить такие объекты как индексы, представления, триггеры и процедуры. То есть в современных диалектах SQL есть элементы процедурных языков.

Язык SQL и СУБД обычно не используются сами по себе, а выполняют функцию промежуточного встроенного компонента, обеспечивающего связь между прикладным ПО или программой, которую пишет программист, и базой данных. В языках программирования существуют свои библиотеки, обеспечивающие API для различных СУБД.

Сам язык SQL состоит из операторов, инструкций и вычисляемых функций. Зарезервированные слова, которыми обычно выступают операторы, принято писать заглавными буквами. Однако написание их не прописными, а строчными буквами к ошибке не приводит.

Операторы делятся на:

  1. операторы определения данных (Data Definition Language, DDL)

    • CREATE создаёт объект БД (базу данных, таблицу, представление, пользователя и т. д.)

    • ALTER изменяет объект

    • DROP удаляет объект

  2. операторы манипуляции данными (Data Manipulation Language, DML)

    • SELECT выбирает данные, удовлетворяющие заданным условиям

    • INSERT добавляет новые данные

    • UPDATE изменяет существующие данные

    • DELETE удаляет данные

  3. операторы определения доступа к данным (Data Control Language, DCL)

    • GRANT предоставляет пользователю или группе разрешения на определённые операции с объектом

    • REVOKE отзывает ранее выданные разрешения

    • DENY задаёт запрет, имеющий приоритет над разрешением

  4. операторы управления транзакциями (Transaction Control Language, TCL)

    • COMMIT применяет транзакцию

    • ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции

    • SAVEPOINT делит транзакцию на более мелкие участки

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

На самом деле это весьма условно. Разные СУБД используют свои диалекты SQL. Например, SQLite не понимает ряд типов данных.

В разных СУБД есть свои расширения для придания SQL «процедурности». Это хранимые процедуры (stored procedures) и процедурные языки-надстройки. Так в Oracle Database используется PL/SQL, в PostgreSQL – PL/pgSQL.

Несмотря на наличие диалектов, запросы, содержащие только DDL и DML, обычно переносимы между разными СУБД.

Что такое SQL

Язык структурированных запросов (SQL) — это язык программирования, предназначенный для управления и манипулирования базами данных, он используется для поиска и извлечения информации из огромных баз данных. 

SQL отображается в реляционных базах данных, форме базы данных, полученной из реляционной модели Эдгара Ф. Кодда для хранения информации таким образом, чтобы она была доступной и идентифицируемой по отношению к другой информации. Язык изначально назывался SEQUEL (структурированный английский язык запросов) и был разработан Дональдом Чемберлином и Рэймондом Бойсом в IBM (1974 г.) SQL содержит четыре основные категории с двумя дополнительными командами, которые в основном используются для компьютерных баз данных. SQL — это язык четвертого поколения, его команды близки к человеческому языку. А вот языки программирования Java и C ++ — языки третьего поколения, которые абстрактны для неопытного глаза.

Какая структура SQL и как он работает?

SQL стал отраслевым стандартом для манипулирования и запроса данных в реляционной базе данных. Использование языка разбито на компоненты:

1. DML — язык манипулирования данными, используется для управления содержимым базы данных в режимах извлечения, обновления, удаления и вставки. DML имеет четыре команды, которые можно использовать для управления информацией, а именно команды «Выбрать», «Вставить», «Обновить» и «Удалить».

2. DDL — язык определения данных, используется для управления таблицами и структурами индексов. А также с синхронизированными командами, которые можно использовать для создания, изменения и удаления таблиц базы данных.

3. DCL — язык управления данными, часто используется для управления доступом к базе данных, предоставляя права определенным пользователям. Две команды, которые используются в DCL, ето Grant и Revoke — основные команди безопасности реляционной базы данных и аутентификации.

4. DQL — язык запросов данных, он похож на DML, так как он используется для выбора, вставки, обновления и удаления данных из базы данных. 

Другие команды SQL — это команды администрирования данных и управления транзакциями.

Стандарт SQL

Стандарт SQL пережил несколько изменений с первых лет, в основном для добавления новых функций в стандартную структуру. Например, стандарт SQL теперь может поддерживать XML, сопоставление регулярных выражений и многое другое. Сегодня SQL используется в популярных приложениях баз данных в Интернете, таких как Oracle Database. Многие добавленные базы данных, такие как MySQL и PostgreSQL, не реализуют весь стандарт SQL. Вместо этого разработчики добавляют свои собственные разновидности и варианты в стандарт SQL, основными из которых являются IBM, Microsoft и Oracle.

Вариации

В 1989 году Microsoft разработала собственную систему управления реляционными базами данных под названием Microsoft SQL Server. Он был разработан для поддержки ряда приложений для обработки транзакций, бизнес-аналитики и аналитики в ИТ.  Существует несколько версий SQL Server с различными интеграциями инструментов управления данными и аналитики, а также с более новыми технологиями, такими как облачные вычисления и отчеты на мобильных устройствах. Oracle также предоставляет SQL, который можно использовать для доступа, определения и обслуживания данных. Его SQL-сервер может использоваться в сотрудничестве с Oracle, PHP, Java и другими языками программирования.

Хотя SQL может показаться сложным, есть международные как платные, так бесплатные онлайн-курсы, которые могут помочь.

Как изучить язык баз данных SQL? — Хабр Q&A

К сожалению, чтобы Вам что-то посоветовать — необходимо узнать Ваш личный «фундамент». Хоть указанная Вами книга и будет полезной (даже с учетом того, что она писалась для MySQL версии 4.х, фундаментально как в СУБД, так и в SQL и в конкретном синтаксисе MySQL последнее, наверно, десятилетие, ничего не менялось), я бы посоветовал следующий алгоритм обучения:

1) Знакомство с основами реляционной алгебры, нормальными формами и реляционной моделью. Без фанатизма, прочтение и осознание статей даже на Википедии хватит за глаза.

2) Знакомство с спецификацией SQL2008. Опять же, без фанатизма. В любом случае, работать Вы будете впоследствии с определенным диалектом языка.

3) Выбор диалекта языка. Подбор литературы (практически любой, за исключением книг из серии «{0} для чайников» и «100 и одно решение для {0}»). На этом этапе важно определиться также с инструментарием, который Вы будете использовать в дальнейшем. Для начала подойдет любой онлайн интерпретатор SQL кода, к примеру sqlfiddle. Но по мере изучения Вам понадобятся более сложные инструменты.

4) Знакомство с UML. Точнее, если по минимуму, с той частью, которая затрагивает прототипирование БД. SQL и СУБД — это инструменты, которые позволяют автоматизировать процессы бизнес логики. UML позволяет эти процессы описать и на основе этих процессов создать прототип схемы БД, от которого уже можно идти к конкретной реализации.

Итак. Четыре базовых шага выполнены. Дальше все просто, перевариваете информацию и занимаетесь практикой от простого к сложному (в комментариях уже указывали вполне годные наборы задачек). Попутно узнаете особенности программной реализации выбранной Вами СУБД. И внимательно читаете документацию от разработчика. На примере SQLite, у них подробно разобрана семантика запросов: SQLite CREATE. Под MySQL найдете сами.

Теперь поясню, почему все четыре шага важны.
1) Без базовых фундаментальных знаний вы просто не поймете, почему, к примеру, в ячейке столбца номера нельзя указывать два номера телефона, или как работают ограничения на целостность данных.
2) Хоть диалекты SQL и отличаются от стандарта SQL:2008, следует понимать, что знание стандарта позволит Вам в случае необходимости переключиться с одной СУБД на другую. Также, хорошая реляционная SQL СУБД должна быть совместима с этим стандартом априори.

3) Тут на Ваш вкус. Посмотрите изложение автора перед покупкой, посмотрите списки того или иного программного обеспечения. Но факт остается фактом, что прочтение только стандартов, мануалов и официальной документации — путь явно не для всех. Кому-то просто необходимо «художественное» изложение, да и просто из книг можно почерпнуть реальные примеры из опыта автора.
4) Надо понимать, что реляционные СУБД всего лишь инструмент для хранения и обработки данных, обеспечивающий определенные бизнес-процессы определенной предметной области. И под бизнес-процессами следует понимать не как какую-то эфемерную для простого человека вещь, а то, что закладывается под этим словом в оригинальном языке, т.е. совокупность процессов\действий, направленных на создание продукта\предоставление услуги. А средства UML позволяют все это описать в стандартизированной графической форме. Чтобы знать SQL не надо знать UML, не надо знать, что такое и, к примеру, ЖЦ программного продукта. Но со временем, если Вы захотите расти дальше, Вам нужен будет инструмент прототипирования. Также, как если вы дорастете до архитектора БД, вам нужно будет представление о том, как эти БД проектировать, начиная с описания предметной области и заканчивая организационной точкой зрения. Стандарты ГОСТ 34.601-90 и ISO/IEC 12207:2008.

Я, как и многие, начинал с какого-то полу прочитанного учебника и примеров из сети. Сейчас я понимаю, что просто потратил время практически впустую. Как ни странно, хоть и принято ругать наше образование, но список курсов для специальностей «ПИ» подобран не просто так. Помимо самого языка следует знать математический «бэкенд» и как его использовать для реализации задач предметной области. Я отношусь к SQL потребительски, это не мой основной язык, но сейчас я понимаю, что если бы уделил ему больше внимания не как языку, а, в первую очередь, как к одному из инструментов СУБД, работающих на основе реляционной алгебры для обеспечения бизнес-процессов, я бы избежал кучу потерянного времени, костылей и ошибок. Надеюсь, мой ответ будет Вам полезен.

Что такое SQL? | KV.by

SQL — специальный язык, используемый для работы с базами данных. С помощью SQL можно задавать структуру базы, организовывать выборку данных из неё по каким-то определённым критериям, удалять данные.

Пожалуй, из всех аббревиатур, встречающихся в компьютерном мире, эта — одна из самых распространенных. Может, конечно, и не самая часто встречающаяся (всё-таки WWW или MS употребляют, как мне кажется, чаще), но совсем не редкая. Несмотря на это, довольно значительное число пользователей не имеют чёткого представления, что именно скрывается за этими тремя английскими буквами.

На самом деле, ничего сложного (и, тем более, никакой коммерческой тайны) здесь нет. SQL — специальный язык, используемый для работы с базами данных. С помощью SQL можно задавать структуру базы, организовывать выборку данных из неё по каким-то определённым критериям, удалять данные. При этом стоит сказать, что SQL не является языком программирования, хотя именно этот термин используют многие специалисты, пытающиеся «на пальцах» рассказать о сути и назначении SQL пользователю. Расшифровывается же сама аббревиатура как Structured Query Language, язык структурированных запросов. Под запросом понимается написанное на SQL «предложение», которое каким-то образом модифицирует базу данных.

Поскольку при использовании SQL можно решать множество разнообразных задач, то принято делить все конструкции языка на три части. Первая называется Data Definition Language, или, сокращённо, DDL, и содержит в себе операторы определения данных. Вторая — это Data Manipulation Language (DML), она включает операторы манипуляции данными. Третья — Data Control Language (сокращённо DCL), это операторы определения доступа к данным.

Почему используется SQL, хотя есть более простые и понятные для неподготовленного пользователя способы взаимодействия с базами данных? Дело в том, что SQL более удобен для пользователей подготовленных, а также, конечно же, для программистов. Сейчас SQL больше всего используется как раз программистами, хотя изначально разрабатывался именно с прицелом на конечного пользователя. Дело в том, что за долгие годы развития язык этот настолько усложнился, что полноценно использовать его безо всякой подготовки стало довольно сложно.

Язык SQL стандартизован, но при этом многие системы управления базами данных (СУБД) используют нестандартные варианты SQL, называемые диалектами. Они решают проблемы, которые возникают при использовании стандартного SQL — например, упрощают работу с иерархическими структурами или же дают возможность использовать процедурный код, которого стандартный SQL начисто лишён. Самые известные диалекты SQL — это PL/SQL, используемый в СУБД производства компании Oracle, и Transact-SQL, используемый в Microsoft SQL Server.

Среди других преимуществ языка SQL стоит отметить сравнительную лёгкость замены одной СУБД на другую внутри проекта при его использовании, поскольку, как уже говорилось, язык достаточно неплохо стандартизован. Существует великое множество прикладных решений, умеющих взаимодействовать с разными СУБД — именно благодаря тому, что для такого взаимодействия используется язык структурированных запросов. При этом использование SQL никоим образом не связывает руки тем, кто разрабатывает сами СУБД, поскольку запрос описывает только то, чего хочет от СУБД человек, использующий её, и при этом не говорит ничего о том, каким именно образом СУБД должна это выполнить.

Вадим СТАНКЕВИЧ,
[email protected]

Язык SQL (SQL) — SQL Server