Логические данные

Числа

FIELD2 CHARACTER VARYING (80) CHARACTER SET GREEK

FIELD1 CHARACTER (60),

CREATE TABLE myTable

FIELD2 CLOB (100000)

FIELD1 CHARACTER (60),

);

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

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

(

);

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

Числовой тип данных может быть двух видов - точный и при­близительный. Точные числовые типы позволяют точно выразить значение числа. Некоторые величины имеют очень большой диа­пазон значений, и в таких случаях достаточно ограничиться не­которым приближенным их представлением с учетом техниче­ских возможностей компьютера (размеров регистра).

К точным числовым относятся следующие пять типов:

INTEGER - целое (без дробной части) число. Количество раз­рядов (точность) зависит от реализации SQL. В некоторых реализациях числа этого типа лежат в диапазоне от -2147483648 до 2147483647 (четырехбайтное целое число);

SMALLINT - малое целое число. Количество разрядов зависит от реализации SQL, но не больше количества разрядов INTEGER в этой же реализации. В некоторых реализациях чис­ла этого типа лежат в диапазоне от -32768 до 32767 (двухбайтное целое число);

BIGINT - большое целое число. Количество разрядов зависит от реализации SQL и превышает количество разрядов числа типа INTEGER;

NUMERIC (х, у) - число, в котором всего х разрядов (точ­ность), из которых у разрядов (масштаб) отводится для дроб­ной части. Если у не указано (NUMERIC (x)), то для дробной части отводится количество разрядов, установленное в систе­ме по умолчанию. Если не указаны ни х, ни у (NUMERIC), то принимаются обе эти величины, установленные по умолча­нию. Например, если указан тип NUMERC (6,2), то макси­мальное значение числа равно 9999.99;

DECIMAL (x, у) - десятичное число, в котором всего х разря­дов, из которых у разрядов отводятся для дробной части. Если х или/и у не указаны, то принимаются значения по умолча­нию. Этот тип очень похож на NUMERIC. Отличие состоит в том, что если в DECIMAL (х, у) указанные х и у меньше, чем допустимые реализацией SQL, то будут использоваться по­следние. Если х и у не указаны, то применяется система умол­чаний. Например, вы задали для столбца тип DECIMAL (6, 2). Если реализация SQL позволяет, то в этот столбец можно вве­сти числа, превышающие 9999.99. В отличие от DECIMAL (x, у), тип NUMERIC (x, у) жестко задает диапазон возможных зна­чений числовой величины.

К приблизительным числовым типам относятся следующие три типа:

REAL - вещественное число одинарной точности с плавающей разделительной точкой (эта точка "плавает", появляясь в различных местах числа). Например, 5.25, 5.257, 5.2573. Точность представления числа зависит от реализации SQL и оборудования.

DOUBLE PRECISION- вещественное число двойной точности с плавающей разделительной точкой. Точность представления числа зависит от реализации SQL и оборудования. Применяет­ся для представления научных данных (например, результатов измерений) в широком диапазоне значений, т. е. как очень ма­лых (близких к 0), так и очень больших;

FLOAT (x) - вещественное число с плавающей разделитель­ной точкой и минимальной точностью х, занимающее не более 8 байтов. Если компьютер может поддержать указанную точ­ность, используя аппаратную одинарную точность, то система будет использовать арифметику одинарной точности. Если указанная точность требует арифметики с двойной точностью, то система будет использовать ее. Данный тип следует приме­нять, если предполагается возможность переноса базы данных на другую аппаратную платформу, отличающуюся размерами регистров. Пример значения типа FLOAT: 5.318Е-24 (т. е. 5.318, умноженное на 10 в степени -24). Такую же форму представ­ления имеют и числа типа REAL и DOUBLE PRECISION.

 

При создании таблиц целочисленные типы применяются для столбцов, содержащих разного рода идентификаторы, например, номера (коды) клиентов, товаров, заказов и т. п. Разумеется, если содержимое столбца должно быть целым числом (например, ко­личество ящиков, бутылок, штук и т. п.), то тип этого столбца естественно определить как INTEGER, SMALLINT или BIGINT. Допустим, в таблице клиенты имеется столбец ID_клиента, со­держащий уникальные идентификаторы клиентов. Если количе­ство клиентов не превышает 32 000, то тип столбца можно опре­делить как SMALLINT. Если в вашей таблице будут храниться cведения о сотнях тысяч клиентов, то тип столбца ID_клиента следует определить как INTEGER.

Если столбец в проектируемой таблице должен содержать числа с дробной частью, то для него можно задать какой-нибудь неце­лочисленный тип. Если вы не уверены, что применить: точные числовые типы или приблизительные, выбирайте точные (NUMERIC, DECIMAL). Они требуют меньше ресурсов и дают точные результаты. Если в столбце предполагается хранить данные из очень широкого диапазона (и очень малые, и очень большие чис­ла), то используйте приблизительные типы данных (FLOAT, REAL). Обратите внимание, что строка, содержащая число (например, '12345.47'), является данным строкового, а не числового типа. Чтобы в SQL-выражениях сравнивать строковые и числовые дан­ные, необходимо один из типов привести к другому с помощью функции CAST() .

 

 

В этой части математической логики данные имеют только два значения - ИСТИНА и ЛОЖЬ, обозначаемые как true и false соответственно. Данные логического типа получаются в результате операций сравнения. Например, результатом вычис­ления выражения 3 < 5 является ИСТИНА, а выражения 2 + 3= 10 -ЛОЖЬ.

В SQL тип данных BOOLEAN (булевский) имеет три значения - true, false и unknown. Значение unknown (неизвестное) было вве­дено для обозначения результата, получающегося при сравнении со значением NULL (неопределенное). Если пользователь еще не ввел в ячейку таблицы никакого значения, то эта "пустая" ячейка содержит значение null, интерпретируемое как неизвестное или неопределенное значение.

Результатом любой операции сравнения true или false с NULL или с unknown всегда является unknown.

В SQL-выражениях логические значения заключаются в кавычки, например, 'true' или 'true'.