Автор работы: Пользователь скрыл имя, 22 Января 2013 в 08:37, курсовая работа
Стандарт ISO языка SQL предусматривает использование в операторах CREATE TABLE и ALTER TABLE специальных конструкций, предназначенных для определения требований поддержки целостности данных, к которым относятся условие обязательности наличия данных; ограничения для доменов атрибутов; требования поддержки целостности сущностей; требования поддержки ссылочной целостности данных и требования (бизнес-правила) данного предприятия. Обязательность наличия данных указывается с помощью ключевого слова NOT NULL. Ограничения для доменов атрибутов задаются либо с помощью конструкций CHECK, либо посредством создания соответствующих доменов с помощью операторов CREATE DOMAIN. Первичные ключи определяются с помощью конструкции PRIMARY KEY, а альтернативные ключи описываются с помощью комбинации ключевых слов NOT NULL и описателей UNIQUE. Внешние ключи описываются с помощью конструкции FOREIGN KEY, а также задания правил удаления и обновления с использованием конструкций ON UPDATE и ON DELETE. Бизнес-правила предприятия могут быть заданы с помощью конструкций CHECK и UNIQUE.
Введение…………………………………………………………………………….3
1 Уровни языка SQL и операторы манипулирования данными….……………..4
1.1 Стандартизация SQL…………………………………………………………...7
1.2 Типы данных языка SQL………………………………………………………9
1.3 Операторы манипулирования данными…………………………………….14
2 Построение сложных запросов………………………………………………...18
2.1 Понятие запроса в SQL……………………………………………………….18
2.2 Структура запросов с использованием нескольких таблиц………………..21
2.3 Объединение (UNION)………………………………………………………..22
2.4 Применение агрегатных функций и вложенных запросов в операторе выбора…………………………………………………………………………………….24
2.5 Внешние объединения………………………………………………………..25
Заключение………………………………………………………………………..28
Глоссарий………………………………………………………………………….30
Список использованных источников……………………………………………31
Приложения……………………………………………………………………….32
Версия шаблона |
2.1 |
Филиал |
Тольяттинский |
Вид работы |
Курсовая работа |
Название дисциплины |
|
Тема |
Структура языка SQL |
Фамилия студента |
Пыжов |
Имя студента |
Сергей |
Отчество студента |
|
№ контракта |
Введение…………………………………………………………
1 Уровни языка SQL и операторы манипулирования данными….……………..4
1.1 Стандартизация SQL………………………………
1.2 Типы данных языка SQL………………………
1.3 Операторы манипулирования данными…………………………………….14
2 Построение сложных запросов………………………………………………...
2.1 Понятие запроса в SQL……………………………………………………….18
2.2 Структура запросов с использованием нескольких таблиц………………..21
2.3 Объединение (UNION)………………………………………………………..
2.4 Применение агрегатных функций
и вложенных запросов в операторе выбора………………………………………………………………
2.5 Внешние объединения…………………………………………………
Заключение……………………………………………………
Глоссарий………………………………………………………
Список использованных источников……………………………………………31
Приложения……………………………………………………
Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL , но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он стал частью архитектуры приложений (например, такой как System Application Architecture (SAA) корпорации IBM), а также является стратегическим выбором многих крупных и влиятельных организаций (например, консорциума Х/Open, занятого разработкой стандартов для среды UNIX), Язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard — FIPS), который должен соблюдаться в СУБД для получения разрешения продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширений языка SQL, которые позволят обеспечить взаимодействие разнородных систем. [6, С.236]
Язык SQL используется в других стандартах и даже оказывает влияние на разработку многих стандартов как инструмент их определения. В качестве примера можно привести стандарты ISO "Information Resource Dictionary System" (IRDS) и "Remote Data Access" (RDA). Разработка языка вызвала определенную заинтересованность научных кругов, выразившуюся как в выработке необходимых теоретических основ, так и в подготовке успешно реализованных технических решений. Это особенно справедливо в отношении оптимизации запросов, методов распределения данных и реализации средств защиты. Начали появляться специализированные реализации языка SQL, предназначенные для новых рынков, такие как OnLine Analytical Processing (OLAP).
В официальном стандарте SQL определяются три уровня языка: полный SQL, промежуточный SQL и базовый SQL. Основная идея состоит в том, что полный SQL является полным стандартом, промежуточный SQL - строгое подмножество полного SQL, а базовый SQL - строгое подмножество промежуточного SQL. Разработчики стандарта стремились позволить поэтапную реализацию с продвижением от поддержки вводного SQL через поддержку промежуточного SQL к поддержке полного SQL.
Рассмотрим некоторые основные различия между полным SQL и промежуточным SQL. Сначала приведем список конструкций полного SQL, которые целиком отсутствуют в промежуточном SQL: идентификаторы, в которых последний символ есть подчеркивание; явные имена каталогов; операторы SETCATALOG, SETSCHEMA, SETNAMES; операторы CONNECT, SETCONNECTION, DISCONNECT; все конструкции, связанные с битовыми строками; все, что служит для трансляции, преобразования и (явного) сравнения; явная спецификация точности для данных типа TIME и TIMESTAMP; значения SECOND для данных типа DATETIME или INTERVAL с более чем микросекундной точностью; функции POSITION, UPPER, LOWER; UNIONJOIN; возможность указания CORRESPONDING для операторов UNION, EXCEPT и INTERSECT; предикаты IS[NOT]TRUE, IS[NOT]FALSE, IS[NOT]UNKNOWN; условия MATCH в определениях внешнего ключа; утверждения целостности общего вида (операторы CREATE и DROPASSERTION); проверочные ограничения базовой таблицы, которые ссылаются на другие таблицы; определения действий ONUPDATE в определениях внешнего ключа; откладываемые ограничения и оператор SETCONSTRAINTS; "глобальные" и "объявляемые локальные" временные таблицы; привилегии INSERT уровня столбцов; LOCAL или CASCADED в опциях проверки (хотя CASCADED должно поддерживаться неявно); оператор ALTERDOMAIN; INSENSITIVE курсоры; спецификация "TABLE таблица" внутри табличного выражения; параметры или переменные основной программы как имена области дескрипторов SQL; все, что служит для работы с генерируемыми пользователями именами операторов; все, что служит для работы с генерируемыми пользователями именами курсоров; операторы DEALLOCATEPREPARE, DESCRIBEINPUT и возможность наличия раздела INTO в операторе EXECUTE.
Список дополнительных ограничений:
- ссылка на таблицу не может быть табличным выражением в круглых скобках;
- оператор DISTINCT допускается внутри табличного выражения не более одного раза на каждом уровне вложенности;
- список сравниваемых значений в правой части условия IN не должен включать более сложные элементы, чем литерал, ссылка на столбец или встроенная функция без параметров;
- если при ссылке на агрегатную функцию указывается DISTINCT, аргумент должен представлять простую ссылку на столбец;
- привилегия REFERENCES не требуется для столбцов, используемых в проверочном ограничении (это на самом деле противоположность ограничению; из этого следует, что промежуточный SQL не является вполне строгим подмножеством полного SQL);
- наличие в определении курсора ORDERBY влечет неявно свойство FORREADONLY;
- операторы INSERT, UPDATE и DELETE не могут включать раздел WHERE (ни прямо в случае поисковой операции, ни через определение курсора в случае позиционной операции), ссылающийся на таблицу, которая является целью этого оператора;
- на некоторые таблицы информационной схемы (например, TRANSLATIONS) нельзя ссылаться.
Рассмотрим некоторые дополнительные свойства полного SQL, которые отсутствуют в базовом SQL в дополнение к тем, которых нет в промежуточном SQL:
- идентификаторы длиннее, чем из 18 символов;
- малые буквы в идентификаторах;
- оператор SETSESSIONAUTHORIZATION;
- символьные строки переменного размера;
- определяемые в реализации наборы символов, включая строки национальных символов;
- все конструкции, связанные с datetime и interval;
- все, что связано с доменами;
- явные именованные ограничения;
- константы CURRENT_USER, SESSION_USER, SYSTEM_USER (однако USER поддерживается);
- CHARACTER_LENGHT, OCTET_LENGHT;
- функции SUBSTRING, TRIM, EXTRACT;
- операция конкатенации символьных строк;
- выражения с переключателем;
- оператор явного преобразования типов (CAST);
- раздел DEFAULT в операторах INSERT и UPDATE;
- явный оператор JOIN;
- операции EXCEPT и INTERSECT;
- элементы выборки в форме "R.*";
- условие UNIQUE;
- оператор DROPSCHEMA;
- оператор DROPTABLE;
- задание действия ONDELETE в определениях внешнего ключа;
- оператор ALTERTABLE;
- оператор DROPVIEW;
- оператор REVOKE;
- оператор SETTRANSACTION;
- динамический SQL;
- прокручиваемые курсоры;
- раздел FORUPDATE в определении курсора;
- преобразования между точными и приблизительными численными значениями при присваивании;
- информационная схема;
- оператор GETDIAGNOSTICS.
1.1 Стандартизация SQL
К началу 80-х годов
в связи с широким
При разработке стандарта
SQL-89 члены комитета ХЗН2 столкнулись
с многообразием диалектов
Последующая деятельность этого комитета, который со временем получил название ANSI ТС NCITS H2, была направлена на устранение недостатков стандарта. В 1992 году ANSI принял новый стандарт, который был назван SQL-92 (или SQL2). В этом стандарте комитет не пошел на поводу производителей СУБД и предусмотрел возможности, которые выходили за рамки имеющихся в промышленных СУБД, - были расширены способы ограничения целостности, введена поддержка различных языков программирования, предусмотрена обработка транзакций и многое другое. В связи с существенным расширением языка было введено три уровня совместимости стандартов. Нижний уровень (Entry Level) предполагает минимальные дополнения к стандарту SQL-89. Промежуточный уровень (Intermediate Level) существенно расширяет SQL-89, но не затрагивает сложных элементов языка. Третий уровень (Full Level) представляет полную спецификацию нового стандарта. [1, С.125]
В 1992 году комитет приступил к решительным изменениям в SQL, которые отразились в стандарте SQL-99 (или SQL3). Первое принципиальное изменение заключается в том, что SQL стал поддерживать модель данных, выходящую за рамки реляционной. В соответствии с SQL3, ячейки таблиц могут быть многозначными, что позволяет представлять иерархическую и сетевую модели. Кроме того, язык расширен до возможности представления объектной модели данных и манипулирования ею. Во-вторых, он был структурирован - стал состоять из отдельных частей (parts), составляющих его основу (foundation), которая дополняется независимо определенными модулями (packages).
1.2 Типы данных языка SQL
В настоящем разделе будут описаны типы данных, определенные стандартом ISO SQL.
Идентификаторы языка SQL предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений и столбцов. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов. Стандарт ISO задает набор символов, который должен использоваться по умолчанию; он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). Допускается использование и альтернативного набора символов.
На формат идентификаторов накладываются следующие ограничения:
- может иметь длину до 128 символов (большинство диалектов предусматривает более жесткие ограничения);
- должен начинаться с буквы;
- не может содержать пробелов. [8, С.35]
В Приложении А перечислены скалярные типы данных языка SQL, которые определены стандартом ISO. В некоторых случаях в целях упрощения манипулирования и преобразования, а также из-за сходства основных свойств данные типов character и bit объединяются под названием "строковые типы данных", а данные типов exact numeric и approximate numeric — под названием "числовые типы данных". В стандарте SQL3 определены также большие символьные и двоичные объекты.
Логические данные (тип boolean) состоят из различимых истинностных значений TRUE (истинный) и FALSE (ложный). Логические данные поддерживают также истинностное значение UNKNOWN (неопределенный), заданное как значение NULL, если применение неопределенных значений не запрещено ограничением NOT NULL. Все значения данных логического типа и истинностные значения SQL могут совместно применяться в операторах сравнения и присваивания. Значение TRUE в арифметических операторах сравнения больше значения FALSE, а любое сравнение, в котором участвует значение NULL или истинностное значение UNKNOWN, возвращает результат UNKNOWN.
При определении столбца с символьным типом данных параметр length используется для указания максимального количества символов, которые могут быть помещены в данный столбец (по умолчанию принимается значение 1). [9, С.49]