Курсовая работа по дисциплине «Базы данных»
на тему” Структура языкаSQL”
СодержаниеВведение
1 Понятие базы данных и СУБД1.1 Предметная область1.2 Концепция баз данных1.2.1 Независимость приложений от организацииданных во внешней памяти1.2.2 Эффективность организации данных1.2.3 Интеграция данных1.2.4 Что такое база данных
2. Типы данных SQL 2.1 Таблицы SQL2.2 Структура языка SQL2.3 Операторы SQLЗаключение
Глоссарий
Список использованных источников />/>/>/>/>Приложение А
/>/>/>/>/>/>/>/>Введение
Одним из основныхпреимуществ реляционного подхода к организации баз данных (БД) является то, чтопользователи реляционных БД получают возможность эффективной работы в терминахпростых и наглядных понятий таблиц, их строк и столбцов без потребности знанияреальной организации данных во внешней памяти.
Реляционная модельданных, содержащая набор четких предписаний к базовой организации любойреляционной системы управления базами данных (СУБД), позволяет пользователямработать в ненавигационной манере, т.е. для выборки информации из БД человекдолжен всего лишь указать список интересующих его таблиц и те условия, которымдолжны удовлетворять выбираемые данные. СУБД скрывает от пользователявыполняемые ей последовательные просмотры таблиц, выполняя их наиболееэффективным образом. Очень важная особенность реляционных систем состоит в том,что результатом выполнения любого запроса к таблицам БД является также таблица,которую можно сохранить в БД и/или по отношению к которой можно выполнять новыезапросы.
Базовым требованием креляционным СУБД является наличие мощного и в тоже время простого языка,позволяющего выполнять все необходимые пользователям операции. В последние годытаким повсеместно принятым языком стал язык реляционных БД SQL — StructuredQuery Language (теперь все чаще название языка понимается как Standard QueryLanguage) .
До появления SQL в СУБД(независимо от того, на какой модели они основывались) приходилось поддерживатьпо крайней мере три языка, которые обычно имели мало общего: язык определенияданных (ЯОД), служащий для спецификации структур БД (обычно общую структуру БДназывают схемой БД); язык манипулирования данными (ЯМД), позволяющий создаватьприкладные программы, взаимодействующие с БД; и язык администрирования БД(ЯАДБ), с помощью которого можно было выполнять служебные действия (например,изменять структуру БД или производить ее настройку с целью повышенияэффективности). Кроме того, если требовалось предоставить пользователям СУБДинтерактивный доступ к БД, приходилось вводить еще один язык, операторыкоторого выполняются в диалоговом режиме. Язык SQL позволяет решать все этизадачи.
Следует отметить, что кдостоинствам языка SQL относится наличие международных стандартов. Первыймеждународный стандарт был принят в 1989 г., и соответствующая версия языка называется SQL-89. Этот стандарт полностью поддерживается практически во всехсовременных коммерческих реляционных СУБД (например, в Informix, Sybase,Ingres, DB2 и т.д.). Стандарт SQL-89 во многих частях имеет чрезвычайно общийхарактер и допускает очень широкое толкование. В этом стандарте полностьюотсутствуют такие важные разделы, как манипулирование схемой БД и динамическийSQL. Многие важные аспекты языка в соответствии со стандартом определяются вреализации.
Возможно, наиболееважными достижениями стандарта SQL-89 являются четкая стандартизация синтаксисаи семантики операторов выборки и манипулирования данными и фиксация средствограничения целостности БД, включающих возможности определения первичного ивнешних ключей отношений и так называемых проверочных ограничений целостности,позволяющих сформулировать условие для каждой отдельной строки таблицы.Средства определения внешних ключей позволяют легко формулировать требованиятак называемой целостности БД по ссылкам. Формулировка ограничений целостностина основе понятия внешнего ключа проста и понятна.
Осознавая неполнотустандарта SQL-89, на фоне завершения разработки этого стандарта специалистыразличных фирм начали работу над стандартом SQL2. Эта работа также длиласьмного лет, было выпущено несколько проектов стандарта, пока, наконец, в марте 1992 г. не был выработан окончательный проект стандарта (после чего стандарт и соответствующий языкстали называть SQL-92). Этот стандарт существенно более полный и охватываетпрактически все необходимые для реализации аспекты: манипулирование схемой БД,управление транзакциями и сессиями (сессия — это последовательность транзакций,в пределах которой сохраняются временные отношения), подключение к БД,динамический SQL. Наконец стандартизованы отношения-каталоги БД, что вообще-тоне связано с языком непосредственно, но очень сильно влияет на реализацию.Заметим, что в стандарте представлены три уровня языка — базовый, промежуточныйи полный. В течение нескольких лет после принятия стандарта производители СУБД,утверждавшие совместимость своих продуктов со стандартом, на самом деле влучшем случае поддерживали промежуточный уровень языка SQL-92 (естественно, ссобственными расширениями). Только в последних выпусках СУБД ведущихпроизводителей обеспечивается совместимость с полным вариантом языка. Наконец,одновременно с завершением работ по определению стандарта SQL-92 была начатаразработка стандарта SQL3. Общей точкой зрения ведущих производителей СУБДявляется то, что будущие продукты, обладая более развитыми возможностями,должны быть совместимы с предыдущими выпусками. Хотя многие разработчики ипользователи реляционных СУБД осознают наличие многих неустранимых недостатковязыка SQL, от него теперь уже невозможно отказаться (как невозможно отказатьсяот использования языка Си в процедурном программировании). Следовательно, нуженновый стандарт языка, обеспечивающий такие очевидно необходимые возможности какопределяемые пользователями типы данных, более развитые средства определениятаблиц, наличие полного механизма триггеров и т.д. Нужен именно стандарт, а неналичие развитых частных версий языка, поскольку это выгодно и производителям ипользователям СУБД.
/>/>/>/>1 Понятие базы данных и СУБД
1.1 Предметная область
Основным назначением информационныхсистем является хранение сведений об окружающем мире и процессах происходящих внем, которые в конечном итоге предоставляются пользователям. Поскольку дляразличных групп людей интерес представляют только определенные части реальногомира, то и данные каждой информационной системы будут относится к определеннойобласти. Часть реальной системы, подлежащая исследованию с целью ее описанияназывается предметной областью.
Различают полную предметную область иее фрагменты, при этом каждый фрагмент может представлять свою предметнуюобласть. Например, для университета можно выделить следующие фрагменты: учебныйотдел, бухгалтерия, отдел кадров, бюро расписаний и т. д.
Информация, необходимая для описанияпредметной области, может включать сведения о людях, предметах, документах,событиях, понятиях и т.д.
Каждая предметная область характеризуетсямножеством объектов – элементов реальных систем и процессов, использующихобъекты, а также множеством пользователей, характеризуемых единым взглядом напредметную область. В частности, для бухгалтерии объекты – всевозможныедокументы. Процессы бухгалтерии – расчет заработной платы, материальный учет,учет банковских операций и др. Наконец пользователи этого фрагмента сотрудникибухгалтерии, работники финансовых органов, руководители предприятия и т. д.
Каждый объект обладает определеннымнабором свойств, которые запоминаются в информационной системе. При обработкеданных часто приходится иметь дело с совокупностью однородных объектов,например, таких, как студенты или факультеты, и записывать информацию об однихи тех же свойствах для каждого из них. Совокупность объектов, обладающих одинаковымнабором свойств, называется классом объектов. Для объектов одного класса наборсвойств будет одинаков, хотя значения этих свойств для каждого объекта могутбыть разными.
Часто класс объектов называютсущностью. Каждая сущность обладает атрибутами. Атрибут – это свойство объекта,характеризующее его экземпляр. Сущность «студент» может иметьатрибуты «имя», «год рождения», ” дата поступления”и т. д. Таким образом сущность можно определить, как множество индивидуальныхобъектов одного типа (экземпляров), причем все эти объекты различны, т. е.набор атрибутов одинаков, а их значения различны./>1.2 Концепция базданных/>1.2.1 Независимость приложений от организации данныхво внешней памяти
Основойлюбой информационной системы являются хранимые в ней данные. В общем случаеданные – это информация, подготовленная для определенных целей, при этом частоподразумевается определенный формат представления.
Во всевремена люди фиксировали данные на том или ином материальном носителе (бумага,камень и т. д.) Обычно данные фиксируются совместно с их интерпретацией(семантикой), так как системыписьменности естественных языков позволяет это делать достаточно гибко.Например, запись на бумаге «Заработная плата – 1000» содержит данное– «1000» и его семантику (смысл) – «Заработная плата».
Довольночасто данные и их интерпретация бывают разделены. Они могут быть отражены вразличных частях носителя (например, таблицы, в которых смысл записывается вверхних строках, а сами данные в последующих) и более того могут находиться наразных носителях. Такое разделение существенно затрудняет работу с данными.
ПрименениеЭВМ для обработки и хранения данных привело к еще большему разделению данных иинтерпретирующей информации. Так как на ранних этапах развития вычислительнойтехники ее возможности были весьма ограничены, память использовалась только дляхранения самих данных. Описание же данных (порядок, тип данных, длина)находились в программах, которые таким образом «знали», например, чтос начиная определенного байта адресного пространства внешней памяти четыребайта содержат данное в числовом формате, связанное с заработной платой, апоследующие 30 байтов в текстовом формате – содержат фамилию сотрудника.
Такаязависимость между данными и программой, существенно ограничивает возможности иэффективность информационных систем.
В первуюочередь это проявляется, когда возникает необходимость в модификацииинформационной системы. Представьте себе ситуацию, когда к некоторому файлуобращаются несколько программ. В определенный момент времени в предметнойобласти произошли изменения, которые в свою очередь потребовали измененияструктуры записей файла, например добавление новых полей в запись файла илиизменение длины некоторых полей. В этом случае придется переделывать всепрограммы, даже если некоторым из них, для выполнения своих функций новые илиизмененные поля не требуются.
По этойпричине часто для отдельных приложений создавались свои наборы данных, несмотря на то, что характер информации хранившейся в них был частично илиполностью одинаковым. Такое многократное дублирование приводило или кнесоответствию данных состоянию предметной области или к противоречию однихданных другим.
Современныйподход требует, чтобы описание данных было независимым от программпользователей, а некоторая система управления данными, которая используя этиописания, размещает их во внешней памяти и впоследствии «знает» где икак они хранятся, обеспечивала бы автоматический интерфейс между данными иприложениями. В этом случае становится возможным, в программах задавать толькоимена необходимых для обработки данных и форматы их представления, в связи счем изменения в организации данных существенно не отражаются на прикладномпрограммном обеспечении.
Описанияданных часто хранятся вместе с самими данными и называются метаданными. В рядесовременных систем метаданные, содержащие так же информацию о пользователях,права доступа, статистику обращения к данным и другие сведения, хранятся всловаре данных.
Такойподход позволяет манипулировать данными достаточно гибко и не требуетзначительных усилий при расширении и модификации информационных систем./>/>/>/> 1.2.2 Эффективностьорганизации данных
Предположим, что мы хотим реализоватьинформационную систему, поддерживающую учет студентов университета. Системадолжна выполнять следующие действия: выдавать списки студентов по факультетам игруппам, поддерживать возможность перевода студента из одной группы в другую,приема новых студентов и исключения учащихся. Для каждого факультета должнаподдерживаться возможность получения имени декана этого факультета, а длягруппы имя куратора, общей численности факультета, и т.д.
Допустим, мы решили создавать этуинформационную систему используя некоторую файловую систему, в которойпользователи представляют файл как последовательность записей. Каждая запись –это последовательность байтов постоянного или переменного размера. Записи можночитать или записывать последовательно, позиционировать файл на запись с указаннымномером, структурировать на поля и объявлять некоторые поля ключами записи.Кроме того, имеется возможность выборки записи из файла по ее заданному ключу.Естественно, что в этом случае файловая система поддерживает в том же (илидругом, служебном) базовом файле дополнительные, невидимые пользователю,служебные структуры данных. Распространенные способы организации ключевыхфайлов основываются на технике хеширования и B-деревьев.
Для хранения данных будем использоватьодин файл СТУДЕНТЫ. Поскольку объектом предметной области в нашем случаеявляется студент, определяем, чтобы в этом файле содержалась одна запись длякаждого студента. Исходя из требований к информационной системе, обозначимнабор свойств, описывающий объект и отразим его следующими полями в файле:
ФИО_СТУДЕНТА,
АДРЕС,
ДАТА_РОЖДЕНИЯ,
НАИМНОВАНИЕ_ФАКУЛЬТЕА,
ФИО_ДЕКАНА,
НОМЕР_ГРУППЫ,
ФИО_КУРАТОРА.
Функции нашей информационной системытребуют, чтобы обеспечивалась возможность многоключевого доступа к записямэтого файла по значениям уникального ключа ФИО_СТУДЕНТА. Кроме того, должнаобеспечиваться возможность выбора всех записей с общим значениемНАИМЕНОВАНИЕ_ФАКУЛЬТЕТА и НОМЕР_ГРУППЫ т. е. доступ по неуникальному ключу.
Не трудно заметить, что такаяорганизация данных вызывает существенную избыточность хранения данных (длякаждого студента одной группы повторяется имя куратора, а для студентов одногофакультета наименование факультета и имя декана). Кроме того, если в ходеэксплуатации системы на каком-либо факультете поменяется декан, придетсявносить изменения в нескольких сотнях записей, а для того чтобы получитьчисленность факультета, каждый раз при выполнении такой функции надо будетвыбрать все записи с заданным значением наименования факультета и посчитать ихколичество.
Анализ предметной области показывает,что можно выделить еще два класса объектов ФАКУЛЬТЕТЫ и ГРУППЫ с присущимитолько им свойствами (для факультетов – деканы, а для групп – кураторы).Естественно предположить, что информация о каждом объекте должна находиться вотдельном файле. Поэтому наша систем будет состоять из трех файлов СТУДЕНТЫ,ФАКУЛЬТЕТЫ, ГРУППЫ, со следующей организацией записей:
СТУДЕНТЫ :
СТУД_ФИО_СТУДЕНТА,
СТУД_АДРЕС,
СТУД_ДАТА_РОЖДЕНИЯ,
СТУД_НОМЕ/>Р_ГРУППЫ.
ГРУППЫ :
ГРУП_НОМЕР_ГРУППЫ,
ГРУП_ФИО_КУРАТОРА,
ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕА,
ГРУП_КОЛИЧЕСТВО_СТУДЕНТОВ.
ФАКУЛЬТЕТЫ :
ФАК_ИДЕНТИФИКАТОР_ФАКУЛЬТЕА,
ФАК_НАИМНОВАНИЕ_ФАКУЛЬТЕА,
ФАК_ФИО_ДЕКАНА,
ФАК_КОЛИЧЕСТВО_СТУДЕНТОВ;
Поле СТУД_НОМЕР_ГРУППЫ добавлено в файлСТУДЕНТЫ, а ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА в файл ГРУППЫ для установки связеймежду файлами. Так например, по значению поля ГРУП_ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА вфайле ГРУППЫ можно определить к какому факультету относится та или иная группа.Иначе говоря, один файл ссылается на другой, поля же, использующееся для ссылокназываются ключами.
Такой механизм установки информационныхсвязей между файлами называется механизмом дублирования ключей. Таким образом,каждый из файлов будет содержать только не дублированную информацию,необходимости в динамических вычислениях суммарной информации не возникает.
Однако теперь система должна теперь«знать», что она работает с тремя информационно связанными файлами,должна знать структуру и смысл каждого поля (например, что ГРУП_ ДЕНТИФИКАТОР_ФАКУЛЬТЕТА и ФАК_ ИДЕНТИФИКАТОР_ФАКУЛЬТЕТА означают одно и то же), а также понимать,что в ряде случаев изменение информации в одном файле должно автоматическивызывать модификацию в других, чтобы их общее содержимое было согласованным.
Например, если на факультет принимаетсяновый студент, то необходимо добавить запись в файл СТУДЕНТ, а такжесоответствующим образом изменить поля ФАК_КОЛИЧЕСТВО_СТУДЕНТОВ иГРУП_КОЛИЧЕСТВО_СТУДЕНТОВ в файлах ФАКУЛЬТЕТЫ и ГРУППЫ. Иначе говоря данные вовсех файлах должны быть согласованными.
Понятие согласованности данных являетсяключевым понятием баз данных. Фактически, если информационная система (дажетакая простая, как в нашем примере) поддерживает согласованное хранениеинформации в нескольких файлах, можно говорить о том, что она поддерживает базуданных.
Понятно, что даже для такой простойсистемы ее реализация традиционными методами программирования, требует отразработчиков создания достаточно сложных процедур, которые связывают отдельныефайлы в единое целое.
Для поддержания согласованности данныхв нескольких файлах недостаточно библиотеки процедур, необходимо, чтобы такаясистема имела некоторые собственные данные (метаданные) и даже знания,определяющие целостность данных.
Если некоторая вспомогательная системауправления данными позволяет работать с несколькими файлами, обеспечивая ихсогласованность, можно назвать ее системой управления базами данных./>1.2.3 Интеграция данных
В информационных системах реализованныхна множестве локальных приложений, каждое из которых использует свой наборданных, имеет место избыточность (дублирование) данных. Вследствие этогосинхронное поддержание данных для всех приложений становится весьма проблематичным,что в может привести к неправильному отражению состояния предметной области ивызвать весьма неприятные последствия.
Рассмотрим следующий пример для двухприложений «Учет кадров» и «Расчет заработной платы» длякоторых необходимы следующие сведения:Учет кадров Расчет заработной платы Табельный номер Табельный номер Ф. И. О. Сотрудника Ф. И. О. Сотрудника Отдел Отдел Должность Должностной оклад Стаж работы Стаж работы Год рождения
По правилам предметной областипервоначально информация о переводе сотрудника на новую должность или в другойотдел, а так же об увольнении поступает в отдел кадров. Если же по каким-либопричинам об этом не будет своевременно известно в бухгалтерии, то в лучшемслучае фамилия этого сотрудника окажется не в той ведомости или же возникнетсовсем курьезное положение, когда уволенному сотруднику будет начисленазаработная плата.
Поэтому существует необходимость всоздании системы с единым хранилищем данных, в которой все данные накапливаютсяи хранятся централизованно, а информация внесенная одним пользователемстановится доступной для других. В памяти ЭВМ должна быть создана динамическиобновляемая модель предметной области это значит, что соответствие базы данныхтекущему состоянию предметной области обеспечивается не периодически, а врежиме реального времени. Благодаря интеграции устраняется дублирование данных,повышается уровень их достоверности, упрощаются и становятся эффективнеепроцедуры обновления данных. Интеграция данных порождает ряд проблем, которыемы рассмотрим ниже./> 1.2.4 Что такое базаданных
В общем случае понятие базы данныхможно определить как совокупность файлов или файл, состоящий из некоторогочисла записей, каждая из которых формируется из полей определенного типа,вместе с набором операций поиска, сортировки, рекомбинации и др.
Однако традиционных возможностейфайловых систем оказывается недостаточно для построения даже простыхинформационных систем. Существует несколько потребностей, которые непокрываются возможностями систем управления файлами:
поддержание логически согласованногонабора файлов;
обеспечение языка манипулированияданными;
восстановление информации после разногорода сбоев;
параллельная работа в режиме реальноговремени нескольких пользователей.
Можно считать, что еслиприкладная информационная система опирается на некоторую систему управленияданными, обладающую этими свойствами, то эта система управления даннымиявляется системой управления базами данных. Таким образом, база данных – этосовокупность взаимосвязанных данных, используемых несколькими приложениями подуправлением СУБД. Система управления базой данных – система программногообеспечения, имеющая средства обработки на языке базы данных, позволяющиеобрабатывать обращения к базе данных, которые поступают от прикладных программи (или) конечных пользователей, и поддерживать целостность базы данных/>.
/>/>/>/>2. Типы данных SQL
В SQL используютсяследующие основные типы данных, форматы которых могут несколько различаться дляразных СУБД:
INTEGER
— целое число (обычно до10 значащих цифр и знак);
SMALLINT
— «короткое целое»(обычно до 5 значащих цифр и знак);
DECIMAL(p,q)
— десятичное число,имеющее p цифр (0
FLOAT
— вещественное число с 15значащими цифрами и целочисленным порядком, определяемым типом СУБД;
CHAR(n)
— символьная строкафиксированной длины из n символов (0
VARCHAR(n)
— символьная строкапеременной длины, не превышающей n символов (n > 0 и разное в разных СУБД,но не меньше 4096);
DATE
— дата в формате,определяемом специальной командой (по умолчанию mm/dd/yy); поля даты могутсодержать только реальные даты, начинающиеся за несколько тысячелетий до н.э. иограниченные пятым-десятым тысячелетием н.э.;
TIME
— время в формате,определяемом специальной командой, (по умолчанию hh.mm.ss);
DATETIME
— комбинация даты ивремени;
MONEY
— деньги в формате,определяющем символ денежной единицы ($, руб, …) и его расположение (суффиксили префикс), точность дробной части и условие для показа денежного значения.
В некоторых СУБД ещесуществует тип данных LOGICAL, DOUBLE и ряд других. СУБД INGRES предоставляетпользователю возможность самостоятельного определения новых типов данных,например, плоскостные или пространственные координаты, единицы различныхметрик, пяти- или шестидневные недели (рабочая неделя, где сразу после пятницыили субботы следует понедельник), дроби, графика, большие целые числа (чтостало очень актуальным для российских банков) и т.п. 2.1 Таблицы SQL
До сих пор понятие«таблица», как правило, связывалось с реальной или базовой таблицей,т.е. c таблицей, для каждой строки которой в действительности имеется некоторыйдвойник, хранящийся в физической памяти машины (Приложение А). Однако SQLиспользует и создает ряд виртуальных (как будто существующих) таблиц:представлений, курсоров и неименованных рабочих таблиц, в которых формируютсярезультаты запросов на получение данных из базовых таблиц и, возможно,представлений. Это таблицы, которые не существуют в базе данных, но как бы существуютс точки зрения пользователя.
Базовые таблицы создаютсяс помощью предложения CREATE TABLE (создать таблицу). Здесь же приведем примерпредложения для создания описания таблицы Блюда:
CREATE TABLE Блюда
(БЛ SMALLINT,
Блюдо CHAR (70),
В CHAR(1),
Основа CHAR(10),
Выход FLOAT,
Труд SMALLINT);
Предложение CREAT TABLEспецифицирует имя базовой таблицы, которая должна быть создана, имена еестолбцов и типы данных для этих столбцов (а также, возможно, некоторуюдополнительную информацию, не иллюстрируемую данным примером). CREAT TABLE — выполняемое предложение. Если его ввести с терминала, система тотчас построиттаблицу Блюда, которая сначала будет пустой: она будет содержать только строкузаголовков столбцов, но не будет еще содержать никаких строк с данными. 2.2 Структура языка SQL
Нужно заметить, что внастоящее время, ни одна система не реализует стандарт SQL в полном объеме.Кроме того, во всех диалектах языка имеются возможности, не являющиесястандартными. Таким образом, можно сказать, что каждый диалект — этонадмножество некоторого подмножества стандарта SQL. Это затрудняетпереносимость приложений, разработанных для одних СУБД в другие СУБД.
Язык SQL оперирует терминами,несколько отличающимися от терминов реляционной теории, например, вместо«отношений» используются «таблицы», вместо«кортежей» — «строки», вместо «атрибутов» — «колонки» или «столбцы».
Стандарт языка SQL, хотяи основан на реляционной теории, но во многих местах отходит он нее. Например,отношение в реляционной модели данных не допускает наличия одинаковых кортежей,а таблицы в терминологии SQL могут иметь одинаковые строки. Имеются и другиеотличия.
Язык SQL являетсяреляционно-полным. Это означает, что любой оператор реляционной алгебры можетбыть выражен подходящим оператором SQL. />2.3Операторы SQL
Основу языка SQLсоставляют операторы, условно разбитые не несколько групп по выполняемымфункциям.
Можно выделить следующиегруппы операторов (перечислены не все операторы SQL): />
Операторы DDL (DataDefinition Language) — операторы определения объектов базы данных
CREATE SCHEMA — создатьсхему базы данных
DROP SHEMA — удалитьсхему базы данных
CREATE TABLE — создатьтаблицу
ALTER TABLE — изменитьтаблицу
DROP TABLE — удалитьтаблицу
CREATE DOMAIN — создатьдомен
ALTER DOMAIN — изменитьдомен
DROP DOMAIN — удалитьдомен
CREATE COLLATION — создать последовательность
DROP COLLATION — удалитьпоследовательность
CREATE VIEW — создатьпредставление
DROP VIEW — удалитьпредставление
/>ОператорыDML (Data Manipulation Language) — операторы манипулирования данными
SELECT — отобрать строкииз таблиц
INSERT — добавить строкив таблицу
UPDATE — изменить строкив таблице
DELETE — удалить строки втаблице
COMMIT — зафиксироватьвнесенные изменения
ROLLBACK — откатитьвнесенные изменения
/>Операторызащиты и управления данными
CREATE ASSERTION — создать ограничение
DROP ASSERTION — удалитьограничение
GRANT — предоставитьпривилегии пользователю или приложению на манипулирование объектами
REVOKE — отменитьпривилегии пользователя или приложения
Кроме того, есть группыоператоров установки параметров сеанса, получения информации о базе данных,операторы статического SQL, операторы динамического SQL.
Наиболее важными дляпользователя являются операторы манипулирования данными (DML). />
Примеры использованияоператоров манипулирования данными
/>INSERT — вставка строк в таблицу
Пример 1. Вставка однойстроки в таблицу:
INSERT INTO
P (PNUM,PNAME)
VALUES (4,«Иванов»);
/>ОператорSELECT является фактически самым важным для пользователя и самым сложнымоператором SQL. Он предназначен для выборки данных из таблиц, т.е. он,собственно, и реализует одно их основных назначение базы данных — предоставлятьинформацию пользователю.
Оператор SELECT всегдавыполняется над некоторыми таблицами, входящими в базу данных.
На самом деле в базахданных могут быть не только постоянно хранимые таблицы, а также временныетаблицы и так называемые представления. Представления — это просто хранящиеся вбазе данные SELECT-выражения. С точки зрения пользователей представления — этотаблица, которая не хранится постоянно в базе данных, а «возникает» вмомент обращения к ней. С точки зрения оператора SELECT и постоянно хранимыетаблицы, и временные таблицы и представления выглядят совершенно одинаково.Конечно, при реальном выполнении оператора SELECT системой учитываются различиямежду хранимыми таблицами и представлениями, но эти различия скрыты от пользователя.
Результатом выполненияоператора SELECT всегда является таблица. Таким образом, по результатамдействий оператор SELECT похож на операторы реляционной алгебры. Любой операторреляционной алгебры может быть выражен подходящим образом сформулированнымоператором SELECT. Сложность оператора SELECT определяется тем, что он содержитв себе все возможности реляционной алгебры, а также дополнительные возможности,которых в реляционной алгебре нет. />
Отбор данных из однойтаблицы
Пример. Выбрать вседанные из таблицы поставщиков (ключевые слова SELECT… FROM…):
SELECT *
FROM P;
Иногда приходитсявыполнять запросы, в которых таблица соединяется сама с собой, или одна таблицасоединяется дважды с другой таблицей. При этом используются имена корреляции(алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц.Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы.Имена корреляции должны использоваться в качестве префикса перед именем столбцаи отделяются от имени столбца точкой. Если в запросе указываются одни и те жеполя из разных экземпляров одной таблицы, они должны быть переименованы дляустранения неоднозначности в именованиях колонок результатирующей таблицы.Определение имени корреляции действует только во время выполнения запроса.
Пример. Отобрать все парыпоставщиков таким образом, чтобы первый поставщик в паре имел статус, большийстатуса второго поставщика:
SELECT
P1.PNAME ASPNAME1,
P1.PSTATUS ASPSTATUS1,
P2.PNAME AS PNAME2,
P2.PSTATUS ASPSTATUS2
FROM
P P1, P P2
WHEREP1.PSTATUS1 > P2.PSTATUS2;
/>Опишемсинтаксис оператора выборки данных (оператора SELECT) более точно. При описаниисинтаксиса операторов обычно используются условные обозначения, известные какстандартные формы Бэкуса-Наура (BNF).
В BNF обозначенияхиспользуются следующие элементы:
Символ “::=”означает равенство по определению. Слева от знака стоит определяемое понятие,справа — собственно определение понятия.
Ключевые словазаписываются прописными буквами. Они зарезервированы и составляют частьоператора.
Метки-заполнителиконкретных значений элементов и переменных записываются курсивом.
Необязательные элементыоператора заключены в квадратные скобки.
Вертикальная черта |указывает на то, что все предшествующие ей элементы списка являютсянеобязательными и могут быть заменены любым другим элементом списка после этойчерты.
Фигурные скобки {}указывают на то, что все находящееся внутри них является единым целым.
Троеточие “…”означает, что предшествующая часть оператора может быть повторена любоеколичество раз.
Многоточие, внутрикоторого находится запятая “.,..” указывает, что предшествующая частьоператора, состоящая из нескольких элементов, разделенных запятыми, может иметьпроизвольное число повторений. Запятую нельзя ставить после последнегоэлемента. Замечание: данное соглашение не входит в стандарт BNF, но позволяетболее точно описать синтаксис операторов SQL.
Круглые скобки являютсяэлементом оператора.
/>Синтаксисоператора выборки
В довольно сильноупрощенном виде оператор выборки данных имеет следующий синтаксис (длянекоторых элементов мы дадим не BNF-определения, а словесное описание):
Оператор выборки ::=
Табличное выражение
[ORDER BY
{{Имя столбца-результата[ASC | DESC]} | {Положительное целое [ASC | DESC]}}.,..];
Табличное выражение ::=
Select-выражение
[
{UNION | INTERSECT |EXCEPT} [ALL]
{Select-выражение | TABLEИмя таблицы | Конструктор значений таблицы}
]
Select-выражение ::=
SELECT [ALL |DISTINCT]
{{{Скалярное выражение |Функция агрегирования | Select-выражение} [AS Имя столбца]}.,..}
| {{Имя таблицы|Имякорреляции}.*}
| *
FROM {
{Имя таблицы [AS] [Имякорреляции] [(Имя столбца.,..)]}
| {Select-выражение [AS]Имя корреляции [(Имя столбца.,..)]}
| Соединенная таблица }.,..
[WHERE Условноевыражение]
[GROUP BY {[{Имятаблицы|Имя корреляции}.]Имя столбца}.,..]
[HAVING Условноевыражение]
Select-выражение вразделе SELECT, используемое в качестве значения для отбираемого столбца,должно возвращать таблицу, состоящую из одной строки и одного столбца, т.е.скалярное выражение. Условное выражение в разделе WHERE должно вычисляться длякаждой строки, являющейся кандидатом в результатирующее множество строк. В этомусловном выражении можно использовать подзапросы. Синтаксис условных выражений,допустимых в разделе WHERE рассматривается ниже.
Раздел HAVING содержитусловное выражение, вычисляемое для каждой группы, определяемой спискомгруппировки в разделе GROUP BY. Это условное выражение может содержать функцииагрегирования, вычисляемые для каждой группы. Условное выражение,сформулированное в разделе WHERE, может быть перенесено в раздел HAVING.Перенос условий из раздела HAVING в раздел WHERE невозможен, если условноевыражение содержит агрегатные функции. Перенос условий из раздела WHERE враздел HAVING является плохим стилем программирования — эти разделыпредназначены для различных по смыслу условий (условия для строк и условия длягрупп строк). Если в разделе SELECT присутствуют агрегатные функции, то онивычисляются по-разному в зависимости от наличия раздела GROUP BY. Если разделGROUP BY отсутствует, то результат запроса возвращает не более одной строки.Агрегатные функции вычисляются по всем строкам, удовлетворяющим условномувыражению в разделе WHERE. Если раздел GROUP BY присутствует, то агрегатныефункции вычисляются по отдельности для каждой группы, определенной в разделеGROUP BY.
Скалярное выражение — вкачестве скалярных выражений в разделе SELECT могут выступать либо именастолбцов таблиц, входящих в раздел FROM, либо простые функции, возвращающиескалярные значения.
Функция агрегирования ::=
COUNT (*) |
{
{COUNT | MAX | MIN | SUM| AVG} ([ALL | DISTINCT] Скалярное выражение)
}
Конструктор значенийтаблицы ::=
VALUES Конструкторзначений строки.,…
Конструктор значенийстроки ::=
Элемент конструктора |(Элемент конструктора.,..) | Select-выражение
Замечание.Select-выражение, используемое в конструкторе значений строки, обязановозвращать ровно одну строку.
Элемент конструктора ::=
Выражение для вычислениязначения | NULL | DEFAULT />
Синтаксис соединенныхтаблиц
В разделе FROM оператораSELECT можно использовать соединенные таблицы. Пусть в результате некоторыхопераций мы получаем таблицы A и B. Такими операциями могут быть, например,оператор SELECT или другая соединенная таблица. Тогда синтаксис соединеннойтаблицы имеет следующий вид:
Соединенная таблица ::=
Перекрестное соединение
| Естественное соединение
| Соединение посредствомпредиката
| Соединение посредствомимен столбцов
| Соединение объединения
Тип соединения ::=
INNER
| LEFT [OUTER]
| RIGTH [OUTER]
| FULL [OUTER]
Перекрестное соединение::=
Таблица А CROSS JOINТаблица В
Естественное соединение::=
Таблица А [NATURAL] [Типсоединения] JOIN Таблица В
Соединение посредствомпредиката ::=
Таблица А [Типсоединения] JOIN Таблица В ON Предикат
Соединение посредствомимен столбцов ::=
Таблица А [Типсоединения] JOIN Таблица В USING (Имя столбца.,..)
Соединение объединения::=
Таблица А UNION JOINТаблица В
Опишем используемыетермины.
CROSS JOIN — Перекрестноесоединение возвращает просто декартово произведение таблиц. Такое соединение вразделе FROM может быть заменено списком таблиц через запятую.
NATURAL JOIN — Естественное соединение производится по всем столбцам таблиц А и В, имеющимодинаковые имена. В результатирующую таблицу одинаковые столбцы вставляютсятолько один раз.
JOIN … ON — Соединениепосредством предиката соединяет строки таблиц А и В посредством указанногопредиката.
JOIN … USING — Соединениепосредством имен столбцов соединяет отношения подобно естественному соединениюпо тем общим столбцам таблиц А и Б, которые указаны в списке USING.
OUTER — Ключевое словоOUTER (внешний) не является обязательными, оно не используется ни в какихоперациях с данными.
INNER — Тип соединения«внутреннее». Внутренний тип соединения используется по умолчанию,когда тип явно не задан. В таблицах А и В соединяются только те строки, длякоторых найдено совпадение.
LEFT (OUTER) — Типсоединения «левое (внешнее)». Левое соединение таблиц А и В включаетв себя все строки из левой таблицы А и те строки из правой таблицы В, длякоторых обнаружено совпадение. Для строк из таблицы А, для которых не найденосоответствия в таблице В, в столбцы, извлекаемые из таблицы В, заносятсязначения NULL.
RIGHT (OUTER) — Типсоединения «правое (внешнее)». Правое соединение таблиц А и Ввключает в себя все строки из правой таблицы В и те строки из левой таблицы А,для которых обнаружено совпадение. Для строк из таблицы В, для которых ненайдено соответствия в таблице А, в столбцы, извлекаемые из таблицы А заносятсязначения NULL.
FULL (OUTER) — Типсоединения «полное (внешнее)». Это комбинация левого и правогосоединений. В полное соединение включаются все строки из обеих таблиц. Длясовпадающих строк поля заполняются реальными значениями, для несовпадающихстрок поля заполняются в соответствии с правилами левого и правого соединений.
UNION JOIN — Соединениеобъединения является обратным по отношению к внутреннему соединению. Оновключает только те строки из таблиц А и В, для которых не найдено совпадений. Вних используются значения NULL для столбцов, полученных из другой таблицы. Есливзять полное внешнее соединение и удалить из него строки, полученные врезультате внутреннего соединения, то получится соединение объединения.
Использование соединенныхтаблиц часто облегчает восприятие оператора SELECT, особенно, когдаиспользуется естественное соединение. Если не использовать соединенные таблицы,то при выборе данных из нескольких таблиц необходимо явно указывать условиясоединения в разделе WHERE. Если при этом пользователь указывает сложныекритерии отбора строк, то в разделе WHERE смешиваются семантически различныепонятия — как условия связи таблиц, так и условия отбора строк (см. примеры 13,14, 15 данной главы). />
Синтаксис условныхвыражений раздела WHERE
Условное выражение,используемое в разделе WHERE оператора SELECT должно вычисляться для каждойстроки-кандидата, отбираемой оператором SELECT. Условное выражение можетвозвращать одно из трех значений истинности: TRUE, FALSE или UNKNOUN.Строка-кандидат отбирается в результатирующее множество строк только в томслучае, если для нее условное выражение вернуло значение TRUE.
Условные выражения имеютследующий синтаксис (в целях упрощения изложения приведены не все возможныепредикаты):
Условное выражение ::=
[ ( ] [NOT]
{Предикат сравнения
| Предикат between
| Предикат in
| Предикат like
| Предикат null
| Предикатколичественного сравнения
| Предикат exist
| Предикат unique
| Предикат match
| Предикат overlaps}
[{AND | OR} Условноевыражение] [ ) ]
[IS [NOT]{TRUE | FALSE | UNKNOWN}]
Предикат сравнения ::=
Конструктор значенийстроки {= | | = | } Конструктор значений строки
Предикат LIKE производитпоиск строки-поиска в строке-шаблоне. В строке-шаблоне разрешается использоватьдва трафаретных символа:
Символ подчеркивания”_” может использоваться вместо любого единичного символа встроке-поиска,
Символ процента”%” может заменять набор любых символов в строке поиска (числосимволов в наборе может быть от 0 и более).
Предикат null ::=
Конструктор значенийстроки IS [NOT] NULL Предикат NULL применяется специально для проверки, неравно ли проверяемое выражение null-значению.
Предикат количественногосравнения ::=
Конструктор значений строки{= | | = | }
{ANY | SOME | ALL}(Select-выражение)
Кванторы ANY и SOMEявляются синонимами и полностью взаимозаменяемы.
Замечание. Если указанодин из кванторов ANY и SOME, то предикат количественного сравнения возвращаетTRUE, если сравниваемое значение совпадает хотя бы с одним значением,возвращаемом в подзапросе (select-выражении). Если указан квантор ALL, топредикат количественного сравнения возвращает TRUE, если сравниваемое значениесовпадает с каждым значением, возвращаемом в подзапросе (select-выражении).
Предикат EXIST возвращаетзначение TRUE, если результат подзапроса (select-выражения) не пуст.
Предикат unique ::=
UNIQUE(Select-выражение)
Предикат UNIQUEвозвращает TRUE, если в результате подзапроса (select-выражения) нетсовпадающих строк.
Предикат match ::=
Конструктор значенийстроки MATCH [UNIQUE]
[PARTIAL | FULL](Select-выражение)
Предикат MATCH проверяет,будет ли значение, определенное в конструкторе строки совпадать со значениемлюбой строки, полученной в результате подзапроса.
Предикат overlaps ::=
Конструктор значенийстроки OVERLAPS Конструктор значений строки
Предикат OVERLAPS,является специализированным предикатом, позволяющем определить, будет лиуказанный период времени перекрывать другой период времени. />
Порядок выполненияоператора SELECT
Для того чтобы понять,как получается результат выполнения оператора SELECT, рассмотрим концептуальнуюсхему его выполнения. Эта схема является именно концептуальной, т.к.гарантируется, что результат будет таким, как если бы он выполнялся шаг зашагом в соответствии с этой схемой. На самом деле, реально результат получаетсяболее изощренными алгоритмами, которыми «владеет» конкретная СУБД. />
Стадия 1. Выполнениеодиночного оператора SELECT
Если в операторе присутствуютключевые слова UNION, EXCEPT и INTERSECT, то запрос разбивается на нескольконезависимых запросов, каждый из которых выполняется отдельно:
Шаг 1 (FROM). Вычисляетсяпрямое декартовое произведение всех таблиц, указанных в обязательном разделе FROM.В результате шага 1 получаем таблицу A.
Шаг 2 (WHERE). Если воператоре SELECT присутствует раздел WHERE, то сканируется таблица A,полученная при выполнении шага 1. При этом для каждой строки из таблицы Aвычисляется условное выражение, приведенное в разделе WHERE. Только те строки,для которых условное выражение возвращает значение TRUE, включаются врезультат. Если раздел WHERE опущен, то сразу переходим к шагу 3. Если вусловном выражении участвуют вложенные подзапросы, то они вычисляются в соответствиис данной концептуальной схемой. В результате шага 2 получаем таблицу B.
Шаг 3 (GROUP BY). Если воператоре SELECT присутствует раздел GROUP BY, то строки таблицы B, полученнойна втором шаге, группируются в соответствии со списком группировки, приведеннымв разделе GROUP BY. Если раздел GROUP BY опущен, то сразу переходим к шагу 4. Врезультате шага 3 получаем таблицу С.
Шаг 4 (HAVING). Если воператоре SELECT присутствует раздел HAVING, то группы, не удовлетворяющиеусловному выражению, приведенному в разделе HAVING, исключаются. Если разделHAVING опущен, то сразу переходим к шагу 5. В результате шага 4 получаемтаблицу D.
Шаг 5 (SELECT). Каждаягруппа, полученная на шаге 4, генерирует одну строку результата следующимобразом. Вычисляются все скалярные выражения, указанные в разделе SELECT. Поправилам использования раздела GROUP BY, такие скалярные выражения должны бытьодинаковыми для всех строк внутри каждой группы. Для каждой группы вычисляютсязначения агрегатных функций, приведенных в разделе SELECT. Если раздел GROUP BYотсутствовал, но в разделе SELECT есть агрегатные функции, то считается, чтоимеется всего одна группа. Если нет ни раздела GROUP BY, ни агрегатных функций,то считается, что имеется столько групп, сколько строк отобрано к данномумоменту. В результате шага 5 получаем таблицу E, содержащую столько колонок,сколько элементов приведено в разделе SELECT и столько строк, сколько отобраногрупп. />
Стадия 2. Выполнениеопераций UNION, EXCEPT, INTERSECT
Если в операторе SELECTприсутствовали ключевые слова UNION, EXCEPT и INTERSECT, то таблицы, полученныев результате выполнения 1-й стадии, объединяются, вычитаются или пересекаются. />
Стадия 3. Упорядочениерезультата
Если в операторе SELECTприсутствует раздел ORDER BY, то строки полученной на предыдущих шагах таблицыупорядочиваются в соответствии со списком упорядочения, приведенном в разделеORDER BY. />
Как на самом делевыполняется оператор SELECT
Если внимательнорассмотреть приведенный выше концептуальный алгоритм вычисления результатаоператора SELECT, то сразу понятно, что выполнять его непосредственно в такомвиде чрезвычайно накладно. Даже на самом первом шаге, когда вычисляетсядекартово произведение таблиц, приведенных в разделе FROM, может получитьсятаблица огромных размеров, причем практически большинство строк и колонок изнее будет отброшено на следующих шагах.
На самом деле в РСУБДимеется оптимизатор, функцией которого является нахождение такого оптимальногоалгоритма выполнения запроса, который гарантирует получение правильногорезультата.
Схематично работуоптимизатора можно представить в виде последовательности нескольких шагов:
Шаг 1 (Синтаксическийанализ). Поступивший запрос подвергается синтаксическому анализу. На этом шагеопределяется, правильно ли вообще (с точки зрения синтаксиса SQL) сформулированзапрос. В ходе синтаксического анализа вырабатывается некоторое внутреннепредставление запроса, используемое на последующих шагах.
Шаг 2 (Преобразование вканоническую форму). Запрос во внутреннем представлении подвергаетсяпреобразованию в некоторую каноническую форму. При преобразовании кканонической форме используются как синтаксические, так и семантическиепреобразования. Синтаксические преобразования (например, приведения логическихвыражений к конъюнктивной или дизъюнктивной нормальной форме, замена выражений«x AND NOT x» на «FALSE», и т.п.) позволяют получить новоевнутренне представление запроса, синтаксически эквивалентное исходному, ностандартное в некотором смысле. Семантические преобразования используютдополнительные знания, которыми владеет система, например, ограниченияцелостности. В результате семантических преобразований получается запрос,синтаксически не эквивалентный исходному, но дающий тот же самый результат.
Шаг 3 (Генерация плановвыполнения запроса и выбор оптимального плана). На этом шаге оптимизаторгенерирует множество возможных планов выполнения запроса. Каждый план строитсякак комбинация низкоуровневых процедур доступа к данным из таблиц, методамсоединения таблиц. Из всех сгенерированных планов выбирается план, обладающийминимальной стоимостью. При этом анализируются данные о наличии индексов утаблиц, статистических данных о распределении значений в таблицах, и т.п. Стоимостьплана это, как правило, сумма стоимостей выполнения отдельных низкоуровневыхпроцедур, которые используются для его выполнения. В стоимость выполненияотдельной процедуры могут входить оценки количества обращений к дискам, степеньзагруженности процессора и другие параметры.
Шаг 4. (Выполнение планазапроса). На этом шаге план, выбранный на предыдущем шаге, передается нареальное выполнение.
Во многом качествоконкретной СУБД определяется качеством ее оптимизатора. Хороший оптимизаторможет повысить скорость выполнения запроса на несколько порядков. Качествооптимизатора определяется тем, какие методы преобразований он можетиспользовать, какой статистической и иной информацией о таблицах онрасполагает, какие методы для оценки стоимости выполнения плана он знает. />
Реализация реляционнойалгебры средствами оператора SELECT (Реляционная полнота SQL)
Для того, чтобы показать,что язык SQL является реляционно полным, нужно показать, что любой реляционныйоператор может быть выражен средствами SQL. На самом деле достаточно показать,что средствами SQL можно выразить любой из примитивных реляционных операторов. />
Оператор декартовогопроизведения
Реляционная алгебра: />
Оператор SQL:
SELECT A.Поле1, A.Поле2,…, B.Поле1, B.Поле2, …
FROM A, B;
или
SELECT A.Поле1, A.Поле2,…, B.Поле1, B.Поле2, …
FROM A CROSSJOIN B;
/>Операторпроекции
Реляционная алгебра: />
Оператор SQL:
SELECTDISTINCT X, Y, …, Z
FROM A;
/>Операторвыборки
Реляционная алгебра: />,
Оператор SQL:
SELECT *
FROM A
WHERE c;
/>Операторобъединения
Реляционная алгебра: />
Оператор SQL:
SELECT *
FROM A
UNION
SELECT *
FROM B;
/>Операторвычитания
Реляционная алгебра: />
Оператор SQL:
SELECT *
FROM A
EXCEPT
SELECT *
FROM B
Реляционный операторпереименования RENAME выражается при помощи ключевого слова AS в спискеотбираемых полей оператора SELECT. Таким образом, язык SQL являетсяреляционно-полным.
Остальные операторыреляционной алгебры (соединение, пересечение, деление) выражаются черезпримитивные, следовательно, могут быть выражены операторами SQL. Тем не менее,для практических целей приведем их. />
Оператор соединения
Реляционная алгебра: />
Оператор SQL:
SELECT A.Поле1, A.Поле2,…, B.Поле1, B.Поле2, …
FROM A, B
WHERE c;
или
SELECT A.Поле1, A.Поле2, …, B.Поле1,B.Поле2, …
FROM A CROSSJOIN B
WHERE c;
/>Операторпересечения
Реляционная алгебра: />
Оператор SQL:
SELECT *
FROM A
INTERSECT
SELECT *
FROM B;
/>Операторделения
Реляционная алгебра: />
Оператор SQL:
SELECTDISTINCT A.X
FROM A
WHERE NOTEXIST
(SELECT *
FROM B
WHERE NOTEXIST
(SELECT *
FROM A A1
WHERE
A1.X = A.XAND
A1.Y = B.Y));
Пусть отношение Aсодержит данные о поставках деталей, отношение B содержит список всех деталей,которые могут поставляться. Атрибут X является номером поставщика, атрибут Yявляется номером детали.
Разделить отношение A наотношение B означает в данном примере «отобрать номера поставщиков,которые поставляют все детали».
Преобразуем текствыражения:
«Отобрать номерапоставщиков, которые поставляют все детали» эквивалентно
«Отобрать те номерапоставщиков из таблицы A, для которых не существует непоставляемых деталей втаблице B» эквивалентно
«Отобрать те номерапоставщиков из таблицы A, для которых не существует тех номеров деталей изтаблицы B, которые не поставляются этим поставщиком» эквивалентно
«Отобрать те номерапоставщиков из таблицы A, для которых не существует тех номеров деталей изтаблицы B, для которых не существует записей о поставках в таблице A для этогопоставщика и этой детали».
Последнее выражениедословно переводится на язык SQL. При переводе выражения на язык SQL нужноучесть, что во внутреннем подзапросе таблица A должна быть переименована, длятого чтобы отличать ее от экземпляра этой же таблицы, используемой во внешнемзапросе. />
/>/>/>/>/>Заключение
Фактически стандартнымязыком доступа к базам данных в настоящее время стал язык SQL (Structured QueryLanguage).
Язык SQL оперируеттерминами, несколько отличающимися от терминов реляционной теории, например,вместо «отношений» используются «таблицы», вместо«кортежей» — «строки», вместо «атрибутов» — «колонки» или «столбцы».
Стандарт языка SQL, хотяи основан на реляционной теории, но во многих местах отходит он нее.
Основу языка SQLсоставляют операторы, условно разбитые не несколько групп по выполняемымфункциям:
Операторы DDL (DataDefinition Language) — операторы определения объектов базы данных.
Операторы DML (DataManipulation Language) — операторы манипулирования данными.
Операторы защиты иуправления данными, и др.
Одним из основныхоператоров DML является оператор SELECT, позволяющий извлекать данные из таблици получать ответы на различные запросы. Оператор SELECT содержит в себе всевозможности реляционной алгебры. Это означает, что любой оператор реляционнойалгебры может быть выражен при помощи подходящего оператора SELECT. Этимдоказывается реляционная полнота языка SQL.
Различают концептуальную схемувыполнения оператора SELECT и фактическую схему его выполнения. Концептуальнаясхема описывает, в какой логической последовательности должны выполнятьсяоперации, чтобы получить результат. При реальном выполнении оператора SELECT напервый план выступает достижение максимальной скорости выполнения запроса. Дляэтого используется оптимизатор, который, анализируя различные планы выполнениязапроса, выбирает наилучший из них.
/>/>/>/>/>Глоссарий
№
п/п Понятие Определение 1 Информационная система система, реализующая автоматизированный сбор, обработку и манипулирование данными и включающая технические средства обработки данных, программное обеспечение и соответствующий персонал 2 База данных (БД) поименованная совокупность данных, отражающая состояние объектов и их отношений в рассматриваемой предметной области 3 Объект элемент предметной области, информацию о котором мы сохраняем 4 Поле элементарная единица логической организации данных, которая соответствует неделимой единице информации — реквизиту 5 Запись совокупность логически связанных полей 6 Файл (таблица) совокупность экземпляров записей одной структуры 7 Модель данных совокупность структур данных и операций их обработки 8 Реляционная модель данных совокупность взаимосвязанных двумерных таблиц — объектов модели 9 Атрибут поименованная характеристика объекта. Атрибут показывает, какая информация должна быть собрана об объекте 10 Связи соответствия, отношения, возникающие между объектами предметной области 11 Сущность основное содержание объекта предметной области, о котором собирают информацию. В качестве сущности могут выступать место, вещь, личность, явление 12 Конструктор (Builder) инструмент Access, который облегчает выполнение конкретного задания
/>/>/>/>/>Список использованныхисточников
1. Дейт К.Дж. Введение в системы базданных. 6-е изд. — М.: Вильямс. 2000. – 317 с.
2. Конноли Т., Бегг Л., Страчан А. Базыданных. Проектирование, реализация и сопровождение. Теория и практика. 3-еиздание. Вильямс 2003. – Таблицы, картинки. Леонтьев В.П. ПК: универсальный справочник пользователя — М.: 2003. – 251 с.
3. Дейт К. Введение в системы баз данных.6-е изд. – М.: Вильямс, 2000. – 657с
4. В.В. Фаронов Основы программирования вSQL. — М.: Издатель Молгачева С.В., 2002. – 329 с.
5. Самоучитель по языку SQL (SQL DML)[Электронный ресурс] – Режим доступа www.sql-ex.ru/help
6. Коннолли Т., Бегг К., Страчан А. Базыданных. Проектирование, реализация и сопровождение. Теория и практика. 2-е изд.– С-Пб.: Вильямс, 2000. – 1120 с.
7. Корнеев В.В., Гареев А.Ф., ВасютинС.В., Райх В.В. Базы данных. Интеллектуальная обработка информации. 2-е изд. –М.: Изд. Молгачева С.В., 2001. – 494 с.
8. Мамаев Е. Microsoft SQL Server 2000 –СПБ.: БХВ-Петербург, 2002.9. Когаловский М.Р. Энциклопедия технологий баз данных. – М.:Финансы и статистика, 2002.
Приложение А
База данных ввосприятии пользователя
/>