Помощь в написании студенческих работ
Антистрессовый сервис

Предметная область SQL

РефератПомощь в написанииУзнать стоимостьмоей работы

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

Предметная область SQL (реферат, курсовая, диплом, контрольная)

Microsoft SQL Server — это система анализа и управления реляционными базами данных в решениях электронной коммерции, производственных отраслей и хранилищ данных.

В начале 1970;х годов в исследовательской лабораторий компании IBM была разработана экспериментальная реляционная СУБД IBM System R, для которой затем был создан специальный язык SEQUEL, позволявший относительно просто управлять данными в этой СУБД. Аббревиатура SEQUEL расшифровывалась как Structured English Query Language — «структурированный английский язык запросов». Позже по юридическим соображениям язык SEQUEL был переименован в SQL.

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc.

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

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

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

Осознавая неполноту стандарта SQL-89, на фоне завершения разработки этого стандарта специалисты различных фирм начали работу над стандартом SQL2. Эта работа также длилась несколько лет, было выпущено несколько проектов стандарта, пока, наконец, в марте 1992 г. не был выработан окончательный проект стандарта (после чего стандарт и соответствующий язык стали называть SQL-92). Этот стандарт существенно более полный и охватывает практически все необходимые для реализации аспекты: манипулирование схемой БД, управление транзакциями и сессиями (сессия — это последовательность транзакций, в пределах которой сохраняются временные отношения), подключение к БД, динамический SQL. Наконец стандартизованы отношения-каталоги БД, что вообще-то не связано с языком непосредственно, но очень сильно влияет на реализацию. Заметим, что в стандарте представлены три уровня языка — базовый, промежуточный и полный. В течение нескольких лет после принятия стандарта производители СУБД, утверждавшие совместимость своих продуктов со стандартом, на самом деле в лучшем случае поддерживали промежуточный уровень языка SQL-92 (естественно, с собственными расширениями). Только в последних выпусках СУБД ведущих производителей обеспечивается совместимость с полным вариантом языка. В 1996 году к SQL-92 присоединен еще один компонент — SQL/PSM. Главной задачей этой спецификации состояла в стандартизации методов определения и применения хранимых процедур, особым образом написанных программ, состоящих из операторов SQL, находящихся в самой базе данных и способных вызываться приложениями, а затем выполняться внутри СУБД.

В 1999 году принимаются пять основных элементов стандарта SQL 1999. Первый элемент (SQL/Framework) посвящен пояснению концептуальной структуры стандарта. Второй элемент (SQL/Fundation) формирует основу стандарта. Внедряется система типов языка, формулируется порядок установления функциональных зависимостей и вероятных ключей, обуславливаются синтаксис и семантика главных операторов SQL:

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

В третьей части находятся более подробная, чем в SQL/92 спецификация SQL/CLI.

Четвертая часть посвящена спецификации SQL/PSM, синтаксису и семантике языка идентификации хранимых процедур. В пятой части (SQL/Dindings) — описан порядок связывания SQL для стандартных версий языков программирования Cobol, Fortran, PL/1, Pascal, Ada, C, MUMPS. Наконец, одновременно с завершением работ по определению стандарта SQL-92 была начата разработка стандарта SQL3. В конце 2003 г. был принят и опубликован новый вариант международного стандарта SQL:2003. Немалое количество экспертов было уверено, что в данном варианте стандарта будут только исправлены неточности SQL 1999. Однако, в SQL: 2003 добавлен ряд новых и значительных качеств.

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

Современные СУБД позволяют обрабатывать данные самых разнообразных типов, среди которых наиболее распространенными являются:

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

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

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

Строки символов постоянной длины. В столбцах, имеющих этот тип данных, обычно хранятся имена людей и компаний, адреса и т. п.

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

Денежные величины. Во многих СУБД поддерживается тип данных MONEY или CURRENCY, который обычно хранится в виде десятичного числа или числа с плавающей запятой. Наличие отдельного типа данных для представления денежных величин позволяет правильно форматировать их при выводе на экран.

Дата и время. Поддержка значений даты/времени также широко распространена в различных СУБД, хотя способы ее реализации довольно сильно отличаются друг от друга. Как правило, над значениями этого типа данных можно выполнять различные операции. Стандарт SQL2 включает определение типов данных DATE, TIME, TIMESTAMP и INTERVAL, а также поддержку часовых поясов и возможность указания точности представления времени (например, десятые или сотые доли секунды).

Булевы величины. Некоторые СУБД, например Informix Universal Server, явным образом поддерживают логические значения (TRUE или FALSE), а другие СУБД разрешают выполнять в инструкциях SQL логические операции (сравнение, логическое И/ИЛИ и др.) над данными.

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

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

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

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

Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER, что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (т. е. внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (т. е. внедрение на одном огромном мощном UNIX-сервере или Windows Data Center Server).

Типы данных, используемые в SQL Server:

* BIGINT (тип данных SQL2003: B1GINT).

Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт.

* BINARY (тип данных SQL2003: BLOB).

Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает п + 4 байта.

* BIT (тип данных SQL2003: BOOLEAN).

Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT Столбцы типа BIT нельзя индексировать.

* CHAR, CHARACTER (тип данных SQL2003: CHARACTER).

Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает n байт.

* CURSOR (тип данных SQL2003: отсутствует) Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.

* DATETIME (тип данных SQL2003: TIMESTAMP).

Хранит значение даты и времени в диапазоне с 01−01−1753 00:00:00 до 31−12−9999 23:59:59. Для хранения требуется 8 байт.

* DECIMAL, DEC, NUMERIC (тип данных SQL2003: DECIMAL, NUMERIC).

Хранит десятичные дроби длиной до 38 цифр. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью.

При точности 1−9 используется 5 байт.

При точности 10−19 используется 9 байт.

При точности 20−28 используется 13 байт.

При точности 29−39 используется 17 байт.

* FLOAT (тип данных SQL2003: FLOAT, FLOAT (n)).

Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром и, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (n — от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.

* IMAGE (тип данных SQL2003: BLOB).

Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы MS Word и электронные таблицы MS Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и TEXT имеют множество ограничений на способы использования.

* INT [IDENTITY [(seed, increment)] (тип данных SQL2003: INTEGER).

Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity — это автоматически инкрементируемый идентификатор строки.

* MONEY (тип данных SQL2003: отсутствует) Хранит денежные значения в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. Значение занимает 8 байт.

* NCHAR (n), NATIONAL CHAR (n), NATIONAL CHARACTER (n) (тип данных SQL2003: NATIONAL СНАRACTER (n)).

Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.

* NTEXT, NATIONAL TEXT (тип данных SQL2003: NCLOB).

Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT.

* NUMERIC (p, s) (тип данных SQL2003: DECIMAL (p, s)).

Синоним типа DECIMAL.

* NVARCHAR (n), NATIONAL CHAR VARYING (n), NATIONAL CHARACTER VARYING (n) (тип данных SQL2003: NATIONAL CHARACTER VARYING (n)).

Хранит UNICODE-данные переменной длины до 4000 символов.

Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2).

В SQL Server системный параметр SET ANSI_PADDINGX для полей NCHAR и NVARCHAR всегда установлен (ON).

* REAL, FLOAT (24) (тип данных SQL2003: REAL).

Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Занимает 4 байта. Тип REAL функционально эквивалентен типу FLOAT (24).

* ROWVERSION (тип данных SQL2003: отсутствует) Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.

* SMALLDATETIME (тип данных SQL2003: отсутствует) Хранит дату и время в диапазоне от '01−01−1900 00:00? до '06−06−2079 23:59 с точностью до минуты. (Минуты округляются до меньшего значения, если значе-ние секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.

* SMALLINT (тип данных SQL2003: SMALLINT).

Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

* SMALLMONEY (тип данных SQL2003: отсутствует) Хранит денежные значения в диапазоне от 214 748.3648 до -214 748.3647. Значе-ния занимают 4 байта.

* SQLVARIANT (тип данных SQL2003: отсутствует) Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL VARIANT используется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.

* TABLE (тип данных SQL2003: отсутствует) Специальный тип, хранящий получившийся в результате работы последнего процесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных уменьшает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.

* TEXT (тип данных SQL2003: CLOB).

Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR и ТЕХTVALID, а также команд READTEXT, SET TEXTSIZE, UPDATETEXT и WRITETEXT.

* TIMESTAMP (тип данных SQL2003: TIMESTAMP).

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

* TINYINT.

Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.

* UNIQUEIDENTIFIER (тип данных SQL2003: отсутствует) Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0−9 или, а — f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использовать ограничения и свойства, за исключением свойства IDENTITY.

* VARBINARY[(n)] (тип данных SQL2003: BLOB).

Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.

* VARCHARf (n)], CHAR VARYING [(n)], CHARACTER VARYING [(n)] (тип данных SQL2003: CHARACTER VARYING (n)).

Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению n.

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

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

В настоящее время ход процесса стандартизации языка SQL отображает текущее состояние технологии SQL — ориентированных БД. Основные поставщики IBM, Oracle, Microsoft стремятся достаточно быстро подстраиваться под потребности и конъюнктуру рынка и совершенствуют свою продукцию новыми возможностями.

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

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

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

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

SQLэто не полноценный компьютерный язык типа COBOL, FORTRAN или C. В SQL нет оператора IF для проверки условий, нет оператора GOTO для организации переходов, отсутствуют операторы DO или FOR для создания циклов. SQL является подъязыком баз данных, в который входит около тридцати операторов, предназначенных для управления базами данных. Операторы SQL встраиваются в базовый язык COBOL, FORTRAN или C, и дают возможность получать доступ к базам данных. Кроме того, из такого языка, как С, операторы SQL могут посылать СУБД в явном виде, используя интерфейс вызовов функций. Ко всему прочему SQLэто слабо структурированный язык, по сравнению с C или Pascal. В SQL почти нет нелогичностей, к тому же имеется ряд специальных правил, предотвращающих создание операторов в SQL, которые выглядят как абсолютно правильные, но не имеют смысла.

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

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

  • * запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);
  • * запросы на получение данных;
  • * запросы на добавление новых данных (записей);
  • * запросы на удаление данных;
  • * обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на:

  • * запросы, оперирующие самими таблицами (создание и изменение таблиц);
  • * запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.

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

  • * типа хранимых в каждом поле значений;
  • * связей между таблицами (задание первичных и вторичных ключей);
  • * информации, необходимой для построения индексов.

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

  • * вставка новой строки;
  • * изменение значений полей строки или набора строк;
  • * удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

  • * просмотреть полученный набор;
  • * изменить все записи набора;
  • * удалить все записи набора.

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

Показать весь текст
Заполнить форму текущей работой