Структура языка SQL

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

ПЫЖОВ.doc

— 207.00 Кб (Скачать файл)

Основные данные о работе

Версия шаблона

2.1

Филиал

Тольяттинский

Вид работы

Курсовая работа

Название дисциплины

 

Тема

Структура языка SQL

Фамилия студента

Пыжов

Имя студента

Сергей

Отчество студента

 

№ контракта

 

 

Содержание

Введение…………………………………………………………………………….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

 

Введение

Язык 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).

Основная часть

1 Уровни языка SQL и операторы манипулирования данными

 

В официальном стандарте 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-х годов  в связи с широким распространением реляционных СУБД появилась необходимость анализа возможной стандартизации языка для управления реляционными базами данных и разработки такого стандарта, если это будет признано целесообразным. В связи с этим в 1982 году Американский национальный институт стандартов (American National Standards Institute - ANSI) создал комитет ХЗН2, перед которым была поставлена эта задача. Комитет принял к рассмотрению различные реляционные языки, которые были описаны и реализованы к тому времени. Однако, учитывая широкую распространенность SQL в промышленных СУБД и тот факт, что он фактически уже стал стандартом к тому времени, комитет остановился на этом языке. Взяв за основу его диалект, реализованный в СУБД DB2, комитет постарался его обобщить, учитывая реализованные в других реляционных СУБД возможности. После четырех лет работы, в 1986 году предложенный комитетом вариант SQL был официально утвержден как стандарт ANSI, а в 1987 году он был принят в качестве стандарта Международной организацией стандартов (International Standards Organization - ISO). Затем стандарт ANSI/ISO приняло правительство США как федеральный стандарт в области обработки информации (Federal Information Processing Standard - FIPS). В 1989 году стандарт был незначительно изменен и получил название SQL-89 (или SQL1). [11, С.29]

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

Последующая деятельность этого комитета, который со временем получил название 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]

Информация о работе Структура языка SQL