Структура команды языка SQL

ЯЗЫК SQL: МАНИПУЛИРОВАНИЕ ДАННЫМИ

В ЭТОЙ ЛЕКЦИИ...

· Назначение языка Structure Query Language (SQL) и его особая роль при работе с базами данных.

· История возникновения и развития языка SQL.

· Запись операторов языка SQL.

· Выборка информации из баз данных с помощью оператора SELECT.

· построение операторов SQL, характеризующихся следующими особенностями:

· применение конструкции WHERE для выборки строк, удовлетворяющих различным условиям;

· сортировка результатов выполнения запроса с помощью конструкции ORDER BY;

· использование агрегирующих функций языка SQL;

· группирование выбранных данных с помощью конструкции GROUP BY;

· применение подзапросов;

· применение соединений таблиц;

· применение операций с множествами (UNION, INTERSECT, EXCEPT).

· Внесение изменений в базу данных с помощью операторов INSERT, UPDATE и DELETE.

Одним из языков, появившихся в результате разработки реляционной модели данных, является SQL, который в настоящее время получил очень широкое распространение и фактически превратился в стандартный язык реляционных баз данных. Стандарт на язык SQL был выпущен Национальным институтом стандартизации США (ANSI) в 1986 году, а в 1987 году Международная организация по стандартизации (ISO) приняла этот стандарт в качестве международного. В настоящее время язык SQL поддерживается сотнями СУБД различных типов, разработанных для самых разнообразных вычислительных платформ, начиная от персональных компьютеров и заканчивая мэйнфреймами.

В этой лекции используется определение языка SQL, данное в стандарте ISO.

Введение в язык SQL

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

Назначение языка SQL

Любой язык, предназначенный для работы с базами данных, должен предоставлять пользователю следующие возможности:

· создавать базы данных и таблицы с полным описанием их структуры;



· выполнять основные операции манипулирования данными, такие как вставка, модификация и удаление данных из таблиц;

· выполнять простые и сложные запросы.

Кроме того, язык работы с базами данных должен решать все указанные выше задачи при минимальных усилиях со стороны пользователя, а структура и синтаксис его команд должны быть достаточно просты и доступны для изучения.

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

SQL является примером языка преобразования данных, или же языка, предназначенного для работы с таблицами с целью преобразования входных данных к требуемому выходному виду. Язык SQL, который определен стандартом ISO, имеет два основных компонента:

· язык Data Definition Language (DDL), предназначенный для определения структур базы данных и управления доступом к данным;

· язык Data Manipulation Language (DML), предназначенный для выборки и обновления данных.

До появления стандарта SQL3 язык SQL включал только команды определения и манипулирования данными; в нем отсутствовали какие-либо команды управления ходом вычислений. Другими словами, в этом языке не было команд IF ... THEN ...ELSE, GO TO, DO ... WHILE и любых других, предназначенных для управления ходом вычислительного процесса. Подобные задачи должны были решаться программным путем, с помощью языков программирования или управления заданиями, либо интерактивно, в результате действий, выполняемых самим пользователем. По причине подобной незавершенности, с точки зрения организации вычислительного процесса, язык SQL мог использоваться двумя способами. Первый предусматривал интерактивную работу, заключающуюся во вводе пользователем с терминала отдельных операторов SQL. Второй состоял во внедрении операторов SQL в программы на процедурных языках.

Достоинства языка SQL3, формальное определение которого принято в 1999 году:

· Язык SQL относительно прост в изучении.

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

· Как и большинство современных языков, SQL поддерживает свободный формат записи операторов. Это означает, что при вводе отдельные элементы операторов не связаны с фиксированными позициями на экране.

· Структура команд задается набором ключевых слов, представляющих собой обычные слова английского языка, такие как CREATE TABLE -Создать таблицу, INSERT - Вставить, SELECT -Выбрать.

Например:

CREATE TABLE [Продажи] ( (S), [Наименование объекта] VARCHAR(15), [Стоимость] DECIMAL(7,2));

INSERT INTO [Объект] VALUES ("SG16", "Brown", 8300);

SELECT , [Наименование объекта], [Стоимость];

FROM [Продажи]

WHERE [Стоимость] > 10000;

· Язык SQL может использоваться широким кругом пользователей, включая администраторов баз данных (АБД), руководящий персонал компании, прикладных программистов и множество других конечных пользователей разных категорий.

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

История языка SQL

История реляционной модели данных, и косвенно языка SQL, началась в 1970 году с публикации основополагающей статьи Е. Ф. Кодда, который в то время работал в исследовательской лаборатории корпорации IBM в Сан-Хосе. В 1974 году Д. Чемберлен, работавший в той же лаборатории, публикует определение языка, получившего название "Structured English Query Language", или SEQUEL. В 1976 году была выпущена переработанная версия этого языка, SEQUEL/2; впоследствии его название пришлось изменить на SQL по юридическим соображениям - аббревиатура SEQUEL уже использовалась филологами. Но до настоящего времени многие по-прежнему произносят аббревиатуру SQL как "сиквэл", хотя официально ее рекомендуется читать как "эс-кю-эл".

В 1976 году на базе языка SEQUEL/2 корпорация IBM выпустила прототип СУБД, имевший название "System R". Назначение этой пробной версии состояло в проверке осуществимости реализации реляционной модели. Помимо прочих положительных аспектов, важнейшим из результатов выполнения этого проекта можно считать разработку собственно языка SQL, Однако корни этого языка уходят в язык SQUARE (Specifying Queries as Rational Expressions), который являлся предшественником проекта System R. Язык SQUARE был разработан как исследовательский инструмент для реализации реляционной алгебры посредством фраз, составленных на английском языке.

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

Чуть позже появилась СУБД INGRES, использовавшая язык запросов QUEL.

Этот язык был более структурированным, чем SQL, но семантика его менее близка к обычному английскому языку. Позднее, когда SQL был принят как стандартный язык реляционных баз данных, СУБД INGRES была полностью переведена на его использование. В 1981 году корпорация IBM выпустила свою первую коммерческую реляционную СУБД под названием SQL/DS (для среды DOS/VSE). В 1982 году вышла в свет версия этой системы для среды VM/CMS, а в 1983 году - для среды MVS, но уже под названием DB2.

В 1982 году Национальный институт стандартизации США (ANSI) начал работу над языком Relation Database Language (RDL), руководствуясь концептуальными документами, полученными от корпорации IBM. В 1983 году к этой работе подключилась Международная организация по стандартизации (ISO). Совместные усилия обеих организаций увенчались выпуском стандарта языка SQL. От названия RDL в 1984 году отказались, а черновой проект языка был переработан с целью приближения к уже существующим реализациям языка SQL.

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

Кроме того, он отметил чрезмерную избыточность языка - один и тот же запрос можно было записать в нескольких различных вариантах. Большая часть критических замечаний была признана справедливой, и необходимые коррективы были внесены в стандарт еще до его публикации. Однако было решено, что важнее выпустить стандарт как можно быстрее, чтобы он смог исполнять роль общей основы, на которой и сам язык, и его реализации могли бы развиваться далее, чем дожидаться, пока будут определены и согласованы все функции, которые разные специалисты считают обязательными для подобного языка.

В 1989 году ISO опубликовала дополнение к стандарту, в котором определялись функции поддержки целостности данных. В 1992 году была выпущена первая, существенно пересмотренная версия стандарта ISO, которую иногда называют SQL2 или SQL-92. Хотя некоторые из функций были определены в этом стандарте впервые, многие из них уже были полностью или частично реализованы в одной или нескольких коммерческих реализациях языка SQL.

А следующая версия стандарта, которую принято называть SQL3, была выпущена только в 1999 году. Эта версия содержит дополнительные средства поддержки объектно-ориентированных функций управления данными.

Функции, которые добавляются к стандарту языка разработчиками коммерческих реализаций, принято называть расширениями. Например, в стандарте языка SQL определено шесть различных типов данных, которые могут храниться в базах данных. Во многих реализациях этот список дополняется разнообразными расширениями. Каждая из реализаций языка называется диалектом. Не существует двух совершенно идентичных диалектов, как в настоящее время не существует и ни одного диалекта, полностью соответствующего стандарту ISO.

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

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

баз данных , который мог бы функционировать в многочисленных компьютерных системах различных видов. Действительно, с его помощью пользователи могут манипулировать данными независимо от того, работают ли они на персональном компьютере, сетевой рабочей станции или универсальной ЭВМ.

Одним из языков, появившихся в результате разработки реляционной модели данных, является язык SQL (Structured Query Language), который в настоящее время получил очень широкое распространение и фактически превратился в стандартный язык реляционных баз данных . Стандарт на язык SQL был выпущен Американским национальным институтом стандартов (ANSI) в 1986 г., а в 1987 г. Международная организация стандартов (ISO) приняла его в качестве международного. Нынешний стандарт SQL известен под названием SQL/92.

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

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

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

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

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

Введение в технологию клиент-сервер

В связи с расширением рынка информационных услуг производители программного обеспечения стали выпускать все более интеллектуальные, а значит, и объемные программные комплексы. Многие организации и отдельные пользователи часто не могли разместить приобретенные продукты на собственных ЭВМ. Для обмена информацией и ее распространения были созданы сети ЭВМ, а обобщающие программы и данные стали устанавливать на специальных файловых серверах .

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

Технология клиент-сервер означает такой способ взаимодействия программных компонентов, при котором они образуют единую систему. Как видно из самого названия, существует некий клиентский процесс, требующий определенных ресурсов, а также серверный процесс , который эти ресурсы предоставляет. Совсем необязательно, чтобы они находились на одном компьютере. Обычно принято размещать сервер на одном узле локальной сети, а клиентов – на других узлах.

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

Архитектура клиент-сервер обладает рядом преимуществ.

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

Что такое база данных SQL?

Структурированный язык запросов (S tructured Q uery L anguage) – стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя версия – SQL-99, хотя новый стандарт уже находится в разработке. Большинство баз данных твердо придерживается стандарта ANSI-92. Было много обсуждений по поводу введения более современных стандартов, но изготовители коммерческих баз данных отклоняются от этого, развивая свои новые концепции манипуляции хранимыми данными. Почти каждая отдельная база данных использует некоторый уникальный набор синтаксиса, хоть и очень сильно подобного стандарту ANSI. В большинстве случаев, этот синтаксис является расширением базового стандарта, хотя бывают случаи, когда такой синтаксис приводит к различным результатам для разных баз данных. Всегда неплохой идеей будет просмотр документации к базе данных, особенно, если получаются неожиданные результаты.

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

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

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

Каждый столбец представляет собой атрибут или совокупность атрибутов объектов, например идентификационные номера служащих, рост, цвет машин и т.п. Часто в отношении столбца используется термин поле с указанием имени, например "в поле Name". Поле строки является минимальным элементом таблицы. Каждый столбец в таблице имеет определенное имя, тип данных и размер. Имена столбцов должны быть уникальны в пределах таблицы.

Каждая строка (или запись) представляет собой совокупность атрибутов конкретного объекта, например, в строке может содержаться идентификационный номер служащего, размер его зарплаты, год его рождения и т.д. Строки таблиц не имеют названий. Чтобы обратиться к конкретной строке, пользователю необходимо указать какой-то атрибут (или набор атрибутов), уникально ее идентифицирующий.

Одной из важнейших операций, которые выполняются при работе с данными, является выборка хранящейся в базе данных информации. Для этого пользователь должен выполнить запрос (query).

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

Типы запросов данных

Есть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):

  • SELECT – выбрать строки из таблиц;
  • INSERT – добавить строки в таблицу;
  • UPDATE – изменить строки в таблице;
  • DELETE – удалить строки в таблице;

Каждый из этих запросов имеет различные операторы и функции, которые используются для того, чтобы произвести какие-то действия с данными. Запрос SELECT имеет самое большое количество опций. Существуют также дополнительные типы запросов, используемых вместе с SELECT, типа JOIN и UNION. Но пока, мы сосредоточимся только на основных запросах.

Использование запроса SELECT для выборки нужных данных

Чтобы получить информацию, хранящуюся в базе данных используется запрос SELECT. Базовое действие этого запроса ограничено одной таблицей, хотя существуют конструкции, обеспечивающие выборку с нескольких таблиц одновременно. Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида:

SELECT column1, column2 FROM table_name;

Также, можно получить все столбцы из таблицы, используя подстановочный знак *:

SELECT * FROM table_name;

Это может быть полезно в том случае, когда вы собираетесь выбрать данные с определенным условием WHERE. Следующий запрос возвратит все столбцы со всех строк, где "column1" содержит значение "3":

Кроме = (равно), существуют следующие условные операторы:

Дополнительно можно использовать условия BITWEEN и LIKE для сравнения с условием WHERE, а так же комбинации операторов AND и OR.

Что в переводе на русский язык означает: выбрать все строки из таблицы table_name, где значение столбца age больше или равно 18, а также значение столбца LastName находится в алфавитном промежутке от Иванов до Сидоров включительно, или же значением столбца Company является Motorola.

Использование запроса INSERT для вставки новых данных

Запрос INSERT используется для создания новой строки данных. Для обновления уже существующих данных или пустых полей строки нужно использовать запрос UPDATE.

Примерный синтаксис запроса INSERT:

INSERT INTO table_name (column1, column2, column3) VALUES ("data1", "data2", "data3");

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

Изменяется уже существующая информация в базе данных очень похожим образом.

Запрос UPDATE и условие WHERE

UPDATE используется для того, чтобы изменить существующие значения или освободить поле в строке, поэтому новые значения должны соответствовать существующему типу данных и обеспечивать приемлемые значения. Если вы не хотите изменить значения во всех строках, то нужно использовать условие WHERE.

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

Будьте осторожны! Запрос DELETE удаляет целые строки

Запрос DELETE полность удаляет строку из базы данных. Если вы хотите удалить одно единственное поле, то нужно использовать запрос UPDATE и установить для этого поля значение, которое будет являться аналогом NULL в вашей программе. Будьте внимательны, и ограничивайте ваш запрос DELETE условием WHERE, иначе вы можете потерять все содержимое таблицы.

Как только строка была удалена из вашей базы данных, она не подлежит восстановлению, поэтому желательно иметь столбец по имени "IsActive", или что-то типа того, который вы можете изменить на ноль, что будет указывать на блокировку представления данных из этой строки.

Теперь вы знаете основы SQL запросов

SQL – язык баз данных, и мы рассмотрели наиболее важные и базовые команды, используемые в запросах данных. Множество основных концепций не были затронуты (SUM и COUNT например), но те немногие команды, которые удалось перечислить выше, должны побудить вас к активным действиям и более глубокому изучению замечательного языка запросов под именем SQL.

На сегодняшний день курсы SQL "для чайников" становятся все более популярными. Это можно очень просто объяснить, ведь в современном мире все чаще можно встретить так называемые "динамичные" веб-сервисы. Они отличаются достаточно гибкой оболочкой и основываются на Все начинающие программисты, которые решили посвятить сайтов, прежде всего записываются на курсы SQL "для чайников".

Зачем изучать данный язык?

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

Что такое SQL?

Или язык структурированных запросов, был создан с одной-единственной целью: определять предоставлять к ним доступ и обрабатывать их за достаточно короткие промежутки времени. Если вы знаете SQL-значение, тогда вам будет понятно, что этот сервер относят к так называемым "непроцедурным" языкам. То есть в его возможности входит всего лишь описание каких-либо компонентов или результатов, которые вы хотите увидеть в будущем на сайте. Но при не указывает на то, какие точно результаты собирается получить. Каждый новый запрос в этом языке является как бы дополнительной "надстройкой". Именно в таком порядке, в каком они введены в базе данных, запросы и будут исполняться.

Какие процедуры можно совершать с помощью этого языка?

Несмотря на свою простоту, база данных SQL позволяет создать достаточно много самых разнообразных запросов. Так что же вы сможете делать, если выучите этот важный в программировании язык?

  • создавать самые разнообразные таблицы;
  • получать, хранить и изменять полученные данные;
  • изменять структуры таблиц на свое усмотрение;
  • объединять полученную информацию в единые блоки;
  • вычислять полученные данные;
  • обеспечивать полную защиту информации.

Какие команды являются самыми популярными в данном языке?

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

  1. DDL - является командой, которая определяет данные. Она используется для того, чтобы создавать, изменять и удалять самые разнообразные объекты в базе.
  2. DCL - является командой, которая управляет данными. Ее используют для предоставления доступа разным пользователям к информации в базе, а также чтобы использовать таблицы или представления.
  3. TCL - команда, которая управляет разнообразного рода транзакциями. Ее главной целью является определение хода транзакции.
  4. DML - манипулирует полученными данными. В ее задачу входит позволение пользователю перемещать различную информацию из базы данных или вносить туда ее.

Типы привилегий, которые существуют в этом сервере

Под привилегиями подразумеваются те действия, которые может выполнить тот или иной пользователь в соответствии со своим статусом. Самой минимальной, безусловно, является обычный вход в систему. Конечно же, со временем привилегии могут меняться. Старые будут удаляться, а новые добавляться. На сегодняшний день, все те, кто проходит курсы SQL Server "для чайников", знают, что существует несколько типов разрешенных действий:

  1. Объектный тип - пользователю разрешается выполнять какую-либо команду только по отношению к определенному объекту, который находится в базе данных. При этом для разных объектов привилегии отличаются. Они также привязываются не только к тому или иному пользователю, но и к таблицам. Если кто-либо, пользуясь своими возможностями, создал таблицу, то он считается ее владельцем. Поэтому в его праве назначать новые привилегии для других пользователей, связанные с информацией в ней.
  2. Системный тип - это так называемые авторские права на данные. Пользователи, которые получили такие привилегии, могут создавать различные объекты в базе.

История создания SQL

Этот язык был создан исследовательской лабораторией IBM в 1970 году. В то время название его было несколько иным (SEQUEL), но через несколько лет использования его поменяли, немного сократив. Несмотря на это, даже сегодня многие известные мировые специалисты в области программирования все еще произносят название по старинке. Создана была SQL с одной-единственной целью - изобрести язык, который был бы настолько простым, что его могли бы без особых проблем выучить даже простые пользователи Интернета. Интересен тот факт, что на то время SQL был не единственным подобным языком. В Калифорнии еще одна группа специалистов разработала похожий Ingres, но он так и не стал широко распространенным. До 1980 года существовало несколько вариаций SQL, которые лишь в некоторой мере отличались друг от друга. Чтобы предотвратить замешательства, в 1983-м был создан стандартный его вариант, который популярен и сегодня. Курсы SQL "для чайников" позволяют узнать намного больше о сервисе и полностью изучить его за несколько недель.

Structured Query Language (структурированный язык запросов) или SQL - это декларативный язык программирования для использования в квази-реляционных баз данных. Многие из оригинальных черт SQL были взяты для кортежных исчислений, но последние расширения SQL включают все больше реляционной алгебры.
SQL изначально создан IBM , но многие производители разработали собственные диалекты. Он была принят в качестве стандарта американским Национальным институтом стандартов (ANSI) в 1986 и ISO в 1987 . В стандарте языка программирования SQL, ANSI заявил, что официальный произношение SQL является "эс кью эль". Тем не менее, многие специалисты базы данных употребляли "сленговое" произношение «Сиквель», что отражает первоначальное название языка, Sequel, которое было изменено позже из-за возникшего конфликта торговых марок и наименований у компании IBM. Программирование для начинающих.
Язык программирования SQL был пересмотрен в 1992 , и эта версия известна как SQL-92 в. Потом было вновь пересмотрено 1999 , чтобы стать SQL: 1999 (AKA SQL3). Программирование для чайников. SQL 1999 поддерживает объекты, которые ранее не поддерживается и в других версиях, но только в конце 2001 года лишь несколько систем управления базами данных поддерживали SQL реализации: 1999.
SQL, хотя определяется как ANSI и ISO, имеет множество вариаций и расширений, большинство из которых имеют собственные характеристики, такие как реализация корпорации Oracle «PL / SQL» или реализация Sybase и Microsoft под названием «Transact-SQL», что может запутать знакрмящегося с основами программирования. Также не редкость для коммерческих реализаций опустить поддержку основных особенностей стандарта, такие типы данных как дата и время, предпочитая какой-то их собственный вариант. Как результат, в отличие от ANSI C или ANSI Fortran которые обычно можно портирована с платформы на платформу без серьезных структурных изменений, запросы языка программирования SQL редко могут быть перенесены между разными системами баз данных без существенных модификаций. Большинство людей в области баз данных считают, что это отсутствие совместимости является намеренным, с тем чтобы обеспечить каждого разработчика собственной системой управления базами данных и привязать покупателя к конкретной базе данных.
Как следует из названия, язык программирования SQL предназначен для конкретных, ограниченных целей - запросов данных, содержащихся в реляционной базе данных. Как таковой, он представляет собой набор инструкций языка программирования для создания выборок данных, а не процедурный язык, такой как C или BASIC , которые предназначены для решения гораздо более широкого круга проблем. Расширения языка, таких как «PL / SQL» предназначены для решения этого ограничения, добавив процедурные элементы для SQL при сохранении преимуществ SQL. Другой подход заключается в том, что позволяется в зопросы SQL встраивать команды процедурного языка программирования и взаимодействовать с базой данных. Например, Oracle и другие поддерживают язык Java в базе данных, в то время как PostgreSQL позволяет писать функции на Perl, Tcl, или С.
Один анекдот про SQL: "SQL не является ни структурированным, ни языком." Суть шутки состоит в том, что SQL не является языком Тьюринга. .

Select * from T
C1 C2
1 a
2 b
C1 C2
1 a
2 b
Select C1 from T
C1
1
2
C1 C2
1 a
2 b
Select * from T where C1=1
C1 C2
1 a

Учитывая таблицу T, запрос Select * from T выведет на экран все элементы всех строк таблицы.
Из той же таблицы, запрос Select C1 from T выведет на экран элементы из столбца C1 всех строк таблицы.
Из той же таблицы, запрос Select * from T where C1=1 выведет на экран все элементы всех строк, где значение колонки С1 равно "1".

SQL ключевые слова

SQL слова делятся на ряд групп.

Первая - это Data Manipulation Language или DML (язык управления данными). DML является подмножеством языка, используемого для запроса к базам данных, добавления, обновления и удаления данных.

  • SELECT является одной из наиболее часто используемых команд DML и позволяет пользователю задать запрос как описание желаемого результата в виде множества. В апросе не указано, каким образом результаты должны быть расположены - перевод запроса в форму, которая может быть выполнена в базе данных, является работой системы баз данных, более конкретно оптимизатора запросво.
  • INSERT используется для добавления строк (формального набора) для существующей таблицы.
  • UPDATE используется для изменения значений данных в существующей строке таблицы.
  • DELETE определение существующих строк, которые будут удалены из таблицы.

Три другие ключевых слова, можно сказать, что попадают в группу DML:

  • BEGIN WORK (или START TRANSACTION, в зависимости от диалекта SQL) могут быть использованы, чтобы отметить начало транзакции базы данных, которые либо выполнятся все полностью или вообще не выполнятся.
  • COMMIT устанавливает, что все изменения данных в после совершения операций сохраняются.
  • ROLLBACK определяет, что все изменения данных после последней фиксации или отката должны быть уничтожены, до того момента, который был зафиксирован в БД как «откат».

COMMIT и ROLLBACK применяются в таких областях, как контроль транзакций и блокировки. Обе инструкции завершают все текущие транзакции (наборы операций над БД) и снимают все блокировки на изменение данных в таблицах. Присутствие или отсутствие BEGIN WORK или аналогичного заявления зависит от конкретной реализации SQL.

Вторая группа ключевых слов относится к группе Data Definition Language или DDL (язык определения данных) . DDL позволяет пользователю определять новые таблицы и связанные с ними элементы. Большинство коммерческих баз данных SQL имеют собственные расширения в DDL, которые позволяют осуществлять контроль над нестандартныыми, но обычно жизненно важными элементами конкретной системы.
Основные пункты DDL являются команды создавать и удалять.

  • CREATE определяет объекты (например, таблицы), которые будут созданы в базе данных.
  • DROP определяет, какие существующие объекты в базе данных будут удалены, как правило, безвозвратно.
  • Некоторые системы баз данных также поддерживают команду ALTER, которая позволяет пользователю изменять существующий объект по-разному - например, так можно произвести добавление столбцов в существующую таблицу.

Третьей группой ключевых слов SQL является Data Control Language или DCL(язык контроля данных) . DCL отвечает за права доступа к данным и позволяет пользователю контролировать, кто имеет доступ, чтобы просматривать или манипулировать данными в базе данных. Здесь два основных ключевых слова:

  • GRANT - разрешает пользователю выполнять операции
  • REVOKE - удаляет или ограничивает возможность пользователю выполнять операции.

Системы баз данных с использованием SQL

  • InterBase
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL Server

Как стать профессионалом по разработке сайтов и начать зарабатывать? Недорогие видео курсы с ознакомительным введением.