Файл: Типы данных SQL (Введение SQL).pdf

ВУЗ: Не указан

Категория: Реферат

Дисциплина: Не указана

Добавлен: 06.07.2023

Просмотров: 24

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение SQL

Язык SQL (Structured Query Language) относится к языку структурированных запросов. Он также является универсальным компьютерным языком используемым для создания, изменения и управления данными в реляционных базах данных. Не смотря на имеющиеся заблуждения язык SQL является информационно-логическим, а не языком программирования. Большое количество особенностей SQL, начиная с ранних версий противоречили принципам реляционной модели, основанной Эдгаром Коддом. Вместе с тем спецификация этого языка считается законченной спецификацией модели данных, играющей сегодня роль двойника реляционной модели. На данный момент SQL называют "свободным языком". Интерфейсы на основе SQL поддерживаются практически всеми основными СУБД, причем далеко не все изначально задумывались как реляционные системы (см. приложение А, рисунок 1), и, скорее всего, такое положение вещей не изменится.

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

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

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

Администрирование баз данных. В этом случае SQL используется администратором базы данных для установления структуры базы данных и управления доступом к данным.

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

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


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

История SQL

Язык SQL, предназначавшийся для управления базами данных, был создан в середине 70-х годов компанией IBM по проекту пробной реляционной СУБД System-R. Первоначально этот язык носил название SEQUEL (Structured English Query Language), что не полностью объясняло сущность языка. Естественно, язык был в большей степени направлен на удобную и несложную интерпретацию запросов к реляционным базам данных, но на самом деле, он практически с самого начала стал полным языком баз данных, имеющим кроме инструментов формулирования запросов и управления базами данных следующие возможности:

средства определения и управления структурой БД.

средства определения ограничений и единства триггеров,

средства определения представлений БД,

средства определения схем физического уровня, отвечающих за точное выполнение запросов,

средства разрешения доступа к таблицам и их полям,

средства установки точек сохранения транзакций, обеспечения фиксации и откатов транзакций.

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

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

Стандартизация языка SQL была начата практически в одно время с возникновением его первых коммерческих релизов. В 1982 году комитету по базам данных Американского национального института стандартов (ANSI) поступил заказ на создание стандартов для языка реляционных БД. В октябре 1985 года был выполнен проект стандарта, который являлся уже не первым стандартом проекта ANSI. Этот стандарт был принят ANSI уже в 1986 году, а через год одобрен Международной организацией по стандартизации (ISO).

Типы данных SQL и структура языка

Язык SQL стандартов SQL: 2003, SQL: 1999 и даже SQL/92 - это достаточно огромный и сложный язык. Его потенциал практически невозможно сразу постичь и тем более освоить. Исходя из этого, требуется подразделять язык на уровни, или слои, таким образом, что каждый слой языка содержит в себе все конструкции, находящиеся на более низком уровне. В стандарте существует несколько способов разделения языка на уровни. В одной из классификаций он делится на базовый, промежуточный и полный. Из всех существующих конструкций языка SQL можно отметить такие конструкции, которые используются при прямом (direct) взаимодействии конечного пользователя с СУБД. На последующем уровне встраиваемого (embedded) SQL язык дополняется конструкциями, которые позволяют применять возможности прямого SQL в приложениях, написанных на популярных языках программирования. На уровне динамического (dynamic) SQL встраиваемый SQL расширяется конструкциями, позволяющими программам обращаться к СУБД с конструкциями прямого SQL, которые образуются во время работы программы.


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Таблица 1 Типы данных SQL

Тип данных

Описание

CHAR

Строки символов постоянной длины

VARCHAR

Строки символов переменной длины

NCHAR

Строки локализованных символов постоянной длины

NCHAR VARYNG

Строки локализованных символов переменной длины

INTEGER

Целые числа

SMALLINT

Малые числа

BIT

Цепочки битов постоянной длины

BIT VARYNG

Цепочки битов переменной длины

NUMERIC

Числа с заданной точностью и степенью

DOUBLE PRECISION

Числа с плавающей запятой низкой точности

DATE

Дата

TIME

Время

TIMESTAMP

Дата и Время

INTERVAL

Временной интервал

DECIMAL

Числа с плавающей запятой

REAL

Числа с плавающей запятой низкой точности