Основные возможности языка sql. Основные операторы SQL

04.04.2019

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

Введение

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

Определяют несколько категорий операторов SQL:

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

Операторы SQL для манипулирования данными

INSERT. Вставляет строки в существующую таблицу. Может использоваться как для одного значения, так и нескольких, определённых по некоему условию. Например:

имя таблицы (имя столбца 1, имя столбца 2)

VALUES (значение 1, значение 2).

Для использования оператора INSERT при нескольких значениях, применяется такой синтаксис:

имя таблицы 1 (имя столбца 1, имя столбца 2)

SELECT имя столбца 1, имя столбца 2

FROM имя таблицы 2

WHERE имя таблицы 2.имя столбца 1>2

Этот запрос выберет все данные из таблицы 2, которые больше 2 по столбцу 1 и вставит их в первую.

UPDATE. Как видно из названия, этот оператор SQL запроса обновляет данные в существующей таблице по определённому признаку.

UPDATE имя таблицы 1

SET имя столбца 2 = «Василий»

WHERE имя таблицы 1.имя столбца 1 = 1

Данная конструкция заполнит значением Василий все строки, в которых встретит цифру 1 в первом столбце.

Данные из таблицы. Можно указать какое-либо условие или же убрать все строки.

DELETE FROM имя таблицы

WHERE имя таблицы.имя столбца 1 = 1

Приведённый запрос удалит из базы все данные со значением один в первом столбце. А вот так можно очистить всю таблицу:

Оператор SELECT

Главное назначение SELECT — выборка данных по определенным условиям. Результатом его работы всегда является новая таблица с отобранными данными. Оператор MS может быть использован в массе различных запросов. Поэтому наряду с ним можно рассмотреть и другие смежные ключевые слова.

Для выбора всех данных из определённой таблицы используется знак «*».

FROM имя таблицы 1

Результатом работы данного запроса будет точная копия таблицы 1.

А здесь происходит выборка по условию WHERE, которое достаёт из таблицы 1 все значения, больше 2 в столбце 1.

FROM имя таблицы 1

WHERE имя таблицы 1.имя столбца 1 > 2

Также можно указать в выборке, что нужны только определённые столбцы.

SELECT имя таблицы 1.имя столбца 1

FROM имя таблицы 1

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

имя таблицы 1.имя столбца 1

имя таблицы 1.имя столбца 2

имя таблицы 1.имя столбца 3

имя таблицы 1.имя столбца 2 * имя таблицы 1.имя столбца 3 AS SUMMA

FROM имя таблицы 1

Данный, на первый взгляд сложный запрос выполняет выборку всех значений из таблицы 1, затем создаёт новые колонки EQ и SUMMA. В первую заносит знак «+», во вторую произведение данных из столбца 2 и 3. Полученный результат можно представить в виде таблицы, для понимания как это работает:

При использовании оператора SELECT, можно сразу провести упорядочивание данных по какому-либо признаку. Для этого используется слово ORDER BY.

имя таблицы 1.имя столбца 1

имя таблицы 1.имя столбца 2

имя таблицы 1.имя столбца 3

FROM имя таблицы 1

ORDER BY имя столбца 2

Результирующая таблица будет выглядеть таким образом:

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

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

Таблица «Сотрудники»

Таблица «Зарплата»

Теперь нужно, как-то связав эти две таблицы получить общие значения. Используя основные операторы SQL сделать это можно так:

Сотрудники.Номер

Сотрудники.Имя

Зарплата.Ставка

Зарплата.Начислено

FROM Сотрудники, Зарплата

WHERE Сотрудники.Номер = Зарплата.Номер

Здесь происходит выборка из двух разных таблиц значений, объединённых по номеру. Результатом будет следующий набор данных:

Ещё немного о SELECT. Использование агрегатных функций

Один из основных операторов может производить некоторые вычисления при выборке. Для этого он использует определённые функции и формулы.

К примеру, чтобы получить количество записей из таблицы «Сотрудники», нужно использовать запрос:

SELECT COUNT (*) AS N

FROM Сотрудники

В результате получится таблица с одним значением и столбцом.

Можно применить такой запрос и посмотреть что получится:

SUM(Зарплата.Начислено) AS SUMMA

MAX(Зарплата.Начислено) AS MAX

MIN(Зарплата.Начислено) AS MIN

AVG(Зарплата.Начислено) AS SRED

FROM Зарплата

Итоговая таблица будет такой:

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

Объединение, пересечение и разности

Объединить несколько запросов в SQL

SELECT Сотрудники.Имя

FROM Сотрудники

WHERE Сотрудники.Номер = 1

SELECT Сотрудники.Имя

FROM Сотрудники, Зарплата

WHERE Зарплата.Номер = 1

При этом стоит учитывать, что при таком объединении таблицы должны быть совместимы. То есть иметь одинаковое количество столбцов.

Синтаксис оператора SELECT и порядок его обработки

Первым делом SELECT определяет область, из которой он будет брать данные. Для этого используется ключевое слово FROM. Если не указано, что именно выбрать.

Затем может присутствовать SQL оператор WHERE. С его помощью SELECT пробегает по всем строкам таблицы и проверяет данные на соответствие условию.

Если в запросе имеется GROUP BY, то происходит группировка значений по указанным параметрам.

Операторы для сравнения данных

Их имеется несколько типов. В SQL операторы сравнения могут проверять различные типы значений.

    «=». Обозначает, как можно догадаться, равенство двух выражений. Например, он уже использовался в примерах выше - WHERE Зарплата.Номер = 1.

    «>». Знак больше. Если значение левой части выражения больше, то возвращается логическое TRUE и условие считается выполненным.

    «<». Знак меньше. Обратный предыдущему оператор.

    Знаки «<=» и «>=». Отличается от простых операторов больше и меньше, тем, что при равенстве операндов условие также будет истинным.

LIKE

Перевести данное ключевое слово можно как «похожий». Оператор LIKE в SQL используется примерно по такому же принципу — выполняет запрос по шаблону. То есть он позволяет расширить выборку данных из базы используя регулярные выражения.

Например, поставлена такая задача: из уже известной базы «Сотрудники» получить всех людей, чьё имя заканчивается на «я». Тогда запрос можно составить так:

FROM Сотрудники

WHERE Имя LIKE `%я`

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

CASE

Данный оператор SQL Server представляет собой реализацию множественного выбора. Он напоминает конструкцию switch во многих языках программирования. Оператор CASE в SQL выполняет действие по нескольким условиям.

Например, нужно выбрать из таблицы «Зарплата» максимальное и минимальное значение.

Тогда запрос можно составить так:

FROM Зарплата

WHERE CASE WHEN SELECT MAX(Начислено) THEN Максимум

WHEN SELECT MIN(Начислено) THEN Минимум

В данном контексте система ищет максимальное и минимальное значение в столбце «Начислено». Затем с помощью END создаётся поле «итог», в которое будет заноситься «Максимум» или «Минимум» в зависимости от результата выполнения условия.

Кстати, в SQL имеется и более компактная форма CASE — COALESCE.

Операторы определения данных

Это вид позволяет проводить разнообразное изменение таблиц — создание, удаление, модификации и работу с индексами.

Первый из них, который стоит рассмотреть — CREATE TABLE. Он делает не что иное, как создаёт таблицу. Если просто набрать запрос CREATE TABLE, ничего не случится, так как нужно ещё указать несколько параметров.

Например, для создания уже знакомой таблицы «Сотрудники» нужно использовать команды:

CREATE TABLE Сотрудники

(Номер number(10) NOT NULL

Имя varchar(50) NOT NULL

Фамилия varchar(50) NOT NULL)

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

DROP TABLE

Выполняет одну простую задачу — удаление указанной таблицы. Имеет дополнительный параметр IF EXISTS. Он поглощает ошибку при удалении, если искомая таблица не существует. Пример использования:

DROP TABLE Сотрудники IF EXISTS.

CREATE INDEX

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

CREATE INDEX название_индекса

ON название_таблицы(название_столбца)

Используется данный оператор в T-SQL, Oracle, PL SQL и многих других интерпретациях технологиях.

ALTER TABLE

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

    ADD. Осуществляет добавление столбца в таблицу. Синтаксис его такой: ALTER TABLE название_таблицы ADD название_столбца тип_хранимых_данных. Может иметь параметр IF NOT EXISTS, что подавить ошибку, если создаваемый столбец уже есть;

    DROP. Удаляет столбец. Также имеет ключ IF EXISTS, без которого сгенерируется ошибка, говорящая о том, что требуемый столбец отсутствует;

    CHANGE. Служит для переименования имени поля в указанное. Пример использования: ALTER TABLE название_таблицы CHANGE старое_имя новое_имя;

    MODIFY. Данная команда поможет сменить тип и дополнительные атрибуты определённого столбца. А используется он вот так: ALTER TABLE название_таблицы MODIFY название_столбца тип_данных атрибуты;

CREATE VIEW

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

Процесс создания происходит с помощью простого запроса:

CREATE VIEW название представления AS SELECT FROM * название таблицы

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

Немного о функциях

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

    COUNT. Производит подсчёт записей или строк в конкретной таблице. В качестве параметра можно указать имя столбца, тогда данные будут взяты из него. SELECT COUNT * FROM Сотрудники;

    AVG. применяется только на столбцы с числовыми данными. Ее результатом является определение среднего арифметического всех значений;

    MIN и MAX. Эти функции уже использовались в этой статье. Определяют они максимальное и минимальное значения из указанного столбца;

    SUM. Все просто — функция вычисляет сумму значений столбца. Применяется исключительно для числового вида данных. Добавив в запрос параметр DISTINCT, будут суммироваться только уникальные значения;

    ROUND. Функция округления десятичных дробных чисел. В синтаксисе используется название столбца и количество знаков после запятой;

    LEN. Простая функция, вычисляющая длину значений столбца. Результатом будет новая таблица с указанием количества символов;

    NOW. Это ключевое слово используется для вычисления текущей даты и времени.

Дополнительные операторы

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

    AS. Применяется, когда нужно визуально оформить результат, присваивая указанное имя получившейся таблице.

    BETWEEN. Очень удобный инструмент для выборки. Он указывает область значений, среди которых нужно получить данные. На вход принимает параметр от и до какого числа используется диапазон;.

    NOT. Оператор придаёт противоположность выражению.

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

    LIMIT. Устанавливает количество строк для вывода. Особенность оператора в том, что он всегда располагается в конце. Принимает один обязательный параметр и один опциональный. Первый указывает, сколько строк с выбранными данными нужно показать. А если используется второй, то оператор срабатывает как для диапазона значений.

    UNION. Очень удобный оператор для объединения нескольких запросов. Он уже встречался среди примеров этой в этой статье. Можно вывести нужные строки из нескольких таблиц, объединив их UNION для более удобного использования. Синтаксис его такой: SELECT имя_столбца FROM имя_таблицы UNION SELECT имя_другого_столбца FROM имя_другой таблицы. В результате получится сводная таблица с объединёнными запросами.

    PRIMARY KEY. Переводится как «первичный ключ». Собственно, именно такая терминология и используется в справочных материалах. Он означает уникальный идентификатор строки. Применяется, как правило, при создании таблицы для указания поля, которое и будет содержать его.

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

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

    Память. В этой статье были показаны несколько функций, способные выполнять некоторые задачи. При разработке оболочки для работы с базой, можно «перевесить» вычисление простых выражений на систему управления базами данных. В некоторых случаях это даёт значительный прирост в производительности.

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

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

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

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

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

    Типы. Для экономии места и ресурсов нужно чутко относиться к видам используемых данных. Если есть возможность воспользоваться менее «тяжёлым» для памяти типом, то надо применять именно его. Например, если известно, что в данном поле числовое значение не будет превышать 255, то зачем использовать 4-байтный INT, если есть TINYINT в 1 байт.

Заключение

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

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

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

05.01.15 28.1K

Порой так хочется привести свои мысли в порядок, разложить их по полочкам. А еще лучше в алфавитной и тематической последовательности, чтобы, наконец, наступила ясность мышления. Теперь представьте, какой бы хаос творился в «электронных мозгах » любого компьютера без четкой структуризации всех данных и Microsoft SQL Server :

MS SQL Server

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


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

Обзор возможностей MS SQL Server


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

То есть их инструментарий легко взаимодействует между собой, что во многом упрощает процесс разработки и написания программного кода. Примером такой взаимосвязи является среда программирования MS Visual Studio . В ее инсталляционный пакет уже входит SQL Server Express Edition .

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

Преимущества MS SQL Server :

  • Обладает высокой степенью производительности и отказоустойчивости;
  • Является многопользовательской СУБД и работает по принципу «клиент-сервер »;

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

  • Тесная интеграция с операционной системой Windows ;
  • Поддержка удаленных подключений;
  • Поддержка популярных типов данных, а также возможность создания триггеров и хранимых процедур;
  • Встроенная поддержка ролей пользователей;
  • Расширенная функция резервного копирования баз данных;
  • Высокая степень защищенности;
  • Каждый выпуск включает в себя несколько специализированных редакций.

Эволюция SQL Server

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

  • Microsoft SQL Server 1.0 – вышел еще в 1990 году. Уже тогда эксперты отмечали высокую скорость обработки данных, демонстрируемую даже при максимальной нагрузке в многопользовательском режиме работы;
  • SQL Server 6.0 – вышел в 1995 году. В этой версии впервые в мире была реализована поддержка курсоров и репликации данных;
  • SQL Server 2000 – в этой версии сервер получил полностью новый движок. Большая часть изменений коснулась лишь пользовательской стороны приложения;
  • SQL Server 2005 – увеличилась масштабируемость СУБД , во многом упростился процесс управления и администрирования. Был внедрен новый API для поддержки программной платформы .NET ;
  • Последующие выпуски – были направлены на развитие взаимодействия СУБД на уровне облачных технологий и средств бизнес-аналитики.

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


Диспетчер конфигурации. Позволяет управлять всеми сетевыми настройками и службами сервера базы данных. Используется для настройки SQL Server внутри сети.
  • SQL Server Error and Usage Reporting :


Утилита служит для настройки отправки отчетов об ошибках в службу поддержки Microsoft .


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

Набор утилит, входящих в Microsoft SQL Server , может отличаться в зависимости от версии и редакции программного пакета. Например, в версии 2008 года вы не найдете SQL Server Surface Area Configuration .

Запуск Microsoft SQL Server

Для примера будет использована версия сервера баз данных выпуска 2005 года. Запуск сервера можно произвести несколькими способами:

  • Через утилиту SQL Server Configuration Manager . В окне приложения слева выбираем «SQL Server 2005 Services », а справа — нужный нам экземпляр сервера БД . Отмечаем его и в подменю правой кнопки мыши выбираем «Start ».

  • С помощью среды SQL Server Management Studio Express . Она не входит в инсталляционный пакет редакции Express . Поэтому ее нужно скачивать отдельно с официального сайта Microsoft .

Для запуска сервера баз данных запускаем приложение. В диалоговом окне «Соединение с сервером » в поле «Имя сервера » выбираем нужный нам экземпляр. В поле «Проверка подлинности » оставляем значение «Проверка подлинности Windows ». И нажимаем на кнопку «Соединить »:

Основы администрирования SQL Server

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

  • SQL Server Surface Area Configuration – сюда следует обращаться, если нужно включить или отключить какую-либо возможность сервера баз данных. Внизу окна находятся два пункта: первый отвечает за сетевые параметры, а во втором можно активировать выключенную по умолчанию службу или функцию. Например, включить интеграцию с платформой .NET через запросы T-SQL :

Функциональные возможности языка SQL

Основные функциональные возможности языка SQL приведены ниже.

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

Создание базы данных . Для создания новой базы данных используется оператор CREATE DATABASE. В структуре оператора указывается имя создаваемой базы данных.

Создание таблиц. Базовая таблица создается с помощью оператора CREATE TABLE. В этом операторе указываются имена полей, типы данных для них, длина (для некоторых типов данных). В SQL используются следующие типы данных:

INTEGER – целое число;

CHAR – символьное значение;

VARCHAR – символьное значение, сохраняются только непустые символы;

DECIMAL – десятичное число;

FLOAT – число с плавающей запятой;

DOUBLE PRECISION – удвоенная точность с плавающей точкой;

DATETIME – дата и время;

BOOL – булевое значение.

В операторе создания таблицы указываются ограничения на значения столбцов и на таблицу. Возможные ограничения показаны в табл. 4.8

Таблица 4.8 Ограничения на определяемые данные

Для реляционной модели данных существенным является указания внешнего ключа(FOREIGNKEY). При объявлении внешних ключей необходимо наложить соответствующие ограничения на столбец, например, NOT NULL.

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

Нельзя использовать оператор создания таблицы несколько раз для одной и той же таблицы. Если после ее создания обнаружились неточности в ее определении, то внести изменения можно с помощью оператора ALTER TABLE. Этот оператор предназначен для изменения структуры существующей таблицы: можно удалить или добавить поле к существующей таблице.

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

Вставка новых данных является процедурой добавления строк в базу данных и выполняется с помощью оператора INSERT.

Модификация данных предполагает изменения значений в одном или нескольких столбцах таблицы и выполняется с помощью оператора UPDATE. Пример:

SET сумма=сумма+1000.00

WHERE сумма>0

Удаление строк из таблицы осуществляется с помощью оператора DELETE. Синтаксис оператора имеет вид:

FROM таблица

Предложение WHERE не является обязательным, однако, если его не включить, то будут удалены все записи таблицы. Полезно использовать оператор SELECT c тем же синтаксисом, что и оператор DELETE, чтобы предварительно проверить, какие записи будут удалены.

Обеспечение целостности данных. Язык SQL позволяет определить достаточно сложные ограничения целостности, удовлетворение которым будет проверяться при всех модификациях базы данных. Контроль за результатами транзакций, обработка возникающих ошибок и координирование параллельной работы с базой данных нескольких приложений или пользователей обеспечивается операторами COMMIT(фиксирует удачное окончание текущей транзакции и начало новой) и ROLLBACK (необходимость отката – автоматического восстановления состояния базы данных на начало транзакции)

Выборка данных – одна из важнейших функций базы данных, которой соответствует оператор SELECT. Пример использования оператора был рассмотрен в предыдущем разделе.

В SQL можно создавать вложенные последовательности запросов (подзапросы). Существуют определенные типы запросов, которые лучше реализовывать с помощью подзапросов. К таким запросам относятся так называемые проверки существования. Предположим, что требуется получить данные о студентах, которые не имеют оценку «семь баллов». Если будет возвращено пустое множество, то это означает лишь одно – у каждого студента есть, по крайней мере, одна такая оценка.

Связывание таблиц . Операторы языка SQL позволяют извлекать данные более чем из одной таблицы. Одна из возможностей сделать это заключается в связывании таблиц по одному общему полю.

В операторе SELECT должно присутствовать ограничение на совпадение значений определенного столбца (поля). Тогда из связанных таблиц будут извлекаться только те строки, в которых значения заданного столбца совпадают. Название столбца указывается только вместе с названием таблицы; в противном случае оператор будет неоднозначным.

Можно использовать другие типы связывания таблиц: оператор INTER JOIN (внутреннее соединение) обеспечивает присутствие в результирующем наборе записей, совпадающие значения в связанных полях. Внешние соединения (OUTER JOIN) позволяют включить в результат запроса все строки из одной таблицы и соответствующие им строки из другой

Управление доступом. SQL обеспечивает синхронизацию обработки базы данных различными прикладными программами, защиту данных от несанкционированного доступа.

Доступ к данным в многопользовательской среде регулируется с помощью операторов GRANT и REVOKE. В каждом операторе необходимо указать пользователя, объект (таблицу, представление), по отношению к которому задаются полномочия, и сами полномочия. Например, оператор GRANT задает пользователю Х возможность производить выборку данных из таблицы ТОВАР:

GRANT SELECT ON ТОВАР TO X

Оператор REVOKE аннулирует все предоставленные ранее полномочия.

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

Стандартом фирмы IBM для SQL-продуктов регламентировано использование встроенного языка SQL. При написании прикладной программы ее текст представляет собой смесь команд основного языка программирования (например, C, Pascal, Cobol, Fortran, Assembler) и команд SQL со специальным префиксом, например. ExecSQL. Структура SQL-предложений расширена для размещения переменных основного языка в SQL-конструкции.



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

Диалекты языка SQL

В современных реляционных СУБД для описания и манипулирования данными используются диалекты языка SQL. Подмножество языка SQL, позволяющее создавать и описывать БД, называется DDL (Data Definition Language).

Первоначально язык SQL назывался SEQUEL(Structured English Query Language), потом SEQUEL/2, а затем просто – SQL. Сегодня язык SQL –фактический стандарт для реляционных СУБД.

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

SQL2 (или SQL-92) охватывает практически все необходимые проблемы: манипулирование схемой базы данных, управление транзакциями и сессиями, поддерживает архитектуры клиент-сервер или средства разработки приложений.

Дальнейшим шагом развития языка является вариант SQL 3. Эта версия языка дополняется механизмом триггеров, определением произвольного типа данных, объектным расширением.

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

Таблица 4.9 Диалекты языка SQL

СУБД Язык запросов
СУБД System R SQL
DB2 SQL
Access SQL
SYBASE SQL Anywhere Watcom-SQL
SYBASE SQL Server Transact_SQL
My SQL SQL
Oracle PL/SQL

В объектно-ориентированных БД используется язык объектных запросов OQL (Object Query Language). За основу языка OQL была взята команда SELECT языка SQL2 и добавлены возможность направлять запрос к объекту или коллекции объектов, а также возможность вызывать методы в рамках одного запроса.

Совместимость многих используемых диалектов SQL обусловливает совместимость СУБД. Так, СУБД SYBASE SQL Anywhere максимально, насколько это возможно для СУБД такого класса, совместима с СУБД SYBASE SQL Server. Одной из сторон такой совместимости является поддержка в SYBASE SQL Anywhere такого диалекта языка SQL как Transact-SQL . Этот диалект используется в SYBASE SQL Server и может применяться в SYBASE SQL Anywhere наряду с собственным диалектом языка SQL - Watcom-SQL .

Контрольные вопросы

1. Как можно классифицировать СУБД?

2. Какие модели баз данных существуют?

3. Что является основными элементами инфологических моделей?

4. Какие типы связей между сущностями существуют?

5. Что такое ER-диаграммы и для чего они используются?

6. Что позволяет делать процедура нормализации таблиц?

7. Назовите языковые и программные средства СУБД?

8. К каому типу относится СУБД MS Access?

9. Назовите основные объекты СУБД MS Access?

10. Для чего используются основные операторы языка SQL?

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

· Интерактивный режим (используется для создания вопросов пользователя и получения результатов в интерактивном режиме).

· Встроенный режим (состоит из команд SQL встроенных внутрь программ написанных на другом языке программирования.)

Основу языка SQLсоставляют операторы, распределенные между 3 компонентами этого языка:

1. Язык манипулирования данными – предназначен для поддержки БД и включает операторы добавления, изменения, удаления и выборки данных.

2. Язык определения данных – предназначен для создания изменения, удаления таблиц и всей БД в целом.

3. Язык управления данных – предназначен для обеспечения защиты от различного рода повреждений (СУБД гарантирует некоторую защиту автоматически).

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

Ключевые слова в выражениях на SQL могут прописываться как строчными, так и прописным, и буквами в одну или несколько строк. Каждый запрос должен заканчиваться «;». Зарезервированные слова не могут использоваться в качестве названия объектов БД.

Выборка данных с использование предложения Select.

Selectсписок_столбцовfromимя_таблицы.

Select * from товар where prise< 50000;

В конструкции whereмогут применятся следующие операторы:

2. IsNULL – выбираются все строки не имеющие значения в указанном поле. select * fromTovarwheresrok_godisnull.

3. Between – позволяет проверить вхождение какого-либо значения в диапазон определяемый граничными значениями. select * fromTovarwherepricebetween 100000 and 1000000.

4. In – проверяет вхождение какого-либо значения в список значений. Список значений указывается в круглых скобках, значения перечисляются через запятую.select * fromTovarwhereprice in(20000, 30000, 50000).

5. Like – соответствие – просматривает строковые значения с целью определения входит ли заданная в операторе likeстрока в символьную строку проверяемого поля. select * fromTovarwherenamelike‘ирис’; в операторе Likeмогут использоваться следующие символы для указания шаблона искомой строки:

А) ? – замещает любой ОДИН символ

Б) * - допускает в указанном месте наличие любой последовательности символов.

Сортировка данных в таблице

Selectspisokfromimya_tabl orderbyимя_столбца . Если сортировка производится по нескольким столбцам, то их указываем через запятую. Ask – повозрастанию, desc – поубыванию. Select * fromTovarorderbyprice

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

Selectсписок_столбцовfromимя_таблицыgroupbyстолбец_группировка.

Select avg (price) from Tovar group by kod_proiz;

Selectсписок_столбцовfromимя_таблицыgroupbyстолбец_группировкаhavingусловие; (группировка по условию).

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

Select avg (price) from Tovar group by kod_proizv having kod_proizv=1 or kod_proizv=2;

Sportsman
Id
Fio
Pol
vozrASt
Club
sport

Select fio, sport, club from sportsman;

Select * from sportsman where vozrast<18;

Select * from sportsman where pol like ‘ж*’;

Select * from sportsman where club like ‘спартак’;

Select * from sportsman where vozrast between 18 and 25;

Select avg(vozrast) from sportsman where sport like ‘волейбол’;

Select count(fio) from sportsman group by club;

Select * from sportsman where vozrast>25;

Select count(fio) from sportsman group by club having vozrast>25;

Вложенныезапросы

Select * from Tovar where kod_proiz in (select id from proizv where name like’А%’);

Select avg(price) from Tovar where kod_proiz in (select id from proizv where country like ‘Франция’);

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

Select name, price, kol from Tovar where price > 50000

select name, price,kol from Tovar where kod_proizv in (select id from proizv where country like ‘Франция’);

Манипулирование данными

К операторам манипулирования данными относятся вставка(insert), обновление (update) и удаление (delete).

Вставка записи.

Insertintoимя_таблицы[(поле1, … , полеn)] values (значение1, … , значение n);

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

Insert into Tovar values (1,’шоколад’, 100, 10500, ‘1 год’, 2);

Insertinto Tovar (id,name, price,kod_proizv values (2,”bhbc”,500,1));

Updateимя_таблицыsetзначения_столбца=значение ;

updateприменется ко всем записяи если нету where, если whereприсутствует то updasteприменяется к записям удовлетворяющим условиям.

Update Tovar set kol=kol+100;

Update Tovar set price=price*2 where kod_proizin(select id from proizvwhere country like ‘Франция’);

Delete from имя_таблицы;

Если условие отсутствует, то из таблицы удаляются все записи.

Delete from Tovar where srok_god is NULL;

Delete from proiz where license like ‘%2012’;

Организация данных в InterBase. Работа с доменами и таблицами.

Типы данных SQL:

Символьные типы данных:

1. char– один символ

2. char(n) –символьная строка фиксированной длины, где n – длина строки. Для хранения таких данных всегда отводится n байт вне зависимости от реальной длины.

3. varchar(n) – символьная строка переменной длины, для хранения данных этого типа отводится число байт соответствующее реальной длине строки.

Целочисленные данные:

1.integer/int – (-2147483647 - +2147483648) для хранения целочисленных данных отводится, как правило, 4 байта с указанным диапазоном значений.

2. smallint – (-32767 - +32768) короткое целое для хранения которого отводится 2 байта.

Вещественные типы данны:

1. float- вещественный тип данных для хранения которого отводится 8 байт.

2. smallfloat – для хранения данных отводится 4 байта.

4. decimal(p,n)–аналогичен floatр – количество значащих цифр, n – количество цифр после запятой.

Денежные типы данных:

1.money(p,n) – аналогичен типу данных decimal(p,n).Вводится только потому в некоторых СУБД, что для него используют специальные методы форматирования.

Дата и время:

1. date – для хранения даты.

2. time – для хранения времени.

3. interval – для хранения временного интервала.

4. datetime – для хранения моментов времени (год, месяц, число, часы, минуты, секунды, доли секунд).

Двоичные типы данных – позволяет хранить данные любого объема в двоичном коде:

Для всех типов данных имеется одно общее значение NULL, т.е. значение не определено. Это значение имеет каждый элемент столбца, пока в него не будут внесены данные.

Создание БД при помощи SQL запросов.

Create database имя_БД;

Пример: create database shop;

Drop database имя_БД;

Пример: Drop database shop;

Работастаблицами

Createtableимя_таблицы (имя_полятип_поля , …);

Create table proizvod (id int primary key, name varchar (20) not null, address varchar (30) not null, telvarchar (15) not null, country varchar (20) not null, license datetime);

Create table Tovar (id int primary key, name varchar (20) not null, kolsmallint not null, price int not null, srok_godvarchar(40) not null, kod_proizvint references proizvod (id));

Notnull – если указана эта конструкция, то элементы столбца всегда должны иметь определенное значение (не null)

Unique – значение каждого элемента столбца должно быть уникальным

Primarykey – столбец является первичным ключом

Параметры Unique и Primarykey являются взаимоисключаемыми.

Referencesимя_таблицы (имя_столбца) – данный столбец является внешним ключом, указывается имя таблицы и столбец на который он ссылается.

Удаление таблицы

Droptable<имя_таблицы>;

Пример: droptableTovar – удаление таблицы «товар»

Модификация таблицы

Добавление столбцов в таблицу:

Altertable<имя_таблицы>

ADD (<имя_столбца>тип_данных , …);

Alter table Tovar

Add (sostavvarchar (100) not null, opt_priceint not null);

Удаление столбцов из таблицы:

Altertable<имя_таблицы>

Drop (имя_строки1б имя_строки2, …);

Alter table Tovar

Drop (sostav, opt_price);

Изменение столбцов в таблице

Altertable<имя_таблицы>

Modify (имя_столбцатип_данных , …);

Modify (srok_goddatetime not null);

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

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

Команда Назначение
Команды определения данных
CREATE TABLE Создает структуру таблицы
DROP TABLE Удаляет таблицу
ALTER TABLE Изменяет описание структуры таблицы
CREATE VIEW Создает представление
INSERT Добавляет новые записи в таблицу
DELETE Удаляет записи из таблицы
UPDATE Обновляет данные таблицы
Команда извлечения данных
SELECT Извлекает данные из базы данных
COMMIT Сообщает об успешном окончании транзакции
ROLLBACK Сообщает о неуспешном окончании транзакции
Команды управления доступом
GRANT Предоставляет пользователю определенные права доступа
REVOKE Отменяет определенные права доступа
Команды встроенного SQL
DECLARE, OPEN, FETCH, CLOSE Реализуют обращения к базе данных из прикладных программ.

Команды определения данных служат для создания и удаления таблиц, а также изменения структуры таблицы, например, для добавления нового поля. С помощью команды CREATE VIEW создается представление , т.е. таблица содержащая данные из других таблиц.

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

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

SQL-транзакция – это несколько последовательных команд SQL, которые должны выполняться как единое целое.

Транзакция либо успешно выполняется, и тогда СУБД фиксирует произведенные изменения базы данных, на внешнем носителе; либо отменяется, и тогда все произведенные изменения СУБД ликвидирует. Таким образом, принцип транзакции «либо все, либо ничего». Примером транзакции может служить перевод денег клиентом банка из одного филиала в другой. Необходимо как единое целое осуществить два действия: списать деньги со счета в одном филиале и занести деньги на счет в другом филиале.

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

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

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

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

· INSERT – право добавлять данные в таблицу;

· UPDATE – право изменять данные таблицы;

· DELETE – право удалять данные из таблицы;

· REFERENCES – право определять первичный ключ.

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

К встроенным относятся команды, предназначенные для реализации обращения к базе данных из прикладных программ, написанных на определенном языке программирования. Для пересылки данных из базы данных в прикладную программу используется временная таблица, называемая SQL-курсором . Команды DECLARE, OPEN, FETCH, CLOSE позволяют управлять SQL-курсором.

Знания и их виды.

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

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

В общем случае существует много определений знаний. Некоторые из них приведены ниже:

Знание - это форма существования и систематизации результатов познавательной деятельности человека.

Знание - субъективный образ объективной реальности, то есть адекватное отражение внешнего и внутреннего мира в сознании человека в форме представлений, понятий, суждений, теорий.

Знание в широком смысле - совокупность понятий, теоретических построений и представлений.

Знание в узком смысле - данные, информация.

Знание (предмета) - уверенное понимание предмета, умение самостоятельно обращаться с ним, разбираться в нём, а также использовать для достижения намеченных целей.

Данные – не подвергшиеся обработке сведения, факты, измерения, сигналы, имеющие отношение к событиям. Они являются «сырым» материалом для дальнейших преобразований.

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

Знания -информация (у индивидуума, общества или у системы искусственного интеллекта) о мире, включающих в себя информацию о свойствах объектов, закономерностях процессов и явлений, а также правилах использования этой информации для принятия решений. Правила использования включают систему причинно-следственных связей. Знания дают ответ на вопрос «Как?».

Мудрость - оценка понимания знаний, правильное применение накопленных знаний, учитывая реалии и ограничений . Мудрость дает ответ на вопрос «Почему?».

Классификация видов и форм знания в настоящее время является во многом дискуссионной. Приведем некоторые виды.

Знания могут быть:

декларативные

процедурные

Декларативные знания содержат в себе лишь представление о структуре неких понятий. Эти знания приближены к данным, фактам. Например: высшее учебное заведение есть совокупность факультетов, а каждый факультет в свою очередь есть совокупность кафедр.

Процедурные знания имеют активную природу. Они определяют представления о средствах и путях получения новых знаний, проверки знаний. Это алгоритмы разного рода. Например: знания, полученные в результате мозгового штурма или компьютерные программы. Процедурные знания дают представления о средствах и путях получения новых знаний, проверки знаний. Они имеют активную природу.

Знания могут быть

научными

вненаучными.

Научные знания могут быть

эмпирическими (на основе опыта или наблюдения)

теоретическими (на основе анализа абстрактных моделей).

Вненаучные знания могут быть:

паранаучными - знания несовместимые с имеющимся познавательным стандартом стандартом. Широкий класс паранаучного (пара от греч. - около, при) знания включает в себя учения или размышления о феноменах, объяснение которых не является убедительным с точки зрения критериев научности;

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

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

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

личностными- зависящими от способностей того или иного субъекта и от особенностей его интеллектуальной познавательной деятельности.

Знания могут быть

неявные, (скрытые) знания

формализованные (явные) знания;

Неявные знания:

знания людей,

Формализованные (явные) знания:

знания в документах,

знания на компакт дисках,

знания в персональных компьютерах,

знания в Интернете и др.

Для эффективного управления предприятием необходимо организовать совместное использование знаний, их защиту и интеграцию в цепочку бизнес- процессов. Такая технология известна как управление знаниями (Knowledge Management).

Базы знаний.

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

Из определения видно, что в отличие от базы данных в базе знаний (БЗ) хранятся не только данные, описывающие рассматриваемую предметную область, но также и правила, описывающих целесообразные преобразования хранящихся данных.

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

Под экспертной системой (ЭС) понимается система, объе­диняющая возможности компьютера со знаниями и опытом эксперта в та­кой форме, что система может предложить разумный совет или осуществить разумное решение поставленной задачи. Дополнительно желаемой харак­теристикой такой системы является способность системы пояснять по требованию ход своих рас­суждений в понятной для спрашивающего форме.

Общую структуру экспертной системы можно представить (Рис 9.2)


Рис. 18. Общая структура экспертной системы

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

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