Структура языка SQL
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
й СУБД. Однако, разделение языка SQL на уровни не так важно.
Из всех существующих конструкций языка SQL можно отметить такие конструкции, которые используются при прямом (direct) взаимодействии конечного пользователя с СУБД. На последующем уровне встраиваемого (embedded) SQL язык дополняется конструкциями, которые позволяют применять возможности прямого SQL в приложениях, написанных на популярных языках программирования. На уровне динамического (dynamic) SQL встраиваемый SQL расширяется конструкциями, позволяющими программам обращаться к СУБД с конструкциями прямого SQL, которые образуются во время работы программы.
Важно знать, что данный момент ни одна система полностью не соответствует стандарту SQL. Кроме этого, все диалекты языка имеют возможности не являющиеся стандартными. Исходя из этого, можно решить, что все диалекты - это ответвления одного стандарта SQL. Такое явление создает проблемы при перенесении приложений, созданных для одних СУБД в другие СУБД.
Язык SQL владеет терминами, которые несколько отличаются от терминов реляционной теории, к примеру, вместо "отношений" применяются "таблицы", вместо "кортежей" "строки", вместо "атрибутов" "столбцы".
Стандарт языка SQL в некоторых моментах отходит от реляционной теории, хоть и опирается на нее. К примеру, в отношении реляционной модели не может быть одинаковых кортежей, а таблицы SQL могут содержать идентичные записи. Существуют и иные отличия.
Язык SQL - это реляционно полный язык, поэтому каждый оператор реляционной алгебры в состоянии быть выраженным соответствующим оператором SQL.
3. Типы данных языка SQL
В стандарте SQL1 был описан лишь минимальный набор типов данных, которые можно использовать для представления информации в реляционной базе данных. Они поддерживаются во всех коммерческих СУБД. Стандарт SQL2 добавил в этот список строки переменной длины, значения даты и времени и др. Современные СУБД позволяют обрабатывать данные самых разнообразных типов, среди которых наиболее распространенными являются:
Целые числа. В столбцах, имеющих этот тип данных, обычно хранятся данные о ценах, количествах, возрасте сотрудников и т.д. Целочисленные столбцы часто используются также для хранения идентификаторов, таких как идентификатор клиента, служащего или заказа.
Десятичные числа. В столбцах данного типа хранятся числа, имеющие дробную часть, но которые необходимо вычислять точно, например курсы валют и проценты. Кроме того, в таких столбцах часто хранятся денежные величины.
Числа с плавающей запятой. Столбцы этого типа используются для хранения величин, которые можно вычислять приблизительно, например значения весов и расстояний. Числа с плавающей запятой могут представлять больший диапазон значений, чем десятичные числа, однако при вычислениях возможны погрешности округления.
Строки символов постоянной длины. В столбцах, имеющих этот тип данных, обычно хранятся имена людей и компаний, адреса и т.п.
Строки символов переменной длины. Столбцы этого типа позволяют хранить строки символов, длина которых изменяется в некотором диапазоне. В стандарте SQL1 были определены только строки постоянной длины, которые проще обрабатывать, но они требуют больше места для хранения.
Денежные величины. Во многих СУБД поддерживается тип данных MONEY или CURRENCY, который обычно хранится в виде десятичного числа или числа с плавающей запятой. Наличие отдельного типа данных для представления денежных величин позволяет правильно форматировать их при выводе на экран.
Дата и время. Поддержка значений даты/времени также широко распространена в различных СУБД, хотя способы ее реализации довольно сильно отличаются друг от друга. Как правило, над значениями этого типа данных можно выполнять различные операции. Стандарт SQL2 включает определение типов данных DATE, TIME, TIMESTAMP и INTERVAL, а также поддержку часовых поясов и возможность указания точности представления времени (например, десятые или сотые доли секунды).
Булевы величины. Некоторые СУБД, например Informix Universal Server, явным образом поддерживают логические значения (TRUE или FALSE), а другие СУБД разрешают выполнять в инструкциях SQL логические операции (сравнение, логическое И/ИЛИ и др.) над данными.
Длинный текст. Многие СУБД поддерживают столбцы, в которых хранятся длинные текстовые строки (обычно длиной до 32000 или 65000 символов, а в некоторых случаях и больше). Это позволяет хранить в базе данных целые документы. Как правило, СУБД запрещает использовать эти столбцы в интерактивных запросах.
Неструктурированные потоки байтов. Современные СУБД позволяют хранить и извлекать неструктурированные потоки байтов переменной длины. Столбцы, имеющие этот тип данных, обычно используются для хранения графических и видеоизображений, исполняемых файлов и других неструктурированных данных.
К примеру, тип данных IMAGE в SQL Server позволяет хранить потоки данных размером до 2 миллиардов байтов.
Азиатские символы. В последнее время все больше поставщиков СУБД стали включать в свои продукты поддержку строк переменной и постоянной длины, содержащих символы азиатских алфавитов. Однако над такими строками, как правило, нельзя выполнять операции поиска и сортировки.
В табл.3.1 перечислены типы данных, определенные в стандарте ANSI/ISO.
Таблица 3.1 - Типы данных в SQL
Тип данныхОписаниеCHAR (длина) Строки символов постоянной длиныCHARACTER (длина) VARCHAR Строки символов переменной длиныCHAR VARYNGCHARACTER VARYNGNCHARСтроки локал?/p>