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

SQL (Structured Query Language - язык структурированных запросов) является языком четвертого уровня, предназначенным для работы с реляционными базами данных. Поэтому, в язык SQL в качестве составных частей входят:

· язык манипулирования данными (Data Manipulation Language, DML)

· язык определения данных (Data Definition Language, DDL)

· язык управления данными (Data Control Language, DCL).

Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.

Язык манипулирования данными используется, как это следует из его названия, для манипулирования данными в таблицах баз данных. Он состоит из 4 основных команд:

SELECT (выбрать)
INSERT (вставить)
UPDATE (обновить)
DELETE (удалить)

В настоящий момент стандарт SQL99 содержит следующие уровни соответствия:

· Функциональное ядро.

Данный уровень является обязательным для любой реализации СУБД. Он включает в себя основной уровень соответствия SQL92, а также поддержку работы с LOB-объектами (Large Object), вызов из SQL внешних программ, написанных на других языках программирования, и простые типы данных, определяемые пользователем. Локаторы описываются целочисленными переменными, реализующими доступ к LOB-объекту по ссылке. TYPE (например, CREATE TYPE name_of_new_type AS INTEGER (5) FINAL; ).

· Поддержка работы с датой/временем.

Этот уровень соответствия вводит типы данных DATETIME и INTERVAL, а для типа DATETIME вводит поля TIMEZONE_HOUR и TIMEZONE_MINUTE, определяющие смещение для зонального времени относительно универсального времени. В стандарте SQL92 полного уровня соответствия типы данных DATETIME и INTERVAL уже были специфицированы.

· Управление целостностью.

Этот уровень соответствия вводит поддержку дополнительных возможностей ссылочной целостности: подзапросы в ограничениях целостности CHECK оператора CREATE TABLE, триггеры, утверждения, создаваемые оператором CREATE ASSERTION. Большинство из этих возможностей входило в стандарт SQL92.

· Активные базы данных.

На этом уровне соответствия определяется поддержка триггеров базы данных, хранимых в базе данных и выполняемых. Триггеры представляют собой фрагменты кода, выполняемые перед или после указанного изменения данных (такого как вставка строки, удаление или изменение строки).

· OLAP.

Этот уровень соответствия определяет средства описания более сложных запросов. Так, в оператор SELECT включена фраза INTERSECT, позволяющая получать пересечения множеств, выданных несколькими запросами. В стандарте SQL92 эта возможность прописывалась только для полного уровня соответствия. В оператор SELECT включена фраза FULL OUTER JOIN, предназначенная для создания полных внешних соединений таблиц. Такое соединение будет содержать все строки из объединяемых таблиц, в которых при отсутствии совпадений проставляются NULL-значения. Подобная возможность была предусмотрена и в полном уровне соответствия стандарта SQL92.

· PSM-модули.

Этот уровень соответствия полностью описан в документе SQL/PSM стандарта SQL99. Так, язык SQL расширяется операторами управленияCASE, IF, WHILE, REPEAT, LOOP и FOR. Вводится поддержка процедур и функций, создаваемых операторами CREATE PROCEDURE и CREATE FUNCTION. В язык SQL введено использование переменных и применение обработчиков ошибок.

· CLI-интерфейс.

Этот уровень соответствия вводит поддержку интерфейса уровня вызова, определяющего вызов операторов SQL. В свое время на базе CLI-интерфейса был разработан стандарт ODBC, который более подробно будет рассматриваться в последующих лекциях.

· Базовая поддержка объектов (Basic Object Support).

Этот уровень соответствия стандартизирует использование объектов, вводя поддержку объектных типов данных, определяемых пользователем, применение типизированных таблиц (таблиц на базе объектных типов), использование массивов и ссылочных типов данных, а также переопределение внешних процедур.

· Расширенная поддержка объектов (Enhanced Object Support).

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

7 . Типы данных. Числовые, строковые и календарные данные. Тип данных NULL

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

MySQL поддерживает несколько различных типов данных:
Числовые данные — это все целые числа (без дробной части) и вещественные числа (с дробной частью).
Строковые данные — последовательность символов, заключенная в кавычки. В MySQL в качестве стандарта используются одинарные кавычки и для совместимости с другими базами данных рекомендуется именно их использование.
Календарные данные — тип для обозначение даты и времени, принимает различные формы, например строковую «2007-11-23» или числовую 20071123. Особенностью этого типа данных является их хранение в едином внутреннем формате, что позволяет производить операции сложения и вычитания, в независимости от внешнего представления.
NULL — специальный тип данных, обозначает отсутствие информации.

Итак, теперь о каждом типе данных подробнее.





Числовые данные

Числовые данные делятся на точечные (это BOOLEAN, INTEGER, DECIMAL) и приближенные (FLOAT, REAL, DOUBLE PRESISION).
Итого, имеем: пять целых типов TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT. Различающихся между собой диапазоном хранимых в них величин. Чем больше диапазон значений, тем больше памяти для его хранения потребуется.

Целые типы данных могут быть объявлены положительными. Для этого после объявления необходимо использовать ключевое слово UNSIGNED. В таком случае элементам столбца нельзя будет присвоить отрицательные значения, а допустимый диапазон положительных чисел которые может принимать элемент, удваивается. Например: TINYINT принимает от -128 до 127, а TINYINT UNSIGNED — от 0 до 255.

 


Строковые данные

Максимальные размеры и требования к памяти, строковых типов данных:
Тип данных CHAR может хранить строку фиксированной длины N, его дополняет тип VARCHAR, который позволяет хранить переменные строки длиной L. Значение N может принимать значения от 0 до 65535. (До версии MySQL 5.0.3 значение N могло быть только от 0 до 255)

При выборе строкового типа данных для столбца, следует учитывать что для переменных строк VARCHAR требуется количество символов, равное длине строки плюс один байт, а для типа CHAR(N) в независимости от длины строки будут сохранены все N символов.

При создании таблицы нельзя комбинировать столбцы типов CHAR и VARCHAR. Если такое произойдет, то MySQL изменит тип столбцов CHAR на тип VARCHAR.

С версии MySQL 4.1.2, в типах CHAR и VARCHAR строки рассматриваются как последовательности символов. Таким образом, при использовании многобайтных кодировок, например UNICODE, размер строки в байтах будет больше, чем в символах. Для совместимости со старыми версиями MySQL введены два специальных типа данных: BINARY и VARBINARY, которые эквивалентны типам CHAR и VARHAR, однако строка в них рассматривается как последовательность байтов, а не символов. К BINARY строкам не применимы кодировки и сортируются они как обычные последовательности байтов.

Типы данных BLOB и TEXT в MySQL отличаются лишь в небольших деталях. Например, при выполнении действий над столбцами типа TEXT учитывается кодировка, а типа BLOB — нет.


Календарные данные

В MySQL есть 5 видов столбцов для хранения календарных типов данных: DATE, DATETIME, TIME, TIMESTAMP и YEAR. Тип DATE — для хранения даты, TIME — для хранения времени, TIMESTAMP — для представления даты и времени в виде числа секунд, которые прошли с полуночи 1 января 1970 года. Тип данных YEAR — позволяет хранить только год.

Значения типов DATE и DATETIME, в качестве первого числа принимают год либо в формате «YYYY», например '2010-12-10', либо в формате «YY», например '10-12-10'. Затем через дефис указывается месяц в формате «MM» (12), а следом день аналогично через дефис день в формате «DD» (10).

В типах TIME и DATETIME время приводится в формате hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. Дни, месяцы, часы, минуты и секунды можно записывать как с ведущим нулем: 01, так и без него:


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


Тип данных NULL

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

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

Атрибут NOT NULL можно не указывать, поскольку он присваивается столбцу по умолчанию, если никакой из атрибутов не указан. Совместно с атрибутами NOT NULL и NULL можно использовать DEFAULT, который имеет больший приоритет.



Дата: 2019-02-02, просмотров: 287.