Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Администрация города Югорска

Читайте также:
  1. CОЦИАЛЬНЫЙ КАПИТАЛ ГОРОДА
  2. АДМИНИСТРАЦИЯ ГУБЕРНАТОРА
  3. Администрация муниципального образования Щекинский район
  4. Администрация муниципального образования Щекинский район
  5. Администрация муниципального образования Щекинский район
  6. АДМИНИСТРАЦИЯ САХАЛИНСКОЙ ОБЛАСТИ
  7. Архитектура исторического города
  8. Архитектура современного города.
  9. В дни работы чтений в школах города проводятся

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

Его появление и развитие как средства описания доступа к базе данных связано с созданием теории реляционных баз данных. Прообраз языка SQL возник в 1970 году в рамках научно-исследовательского проекта System/R, работа над которым велась в лаборатории Санта-Тереза фирмы IBM. Сегодня SQL - это фактический стандарт интерфейса с современными реляционными СУБД. Популярность его настолько велика, что разработчики не-реляционных СУБД (например, Adabas), снабжают свои системы SQL-интерфейсом.

Язык SQL имеет официальный стандарт - ANSI/ISO. Большинство разработчиков СУБД придерживается этого стандарта, однако, часто расширяют его для реализации новых возможностей обработки данных. Новые механизмы управления данными, которые будут описаны в Разделе 2, могут быть использованы только через специальные операторы SQL, в общем случае не включенные в стандарт языка.

SQL не является языком программирования в традиционном представлении. На нем пишутся не программы, а запросы к базе данных. Поэтому SQL - декларативный язык. Это означает, что с его помощью можно сформулировать, что необходимо получить, но нельзя указать, какэто следует сделать. В частности, в отличие от процедурных языков программирования (СИ, Паскаль, Ада), в языке SQL отсутствуют такие операторы, как if/then/else, for, while, break, continue и т.д.

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

Запрос на языке SQL состоит из одного или нескольких операторов SQL, следующих один за другим и разделенных точкой с запятой. Наиболее важные операторы SQL, которые входят в стандарт ANSI/ISO SQL, перечислены в табл. 1.

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

В запросах на языке SQL используются имена, которые однозначно идентифицируют объекты базы данных. В частности, это - имя таблицы (Деталь), имя столбца (Название), а также имена других объектов в базе, которые относятся к дополнительным типам (например, имена процедур и правил), о которых речь пойдет в Разделе 2. Наряду с простыми, используются также сложные имена - например, квалификационное имя столбца (qualified column name) определяет имя столбца и имя таблицы, которой он принадлежит (Деталь.Вес). Для простоты в примерах имена будут записаны на русском языке, хотя на практике этого делать не рекомендуется. Имена выделены в тексте жирным шрифтом.

Каждый столбец в любой таблице хранит данные определенных типов. Различают базовые типы данных - строки символов фиксированной длины, целые и вещественные числа, и дополнительные типы данных - строки символов переменной длины, денежные единицы, дата и время, логические данные (два значения - " ИСТИНА " и " ЛОЖЬ "). В языке SQL можно использовать числовые, строковые, символьные константы и константы типа " дата " и " время ".

Рассмотрим несколько примеров.

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

SELECT Название, Количество

FROM Деталь;

{ВЫБРАТЬ Название, Количество

ИЗ Деталь }

 

Результатом запроса будет таблица с двумя столбцами - Название и Количество, которые взяты из исходной таблицы Деталь. По сути, этот запрос позволяет получить вертикальную проекцию исходной таблицы (более строго, вертикальное подмножество множества строк таблицы). Из всех строк таблицы Деталь образуются строки, которые включают значения, взятые из двух столбцов - Название и Количество.

Запрос " какие детали, изготовленные из стали, хранятся на складе? ", сформулированный на языке SQL, выглядит так:

SELECT *

FROM Деталь

WHERE Материал = "Сталь";

{ВЫБРАТЬ ВСЕ

ИЗ Деталь

ГДЕ Материал = "Сталь"}

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

Запрос "определить название и количество деталей на складе, которые изготовлены из пластмассы и весят меньше пяти килограммов" будет записан следующим образом:

SELECT Название, Количество

FROM Деталь

WHERE Материал = "Пластмасса"

AND Вес < 5;

{ВЫБРАТЬ Название, Количество

ИЗ Деталь

ГДЕ Материал = "Пластмасса"

И Вес < 5 }

Результат запроса - таблица из двух столбцов - Название, Количество, которая содержит название и число деталей, изготовленных из пластмассы и весящих менее 5 кг. По сути, операция выборки является операцией образования сначала горизонтальной проекции (найти все строки таблицы Деталь, у которых Материал = "Пластмасса" и Вес < 5), а затем вертикальной проекции (извлечь Название и Количество из выбранных ранее строк).

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

Допустим, что сформулирован запрос к базе данных Склад:

SELECT Название, Количество, Материал

FROM Деталь

WHERE Номер = "Т145-А8";

{ВЫБРАТЬ Название, Количество, Материал

ИЗ Деталь ГДЕ Номер = "Т145-А8"}

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

Если же был предварительно создан индекс по столбцу Номер таблицы Деталь, то время поиска в таблице будет сокращено до минимума. Индекс будет содержать значения из столбца Номер таблицы Деталь и ссылку на строку с этим значением в таблице Деталь. При выполнении запроса СУБД вначале найдет в индексе значение " Т145-А8 " (и сделает это быстро, так как индекс упорядочен, а его размер строки невелик), а затем по ссылке в индексе определит физическое расположение искомой строки.

Индекс создается оператором SQL CREATE INDEX (СОЗДАТЬ ИНДЕКС). В данном примере оператор

 

CREATE UNIQUE INDEX Индекс детали

ON Деталь (Номер);

{СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС Индекс детали

ДЛЯ Деталь (Номер)}

позволит создать индекс с именем " Индекс детали " по столбцу Номер таблицы Деталь.

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

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

Обработка транзакций опирается на журнал транзакций. В него заносится информация о каждой транзакции к базе данных. Она используется для отката транзакций и восстановления состояния базы данных. Более подробно о транзакциях будет сказано в Разделе 5.

Завершая обсуждение языка SQL, еще раз подчеркнем, что это - язык запросов. На нем нельзя написать сколько-нибудь сложную прикладную программу, которая работает с базой данных. Для этой цели в современных СУБД используется язык четвертого поколения (Forth Generation Language - 4GL), обладающий как основными возможностями процедурных языков третьего поколения (3GL), таких как СИ, Паскаль, Ада, так и возможностью встроить в текст программы операторы SQL, и средствами управления интерфейсом пользователя (меню, формами, вводом пользователя и т.д.). Сегодня язык 4GL - это один из фактических стандартов средств разработки приложений, работающих с базами данных.

Табл. 1.

SELECT Выбрать данные из базы данных ВЫБРАТЬ
INSERT Добавить данные в базу данных ВКЛЮЧИТЬ
UPDATE Обновить данные в базе данных ОБНОВИТЬ
DELETE Удалить данные из базы данных УДАЛИТЬ
GRANT Предоставить привилегии пользователю РАЗРЕШИТЬ
REVOKE Отменить привилегии пользователя ОТМЕНИТЬ
COMMIT Зафиксировать текущую транзакцию ЗАФИКСИРОВАТЬ

Администрация города Югорска




Дата добавления: 2014-12-18; просмотров: 89 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав