Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МДК02.02 Лекция 2_1.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
61.71 Кб
Скачать

2. Типы данных

Во всех языках программирования, а также в SQL важное место занимают поддерживаемые типы данных. Данные, которые хра­нятся в памяти компьютера и подвергаются обработке, можно отнести к различным типам.

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

SELECT Фамилия FROM Сотрудники WHERE Зарплата > 25000;

В условии запроса (оператор where) сравниваются символьное и числовое значения. На практике данная проблема легко пре­одолима с помощью функции CAST() приведения значения к тре­буемому типу. Кроме того, между некоторыми ти­пами столбцов таблицы и данных, участвующих в SQL-выражениях, существуют соответствия, допускающие их совме­стное использование. Такие типы называют согласованными. Различные СУБД поддерживают несколько отличающиеся на­боры типов данных - для столбцов таблиц базы данных. Анало­гичная ситуация и с типами данных, поддерживаемых различ­ными версиями и реализациями SQL. Вместе с тем, всегда имеются типы данных, которые поддерживаются всеми реали­зациями SQL.

В спецификации SQL:2003 признаны пять предопределенных общих типов, внутри которых могут быть подтипы:

строковый (символьный):

  • CHARACTER (или CHAR);

  • CHARACTER VARYING (или VARCHAR);

  • CHARACTER LARGE OBJECT (или CLOB);

числовой:

точные числовые типы:

  1. INTEGER;

  2. SMALLINT;

  3. BIGINT;

  4. NUMERIC;

  5. DECIMAL;

приблизительные числовые типы:

1. REAL;

  1. DOUBLE PRECISION;

  2. FLOAT;

логический (булевский) - BOOLEAN;

даты-времени:

  • DATE;

  • TIME WITHOUT TIME ZONE,

  • TIME WITH TIME ZONE;

  • TIMESTAMP WITHOUT TIME ZONE;

  • TIMESTAMP WITH TIME ZONE;

интервальный.

Кроме того, существуют особые типы:

ROW (запись),

ARRAY (мас­сив) и

MULTISET (мультимножество).

2.1. Строки

Строковые данные (последовательности символов) имеют три главных строковых типа. Для столбца таблицы можно указать тип CHARACTER(n) или CHAR(n) (строка фиксированной длины), где n - максимальное количество символов, содержащихся в строке. Если (n) не указано, то предполагается, что строка состоит из од­ного символа. Если в столбец типа CHARACTER (n) вводится т<п символов, то оставшиеся позиции заполняются пробелами.

Тип данных CHARACTER VARYING(n) или VARCHAR (n) (строка переменной длины) применяется тогда, когда вводимые данные имеют различную длину и нежелательно дополнять их пробела­ми. При этом сохраняется только то количество символов, кото­рое ввел пользователь. В данном случае указание максимального количества символов обязательно (в отличие от CHARACTER). Данные типов CHARACTER и CHARACTER VARYING могут участвовать в одних и тех же строковых операциях.

Nип данных CHARACTER LARGE OBJECT (CLOB- большой сим­вольный объект) используется для представления очень больших символьных строк (например, статей, книг и т. п.). В некоторых СУБД данный тип называется MEMO, а в других - TEXT. С данными этого типа можно выполнять не все операции, предусмотрен­ные для типов CHARACTER и CHARACTER VARYING. Так, их нельзя использовать в операциях сравнения, за исключением равенства и неравенства. Кроме того, столбцы этого типа не могут быть первичными и внешними ключами, а также быть объявлены как имеющие уникальные значения.

В следующем примере создается таблица с обычным символь­ным столбцом и столбцом типа CLOB, значения которого могут содержать 100 000 символов:

CREATE TABLE myTable

(

FIELD1 CHARACTER (60),

FIELD2 CLOB (100000)

);

Здесь оператор CREATE TABLE создает таблицу с именем myTable, которая состоит из двух столбцов с именами FIELD1 и FIELD2.

Различные языки используют различные наборы символов. Система может быть настроена на некоторый набор символов, принимаемый по умолчанию. Однако при этом можно использовать и другие символьные наборы. Так, в следующем примере создается таблица, в которой столбец FIELD1 объявляется как строковый с набором символов, приня­тым по умолчанию, а столбец FIELD2 - как строковый с грече­ским набором символов:

CREATE TABLE myTable

(

FIELD1 CHARACTER (60),

FIELD2 CHARACTER VARYING (80) CHARACTER SET GREEK

);

Значения строкового типа в SQL-выражениях заключаются в одинарные кавычки. Например, 'Иванов Иван Иванович', '12345 рублей', 'тел. (812)123-4567'. Пустая строка не содержит ни одного символа и имеет вид: ' '. Строка, содержащая один или более пробелов, не является пустой. Иногда бывает так, что строковый столбец в таблице содержит только числа (точнее, строки, содержащие цифры, знаки числа и разделительные точки). Чтобы использовать такие данные в опера­циях с числами, необходимо привести данные одного типа к другому типу с помощью функции CAST(). Значения типа CHARACTER и CHARACTER VARYING (VARCHAR) совмес­тимы в том смысле, что они могут участвовать как операнды в строковых операциях и операциях сравнения.