Численный тип данных диапазон значений которого 2147483647 2147483647
Перейти к содержимому

Численный тип данных диапазон значений которого 2147483647 2147483647

  • автор:

Типы данных VBScript

Вообще-то VBScript имеет только один тип данных, который называется Variant. Тип Variant – это специальный тип данных, который может содержать данные различных типов. То есть вам нет необходимости объявлять переменную конкретного типа. Достаточно просто объявить имя переменной, а какие данные будут в этой переменной — интерпретатор определит автоматически во время выполнения скрипта.

Тип Variant может содержать как числовые, так и строковые данные. Данные интерпретируются как числовые, когда в вашей программе вы используете их в математических выражениях и как текстовые, когда вы используете их при работе со строками. Таким образом, если VBScript распознаёт ваши данные как числовые, то с этими данными можно работать как с числами. Если же данные содержат символы, отличные от применяемых в числах, то эти данные интерпретируются как строковые. Если вы хотите, чтобы числовые данные интерпретировались VBScript как строковые, то вы должны заключать их в двойные кавычки (» «).

Например, мы объявили переменную Num. Тогда в скрипте мы можем использовать её следующим образом:

Num = 5 + 10 Num = "Результат: " & Num MsgBox Num

Этот скрипт выполнится без ошибки. В первой строке мы используем переменную Num как целое число. Интерпретатор это определяет по операнду «+», то есть операция «5 + 10» — это операция сложения чисел, результатом которой будет число 15. Следующая строка — это операция сложения строк, интерпретатор определяет это по операнду «&», который используется при сложении строк. Результатом этой операции уже будет НЕ ЧИСЛО, а СТРОКА «15», которую мы и выводим на экран с помощью функции MsgBox. А вот если бы в этом скрипте вместо

Num = "Результат: " & Num

мы бы написали

Num = "Результат: " + Num

то скрипт не был бы выполнен и вы бы получили сообщение об ошибке, потому что нельзя с помощью математических операндов складывать строки.

Так как VBScript имеет только один тип данных Variant, то и все функции VBScript также всегда возвращают данные типа Variant.

Variant: подтипы

Кроме простых числовых и строковых типов данных Variant включает в себя различные представления числовой информации. Например, вы можете оперировать числовой информацией, которая представляет дату и время. Если используются данные типа даты и времени, то результат всегда представляется как дата или время. Вы можете также использовать различную числовую информацию в широком диапазоне значений от типа Boolean до чисел с плавающей точкой. Эти категории данных, которые могут содержаться в типе Variant называются подтипами. Однако учтите, что вы можете работать с этими данными, только используя тип Variant, и тип Variant должен вести себя в соответствии с подтипом данных, который в нем содержится.

Впрочем, VBScript позволяет очень вольно обращаться с данными. Например, такой код будет выполнен без сообщений об ошибках:

Num = True Num = Num + 10

Хотя на первый взгляд может показаться, что логические переменные нельзя складывать с целочисленными. Оказывается, что в VBScript это вполне допустимо, вот только результат может оказаться для вас неожиданным. Поэтому, несмотря на все преимущества использования типа Variant, делать это нужно с умом, понимая возможные последствия автоматического преобразования типов.

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

Подтип Описание
Empty Инициализация типа Variant. Содержит 0 для числовых значений и пустую строку (“”) для строковых значений.
Null Не содержит никаких значащих данных.
Boolean Логический тип, может принимать значения True (истина) или False (ложь)
Byte Целое число в диапазоне 0…255.
Integer Целое число в диапазоне -32768…32767
Currency Денежный тип, диапазон от -922337203685477,5808 до 922337203685477,5807.
Long Целое число в диапазоне -2147483648…2147483647
Single Число с плавающей точкой в диапазоне от -3.402823E38 до -1.401298E-45 для отрицательных значений и от 1.401298E-45 до 3.402823E38 для положительных значений.
Double Число с плавающей точкой в диапазоне от -1.79769313486232E308 до -4.94065645841247E-324 для отрицательных значений и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений.
Date (Time) Числовое значение, которое представляет дату в диапазоне от 1-го января 100 года до 31 декабря 9999 года.
String Строка переменной длины, которая может быть длиной до 2 миллиардов символов.
Object Объект.
Error Код ошибки.

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

Типы данных и их вывод

В этом уроке мы познакомимся с особенностями функции printf() и типами данных: целыми и вещественными числами, символами, массивами и строками. Это далеко не все допустимые в C типы. Есть еще указатели, структуры, объединения, перечисления, также в C есть возможность определять собственные типы данных.

Функция printf() и форматированный вывод

Вывод символов на экран, а точнее в стандартный поток вывода, осуществляется в языке C помощью функции printf(). Эта функция выводит на экран строку, переданную первым аргументом, предварительно заменив в ней специальные комбинации символов преобразованными в символы данными, переданными последующими аргументами. Следующие после первой строки данные могут быть строками, символами, целыми или вещественными числами, а также указателями. У каждого типа данных имеется свое обозначение — своя спецификация формата.

На прошлом уроке мы выводили строку «Hello World» вот так:

printf("Hello World\n");

Однако то же самое можно было получить так:

printf("%s\n", "Hello World");

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

printf("%d\n", 5);

Вместо числа 5 может стоять переменная целочисленного типа. Функция printf() может принимать произвольное число аргументов:

printf("%d %s, %d %s.\n", 3, "dogs", 2, "cats");

При выводе данные подставляются по очередности следования: 3 на место первой спецификации, dogs на место второй и т.д. То есть следует строго соблюдать соответствие форматов и последующих данных.

Под выводимые данные можно выделять больше знакомест, чем необходимо. Для этого между знаком % и буквой формата прописывается целое число, обозначающие ширину поля, например так: %10d. По умолчанию выравнивание происходит по правому краю. Для выравнивания по левому краю перед числом ставится знак минус.

Напишите программу, которая выводила бы на экране данные примерно так, как на картинке. При этом используйте возможность задать ширину поля, а также выравнивание по левому и правому краям.

Пример форматированного вывода

Целочисленные типы

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

Так, если под переменную какого-либо целочисленного типа выделяется 2 байта, что составляет 16 бит, и ей можно присваивать только положительные числа и ноль, то эти числа будут в диапазоне от 0 до 65535, т. к. 2 16 = 65536, но одна вариация забирается на нуль. Если же тип допускает отрицательные числа, то диапазон допустимых значений уже будет лежать в пределах от -32768 до +32767.

Часто в программах используется тип int. Вот пример, где происходит объявление и определение (присваивание значений) целочисленных переменных, а также вывод их значений на экран:

#include int main()  int lines, i; int count = 0; lines = 100; i = -1; printf("%5d %5d %5d\n", i, count+10, lines); >

Обратите внимание, что в языке C присваивать значение можно при объявлении переменных.

Обычно под переменную типа int, которая может принимать как положительные так и отрицательные значения, отводится 4 байта, что равно 32-м битам. Отсюда допустимый диапазон значений будет лежать в пределах от -2 147 483 648 до 2 147 483 647. Если в исходном коде на C мы объявим переменную int max, присвоим ей максимально допустимое значение, а потом будем его увеличивать, то сообщений об ошибке не будет ни на этапе компиляции, ни на этапе выполнения.

#include int main()  int max = 2147483647; printf("%d\n", max+1); printf("%d\n", max+2); printf("%d\n", max+10); >

Результат будет таким:

-2147483648 -2147483647 -2147483639

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

То же самое с минимумом int. Если мы начнем из него вычитать, т. е. двигаться против часовой стрелки, то перескочим максимальную границу и будем идти в направлении уменьшения уже от нее:

#include int main()  int min = -2147483648; printf("%d\n", min-1); printf("%d\n", min-2); printf("%d\n", min-10); >
2147483647 2147483646 2147483638

Помимо типа int в языке программирования C существуют другие (модифицированные) целочисленные типы:

  • short — отводится меньше байтов, чем на int;
  • long — отводится больше байтов, чем на int (не всегда, зависит от системы);
  • unsigned — столько же байт как у int, но без отрицательных чисел; в результате чего знаковый разряд освобождается, и количество положительных значений увеличивается;
  • unsigned short;
  • unsigned long.

При выводе длинных чисел следует дополнять спецификацию формата буквой l перед буквой формата. Например:

printf("%ld\n", i); printf("%15ld\n", i);

Символы

Под символьный тип данных отводится 1 байт памяти. У каждого символа есть соответствующее ему целое число по таблице символов ASCII.

Тип char языка программирования C включает диапазон чисел от -128 до 127. Значения от 0 до 127 могут быть заданы или выведены на экран в виде соответствующих символов (на самом деле не все). Если значение переменной задается в виде символа, то символ заключается в одиночные кавычки, например, так: ‘w’. Также в языке существует тип unsigned char с диапазоном чисел от 0 до 255.

С другой стороны, если переменная задана как int или short и ей присвоено значение в диапазоне, где оно может быть представлено символом, то значение можно вывести как символ. Соответственно целочисленной переменной можно присвоить символ.

Если в программе вы будете использовать целые числа со значениями до 127 или 255 и хотите сэкономить память, то объявите переменную как char или unsigned char.

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

Так программа, представленная ниже,

#include main()  char ch = 63; unsigned char uch = 'r'; short j = 'b', k = 99; printf("%c == %d\n", ch, ch); printf("%c == %d\n", uch, uch); printf("%c, %c\n", j, k); >

выдает такой результат:

? == 63 r == 114 b, c

Число 63 по таблице символов ASCII соответствует знаку ‘?’. Сначала мы выводим значение переменной ch в формате символа, затем – числа. Тоже самое с переменной uch, однако ее значение было задано через символ, а не число.

Вещественные типы данных

В языке C существует три типа чисел с плавающей точкой: float и double (двойной точности) и long double. Также существует три формата вывода вещественных чисел, причем они не связаны с типами, а связаны с удобством представления числа. Вещественные числа могут иметь высокую точность, очень маленькое или очень большое значение. Если выполнить функции printf() с такими параметрами:

double a = 0.0005; printf("%f\n", a); printf("%g\n", 0.0005); printf("%g\n", 0.00005); printf("%e\n", 0.0005);

, то на экране мы увидим следующее:

0.000500 0.0005 5e-05 5.000000e-04

В первом случае (%f) выводится число в обычном виде. По умолчанию точность представления числа равна шести знакам после точки.

Во втором случае (%g) число выводится как обычно, если количество значащих нулей не больше четырех. Если количество значащих нулей четыре и больше, то число выводится в нормализованном виде (третий случай). Запись 5e-5 означает 5 * 10 -5 , что равно 0.00005. А, например, запись 4.325e+3 является экспоненциальной записью 4.325 * 10 3 , что равно 4325. Если с такой формой представления чисел вы сталкиваетесь первый раз, то почитайте дополнительные источники, например, статью в Википедии «Экспоненциальная запись».

Четвертый формат (%e) выведет число исключительно в нормализованном виде, каким бы это вещественное число ни было.

Если при выводе требуется округлить число до определенной точности, то перед буквой-форматом ставят точку и число-указатель точности. Например, printf(«%.2f», 0.23) выведет на экран 0.23, а не 0.230000. Когда требуется указать еще и поле, то его ширину прописывают перед точкой, например, %10.3f.

Массивы

Переменные, содержащие массивы, в языке программирования C объявляются, например, так:

int arr[5], nums[N]; float f_arr[100]; char str[80];

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

#define N 100

На самом деле #define является командой препроцессора, используемой не только для определения констант. Когда препроцессор обрабатывает исходный файл программы, он подставляет во все места, где была упомянута константа, ее значение.

Индексация массивов в языке программирования C начинается с нуля.

Присваивание значений элементам массивов можно произвести сразу или в процессе выполнения программы. Например:

char vowels[] = 'a', 'e', 'i', 'o', 'u', 'y'>; float f_arr[6]; f_arr[0] = 25.3; f_arr[4] = 34.2; printf("%c, %.2f\n", vowels[4], f_arr[0]);

Когда переменная-массив объявляется и сразу определяется (как в случае vowels), то размер массива можно не указывать, т. к. он вычисляется по количеству элементов, переданных в фигурных скобках.

Строки

В языке программирования С нет отдельного строкового типа данных, хотя формат вывода строки есть (%s). Строки в C – это массивы символов, последний элемент которых является первым (с номером 0) символом в таблице ASCII. В этом месте таблицы стоит «ничто», имеющее символьное обозначение ‘\0’.

С другой стороны, строки — это необычные массивы в том смысле, что работа с ними в языке программирования C несколько отличается от работы с числовыми массивами. В этом мы убедимся позже.

Выше мы объявили и определили массив vowels. Если бы мы его определили вот так:

char vowels[] = 'a', 'e', 'i', 'o', 'u', 'y', '\0'>;
char vowels1[] = "aeiouy";

то он был бы строкой. Во втором случае сами двойные кавычки «говорят» что это строка, и символ окончания строки ‘\0’ записывается в память автоматом.

Массивы символов можно выводить на экран, просто указав имя переменной, а вот с массивами чисел такой номер не пройдет:

printf("%s\n", vowels); printf("%f\n", f_arr); // ошибка

Функция sizeof()

Функция sizeof() языка C принимает в качестве аргумента константу, тип данных или переменную и возвращает количество байт, которые отведено под этот объект в памяти.

При выводе на экран значения, возвращаемого sizeof() используется формат %lu (длинное целое без знака). Примеры:

int a = 10; int b[100]; printf("Integer: %lu \n", sizeof(a)); printf("Float: %lu \n", sizeof(float)); printf("Array of 100 integers: %lu \n", sizeof(b));

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

Курс с решением части задач:
pdf-версия

Типы данных SQL

Типы данных MySQL разделяются на следующие типы:

Числовые типы данных

Типы данных Байт От До
TINYINT 1 -128 127
SMALLINT 2 -32768 32767
MEDIUMINT 3 -8388608 8388607
INT 4 -2147483648 2147483647
BIGINT 8 -9223372036854775808 9223372036854775807

Типы данных даты и времени

Типы данных Значение «Ноль»
DATETIME ‘0000-00-00 00:00:00’
DATE ‘0000-00-00’
TIMESTAMP 00000000000000 (длина зависит от количества выводимых символов)
TIME ’00:00:00′
YEAR 0000

Символьные Типы данных

Типы данных Макс. размер Байт
TINYTEXT или TINYBLOB 2^8-1 255
TEXT или BLOB 2^16-1 (64K-1) 65535
MEDIUMTEXT или MEDIUMBLOB 2^24-1 (16M-1) 16777215
LONGBLOB 2^32-1 (4G-1) 4294967295

Типы данных Oracle

Типы данных Oracle разделяются на следующие группы:

  • СНAR – фиксированные текстовые строки до 2000 байт. Значение типа CHAR дополняется до указанной длины пробелами.
  • VARCHAR 2 — текстовые строки переменной длины до 4000 байт.
  • NUMBER — числовые данные.
  • DECIMAL — числовые данные
  • DATE — используется для хранения дат.
  • RAW — используется для хранения двоичных данных до 2000 байт.
  • LONG — используется для хранения текстовых данных длиной до 2 ГБ
  • LONG RAW — используется для хранения двоичных данных до 2 ГБ
  • ROWID — используется для хранения идентификаторов ROWID базы данных Oracle в специальном формате (адреса строк таблицы).
  • BLOB — сохраняется до 4 ГБ двоичных данных. Данные этого типа хранятся вне таблицы, а в таблице Oracle находятся лишь указатели на объекты
  • CLOB, NCLOB — сохраняется до 4 ГБ текстовых данных. NCLOB – это тип данных NLS большой фиксированной длины (NLS означает National Language Set – набор для национальных языков – и используется для работы в Oracle на языках, отличных от английского. В английском для хранения одного символа нужен 1 байт, а в некоторых языках мира с наборами больших символов (японском, китайском, корейском), языках, где текст читается справа налево (арабский, иврит) для хранения одного символа требуется несколько байт). Данные этого типа хранятся вне таблицы, а в таблице находятся лишь указатели на объекты.
  • BFILE — сохраняется до 4 ГБ неструктурированных данных, причем в файлах операционной системы (внешние файлы).

ANSI SQL стандарт распознает только текст и число, в то время как большинство коммерческих программ используют другие специальные типы, такие как DATЕ и TIME — фактически почти стандартные типы. Некоторые пакеты также поддерживают такие типы, как, например, MONEY и BINARY. Типы данных, распознаваемые с помощью ANSI, состоят из строк символов и различных типов чисел, которые могут классифицироваться как точные числа и приблизительные числа.

CHARACTER (length) определяет спецификацию строк символов, где length задает длину строк заданного типа. Значения этого типа должны быть заключены в одиночные кавычки. Большинство реализаций поддерживают строки переменной длины для типов данных VARCHAR и LONG VARCHAR (или просто LONG).

В то время, как поле типа CHAR всегда может распределить память для максимального числа символов, которое может сохраняться в поле, поле VARCHAR при любом количестве символов может распределить только определенное количество памяти, чтобы сохранить фактическое содержание поля, хотя SQL может установить некоторое дополнительное пространство памяти, чтобы следить за текущей длиной поля. Поле VARCHAR может быть любой длины, включая реализационно-определяемый максимум. Этот максимум может меняться от 254 до 2048 символов для VARCHAR и до 16000 символов для LONG. LONG обычно используется для текста пояснительного характера или для данных, которые не могут легко сжиматься в простые значения полей; VARCHAR может использоваться для любой текстовой строки, чья длина может меняться.

Извлечение и модифицирование полей VARCHAR — более сложный, и, следовательно, более медленный процесс, чем извлечение и модифицирование полей CHAR. Кроме того, некоторое количество памяти VARCHAR, остается всегда неиспользованной для гарантии вмещения всей длины строки. При использовании таких типов следует предусматривать возможность полей к объединению с другими полями.

Точные числовые типы — это числа, с десятичной точкой или без десятичной точки, которые могут представляться в виде [+|-][.] и специфицироваться как:

DECIMAL (precision [, scale]) — аргумент размера имеет две части: точность и масштаб. Масштаб не может превышать точность. Точность указывает сколько значащих цифр имеет число. Масштаб указывает максимальное число цифр справа от десятичной точки. Масштаб = нулю делает поле эквивалентом целого числа.

NUMERIC (precision [, scale]) — такое же как DECIMAL за исключением того, что максимальное десятичное не может превышать аргумента точности

INTEGER — число без десятичной точки. Эквивалентно DECIMAL, но без цифр справа от десятичной точки, т.е. с масштабом равным 0. Аргумент размера не используется (он автоматически устанавливается в реализационно-зависимое значение).

SMALLINT — такое же как INTEGER, за исключением того, что, в зависимости от реализации, размер по умолчанию может ( или не может ) быть меньше чем INTEGER.

Приблизительные числовые типы — это числа в показательной (экспоненциальной по основанию 10) записи, представляемые как Е и специфицирущиеся следующим образом:

FLOAT [(precision)] — число с плавающей запятой. Аргумент размера состоит из одного числа, определяющего минимальную точность.

REAL — такое же как FLOAT, за исключением того, что никакого аргумента размера не используется. Точность устанавливается реализационно-зависимой по умолчанию.

DOUBLE PRECISION — такое же как REAL, за исключением того, что реализационно-определяемая точность для DOUBLE PRECISION должна превышать реализационно-определяемую точность REAL.

Типы данных Access

Типы данных Access разделяются на следующие группы:

  • Текстовый – максимально 255 байтов.
  • Мемо — до 64000 байтов.
  • Числовой — 1,2,4 или 8 байтов.Для числового типа размер поля м.б. следующим:
    • байт — целые числа от -0 до 255, занимает при хранении 1 байт
    • целое — целые числа от -32768 до 32767, занимает 2 байта
    • длинное целое — целые числа от -2147483648 до 2147483647, занимает 4 байта
    • с плавающей точкой — числа с точностью до 6 знаков от –3,4*1038 до 3,4*1038, занимает 4 байта
    • с плавающей точкой — числа с точностью от –1,797*10308 до 1,797*10308, занимает 8 байт

    Типы данных SQL Server

    Microsoft SQL Server поддерживает большинство типов данных SQL 2003. Также SQL Server поддерживает дополнительные типы данных, используемые для однозначной идентификации строк данных в таблице и на многих серверах, например UNIQUEIDENTIFIER , что соответствует аппаратной философии «роста в ширину», исповедуемой Microsoft (т. е. внедрение базы на множестве серверов на платформах Intel), вместо «роста в высоту» (т. е. внедрение на одном огромном мощном UNIX-сервере или Windows Data Center Server).

    Типы данных, используемые в SQL Server:

    • BIGINT (тип данных SQL2003: B1GINT )
      Хранит целые числа со знаком и без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Занимает 8 байт. См. тип INT , где указаны правила свойства IDENTITY , также применимые к типу BIGINT .
    • BINARY[(n)] (тип данных SQL2003: BLOB )
      Хранит двоичное значение фиксированной длины от 1 до 8000 байт. Значение типа BINARY занимает п + 4 байта.
    • BIT (тип данных SQL2003: BOOLEAN )
      Хранит значения 1, 0 или NULL, которое обозначает «unknown». В одном байте может храниться до 8 значений из столбцов типа BIT таблицы. В еще одном байте можно разместить дополнительные 8 значений типа BIT Столбцы типа BIT нельзя индексировать.
    • CHAR[(n)] , CHARACTER[(n)] (тип данных SQL2003: CHARACTER[(n)] )
      Хранит символьные данные фиксированной длины от 1 до 8000 символов. Все неиспользованное место по умолчанию заполняется пробелами. (Автоматическое заполнение пробелами можно отключить.) Тип занимает n байт.
    • CURSOR (тип данных SQL2003: отсутствует )
      Специальный тип данных, используемый для описания курсора в форме переменной или параметра хранимой процедуры OUTPUT. Тип нельзя использовать в инструкции CREATE TABLE. Тип CURSOR может принимать значение NULL.
    • DATETIME (тип данных SQL2003: TIMESTAMP)
      Хранит значение даты и времени в диапазоне с 01-01-1753 00:00:00 до 31-12-9999 23:59:59. Для хранения требуется 8 байт.
    • DECIMAL (p. s) , DEC (p. s) , NUMERIC (p, s) (тип данных SQL2003 : DECIMAL (p, s) , NUMERIC (p. s) )
      Хранит десятичные дроби длиной до 38 цифр. Значения р и s определяют, соответственно, точность и масштаб. Масштаб по умолчанию равен 0. Занимаемое значением место определяется используемой точностью.
      При точности 1-9 используется 5 байт.
      При точности 10-19 используется 9 байт.
      При точности 20-28 используется 13 байт.
      При точности 29-39 используется 17 байт.
      См. тип INT, где указаны правила свойства IDENTITY, также применимые к типу DECIMAL .
    • DOUBLE PRECISION (тип данных SQL2003: отсутствует )
      Синоним FLOAT(53) .
    • FLOAT[(n)] (тип данных SQL2003 : FLOAT , FLOAT (n) )
      Хранит значения с плавающей точкой в диапазоне от-1.79Е + 308 до 1.79Е + 308. Точность, определяемая параметром и, может изменяться в пределах от 1 до 53. Для хранения 7 цифр (n — от 1 до 24) требуется 4 байта. Значения, превышающие 7 цифр, занимают 8 байт.
    • IMAGE (тип данных SQL2003 : BLOB )
      Хранит двоичное значение переменной длины до 2 147 483 647 байт. Этот тип данных часто используется для хранения графики, звука и файлов, таких, как документы MS Word и электронные таблицы MS Excel. Значениями типа IMAGE нельзя свободно манипулировать. Столбцы типа IMAGE и TEXT имеют множество ограничений на способы использования. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу IMAGE.
    • INT [IDENTITY [(seed, increment)] (тип данных SQL2003 : INTEGER )
      Хранит целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает 4 байта. Все целочисленные типы данных, а также типы, хранящие десятичные дроби, поддерживают свойство IDENTITY, identity — это автоматически инкрементируемый идентификатор строки. Обращайтесь к разделу «Инструкция CREATE/ALTER TABLE » главы 3.
    • MONEY (тип данных SQL2003: отсутствует )
      Хранит денежные значения в диапазоне от -922337203685477.5808 до 922337203685477.5807. Значение занимает 8 байт.
    • NCHAR(n) , NATIONAL CHAR(n) , NATIONAL CHARACTER(n) (тип данных SQL2003 : NATIONAL СНАRACTER(n) )
      Хранит данные формата UNICODE фиксированной длины до 4000 символов. Для хранения требуется n*2 байт.
    • NTEXT , NATIONAL TEXT (тип данных SQL2003: NCLOB )
      Хранит фрагменты текста в формате UNICODE длиной до 1 073 741 823 символа. См. описание типа TEXT, где приведен список команд и функций, которые применимы и к типу NTEXT
    • NUMERIC(p, s) (тип данных SQL2003: DECIMAL (p, s))
      Синоним типа DECIMAL. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY.
    • NVARCHAR(n) , NATIONAL CHAR VARYING(n) , NATIONAL CHARACTER VARYING(n) (тип данных SQL2003: NATIONAL CHARACTER VARYING(n))
      Хранит UNICODE-данные переменной длины до 4000 символов.
      Занимаемое место вычисляется как удвоенное значение длины всех символов, вставленных в поле (число символов * 2).
      В SQL Server системный параметр SET ANSI_PADDINGX для полей NCHAR и NVARCHAR всегда установлен (ON).
    • REAL , FLOAT(24) (тип данных SQL2003: REAL )
      Хранит значения с плавающей точкой в диапазоне -3.40Е+38 до 3.40Е+38. Зани¬мает 4 байта. Тип REAL функционально эквивалентен типу FLOAT(24).
    • ROWVERSION (тип данных SQL2003: отсутствует )
      Уникальное число, хранимое в базе данных, которое обновляется всякий раз, когда обновляется строка, В более ранних версиях называется TIMESTAMP.
    • SMALLDATETIME (тип данных SQL2003: отсутствует )
      Хранит дату и время в диапазоне от ’01-01-1900 00:00′ до ’06-06-2079 23:59′ с точностью до минуты. (Минуты округляются до меньшего значения, если значе-ние секунд 29.998 и менее, в противном случае они округляются до большего значения.) Значение занимает 4 байта.
    • SMALLINT (тип данных SQL2003: SMALLINT )
      Хранит целые числа со знаком или без знака в диапазоне от -32 768 до 32 767. Занимает 2 байта. См. описание типа INT, где приведены правила, относящиеся к свойству IDENTITY, которые также применимы и к этому типу.
    • SMALLMONEY (тип данных SQL2003: отсутствует)
      Хранит денежные значения в диапазоне от 214748.3648 до -214748.3647. Значе-ния занимают 4 байта.
    • SQLVARIANT (тип данных SQL2003: отсутствует )
      Хранит значения, относящиеся к другим поддерживаемым SQL Server типам данных, за исключением типов TEXT, NTEXT, ROWVERSION и других значений типа SQL VARIANT. Может хранить до 8016 байт данных, поддерживаются значения NULL и DEFAULT. Тип SQL VARIANT используется в столбцах, параметрах, переменных и возвращаемых функциями и хранимыми процедур, ми значениях.
    • TABLE (тип данных SQL2003: отсутствует )
      Специальный тип, хранящий получившийся в результате работы последнего про¬цесса набор данных. Используется исключительно для процедурной обработки и не может применяться в инструкциях CREATE TABLE. Этот тип данных умень¬шает необходимость создания временных таблиц во многих приложениях. Может уменьшить необходимость перекомпиляций процедур, ускоряя, таким образом, выполнение хранимых процедур и пользовательских функций.
    • TEXT (тип данных SQL2003: CLOB )
      Хранит очень большие фрагменты текста длиной до 2 147 483 647 символов. Значениями типа ТЕХТн IMAGE часто гораздо труднее манипулировать, чем, скажем, значениями типа VARCHAR. Например, нельзя создавать индекс по столбцу типа TEXT или IMAGE. Значениями типа TEXT можно манипулировать при помощи функций DATALENGTH, PATINDEX, SUBSTRING, TEXTPTR и ТЕХTVALID, а также команд READTEXT,SET TEXTSIZE, UPDATETEXT и WRITETEXT.
    • TIMESTAMP (тип данных SQL2003: TIMESTAMP )
      Хранит автоматически генерируемое двоичное число, обеспечивающее уникальность в текущей базе данных и, следовательно, отличающееся от типа данных TIMESTAMP стандарта ANSI. Тип TIMESTAMP занимает 8 байт. В настоящее время вместо TIMESTAMP для однозначной идентификации строк лучше применять значения типа ROWVERSION.
    • TINYINT
      Хранит целые числа без знака в диапазоне от 0 до 255 и занимает 1 байт. См. описание типа INT , где приведены правила, относящиеся к свойству IDENTITY , которые также применимы и к этому типу.
    • UNIQUEIDENTIFIER (тип данных SQL2003: отсутствует )
      Представляет собой значение, уникальное для всех баз данных и всех серверов. Представлено в виде хххххххх-хххх-хххх-хххх-хххххххххххх, в котором каждый «х» представляет собой шестнадцатеричное число в диапазоне 0-9 или а — f. Единственными операциями, которые можно производить над значениями этого типа, являются сравнение и проверка на NULL. В столбцах этого типа можно использо¬вать ограничения и свойства, за исключением свойства IDENTITY.
    • VARBINARY[(n)] (тип данных SQL2003: BLOB )
      Представляет собой двоичное значение переменной длины, до 8000 байт. Занимаемое место соответствует размеру вставленных данных плюс 4 байта.
    • VARCHARf(n)] , CHAR VARYING [(n)] , CHARACTER VARYING [(n)] (тип данных SQL2003: CHARACTER VARYING (n) )
      Хранит символьные данные фиксированной длины размером от 1 до 8000 символов. Занимаемое место равно реальному размеру введенного значения в байтах, а не значению n.

    Типы данных PostgreSQL

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

    • BJGSERJAL
    • BIT (тип данных SQL2003: BIT )
      Битовая строка фиксированной длины.
    • BIT VARYING(n) varbit(n) (тип данных SQL2003: BIT VARYING )
      Обозначает битовую строку переменной длины в n бит.
    • BOOL , BOOLEAN (тип данных SQL2003: BOOLEAN )
      Хранит логическое булево значение (true/false/unknown). Рекомендуемыми значе-ниями являются ключевые слова TRUE и FALSE, хотя PostgreSQL допускает применение нескольких литеральных значений для «true»: TRUE, t, true, у, yes и 1. Допус¬тимыми значениями для «false» являются: FALSE, f, false, n, no и 0.
    • BOX ((xl, у I), (x2, y2)) (тип данных SQL2003: отсутствует )
      Хранит значения, определяющие прямоугольную область на плоскости. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)), что соответствует противоположным углам прямоугольника (правый верхний и левый нижний соот-ветственно). Внешние скобки являются необязательными.
    • BYTEA (тип данных SQL2003: BINARY LARGE OBJECT )
      Сырые, двоичные данные, используемые, например, для хранения графики, звука и документов. Для хранения этого типа требуется 4 байта плюс реальный размер битовой строки.
    • CHAR(n) , СНАRA CTER(n) (тип данных SQL2003: CHARACTER(n) )
      Содержит символьную строку фиксированной длины, дополняемую пробелами до длины n. Попытка вставить значение, превышающее по длине n, приводит к ошибке (если только лишние символы не представляют собой пробелы, которые в таком случае обрезаются так, чтобы длина составила п символов).
    • CIDR(x.x.x.xZy) (тип данных SQL2003: отсутствует)
      Описывает адрес сети или хоста в формате версии 4 протокола IP Адрес занимает 12 байт. Допустимыми значениями являются любые допускаемые протоколом IPv4 сетевые адреса. В типе CIDR данные представлены в форме х.х.х.х/у, где х.х.х.х — IP-адрес, а у — количество бит сетевой маски. В CIDR не допускается использование ненулевых битов справа от нулевого бита сетевой маски.
    • CIRCLE х, у, r (тип данных SQL2003: отсутствует)
      Описывает окружность на плоскости. Значения занимаю!’ 24 байта и представлены в форме х, у, r. Значения* и у представляют собой координаты центра окружности, а r — длину ее радиуса. Значения х, у и r при желании можно ограничить скобками или фигурными скобками.
    • DATE (тип данных SQL2003: DATE)
      Хранит календарную дату (год, день и месяц) без времени суток. Занимает 4 байта. Даты должны быть в диапазоне от 4713 до п. э. до 32767 и. э. Предел разрешения для типа DATE, естественно, один день.
    • DATETIME (тип данных SQL2003: T1MESTAMP)
      Хранит календарную дату с указанием времени суток.
    • DECIMAL [(p, s)], NUMERIC [(p. s)] (тип данных SQL2003: DECIMAL (PRECISION SCALE), NUMERIC (x, p))
      Хранит точные числовые значения с точностью (р), равной 9, и масштабом (s), равным нулю, без верхнего предела.
    • FLOAT4, REAL (тип данных SQL2003: FLOAT(p))
      Хранит значения с плавающей точкой с точностью, равной 8 или менее, и 6 знаками после занятой.
    • FLOAT8, DOUBLE PRECISION (тип данных SQL2003: FLOAT(p), 7 < = р < 16) Хранит значения с плавающей точкой с точностью, равной 16 или менее, и 15 знаками после запятой.
    • INET (х.х.х.х/у)
      Хранит адрес сети или хоста в формате версии 4 протокола IP. Адрес занимает 12 байт. Допустимыми значениями являются любые допускаемые протоколом IPv4 сетевые адреса, х.х.х.х — IP-адрес, у — количество бит сетевой маски. По умолчанию сетевая маска равна 32. В отличие от CIDR, в INET допускается использование ненулевых битов справа от сетевой маски.
    • SMALLINT (тип данных SQL2003: SMALLINT)
      Хранит двухбайтные целые числа со знаком и без знака в диапазоне от -32 768 до 32 767. Синоним — INT72.
    • INTEGER (тип данных SQL2003: INTEGER)
      Хранит 4-байтпые целые числа со знаком или без знака в диапазоне от -2 147 483 648 до 2 147 483 647. Синоним — 1NT4.
    • INT8 (тип данных SQL2003: отсутствует)
      Хранит 8-байтные целые числа со знаком или без знака в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.
    • INTERVAL(p) (тип данных SQL2003: отсутствует)
      Хранит общеупотребимые значения интервалов времени в диапазоне от -178 000 000 до 178 000 000 лет. Занимает 12 байт. Самым низким разрешением типа INTERVAL является микросекунда. Этот тип хранения даты отличается от стандарта ANSI, который требует указывать спецификатор интервала, например INTERVAL YEAR ТО MONTH.
    • LINE ((xl, у I), (x2, y2)) (тип данных SQL2003: отсутствует)
      Хранит информацию о прямой линии на плоскости, без конечных точек. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)), что обозначает начальную и конечную точку линии. Скобки в синтаксисе типа LINE являются необязательными.
    • LSEG ((xl, yl), (х2, у2)) (тип данных SQL2003: отсутствует)
      Хранит отрезок прямой линии (line segment, LSEG) на плоскости, с конечными точками. Значения занимают 32 байта и представлены в виде ((xl, yl), (х2, у2)). Скобки в синтаксисе типа LSEG являются необязательными. Для интересующих-ся: «отрезок» — это то, что большинство людей обычно называют линией. Например, линии на игровом поле в действительности являются отрезками.
    • MACADDR (тип данных SQL2003: отсутствует)
      Может хранить значение МАС-адреса сетевой карты компьютера. Занимает 6 байт.
      Тип MACADDR допускает несколько форм адреса, соответствующих промышленным
      стандартам, например:
      08002В:010203
      08002В-010203
      0800.2В01.0203
      08-00-2В-01-02-03
      08:00:2В:01:02:03
    • MONEY, DECIMAL(9,2) (тип данных SQL2003: отсутствует)
      Хранит денежные значения в формате США в диапазоне от -21474836.48 до 21474836.47.
    • NUMERIC [(p, s)], DECIMAL[(p, s)] (тип данных SQL2003: отсутствует)
      Хранит точные числовые данные с точностью (р) и масштабом (s).
    • OID (тип данных SQL2003: отсутствует)
      Хранит уникальные идентификаторы объектов.
    • PATH ((xl, у I), … п), Path ((xl, yl), … n) (тип данных SQL2003: отсутствует)
      Описывает открытый или закрытый геометрический контур на плоскости. Значения представлены в виде ((xl, yl), … п) и занимают 4 + 32и байт. Каждая пара значений (х, у) соответствует точке контура. Контуры бывают либо открытыми, когда первая и последняя точка не совпадают, или закрытыми, когда первая и послед¬няя точка совпадают. Для обозначения закрытых контуров выражение заключают в круглые скобки, а для обозначения открытых — в квадратные.
    • POINT (х, у) (тип данных SQL2003: отсутствует)
      Хранит значение, описывающее геометрическую точку на плоскости. Занимает 16 байт. Значения представлены в виде (х, у). Точка является основой других двухмерных пространственных типов данных, поддерживаемых в PostgreSQL. Скобки в синтаксисе этого типа являются необязательными.
    • POLYGONE ((x1,y1), … n) (тип данных SQL2003: отсутствует)
      Хранит значение, описывающее закрытый геометрический контур на плоскости. Занимает 4 + 32n байт. Значения представлены в виде ((xl, yl), … n). По сути тип POLYGONE эквивалентен типу, используемому для хранения закрытого контура.
    • SERIAL, SER1AL4 (тип данных SQL2003: отсутствует)
      Хранит автоматически инкрементируемое, уникальное целое значение ID, приме¬няемое для индексирования и перекрестных ссылок. Этот тип хранит до 4 байт данных (диапазон чисел от 1 до 2 147 483 647). Таблицы, определенные с этим типом данных, нельзя удалять напрямую. Сначала нужно подать команду DROP SEQUENCE, а только после этого подавать команду DROP TABLE.
    • SER1AL8, BIGSERIAL (тип данных SQL2003: отсутствует)
      Хранит автоматически инкрементируемое, уникальное целое значение ID, применяемое для индексирования и перекрестных ссылок. Этот тип хранит до 8 байт данных (диапазон чисел от 1 до 9 223 372 036 854 775 807). Таблицы, определенные с этим типом данных, нельзя удалять напрямую. Сначала нужно подать команду DROP SEQUENCE, а только после этого подавать команду DROP TABLE.
    • TEXT (тип данных SQL2003: CLOB)
      Хранит большой массив символьных строк переменной длины до 1 гигабайта. PostgreSQL автоматически сжимает строки типа TEXT, поэтому место, занимаемое на диске, может быть меньше, чем размер строк.
    • TIME [(p)] [WITHOUT TIMEZONE \ WITH TIME ZONE] (тип данных SQL2003: TIME) Хранит время суток либо без учета часового пояса (используется 8 байт), либо с учетом часового пояса, в котором находится сервер базы данных (используется 12 байт). Допустимый диапазон значений: 00:00:00.00 — 23:59:59.99. Наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
    • TIMESPAN (тип данных SQL2003: отсутствует)
      Хранит значение, представляющее собой конкретный промежуток времени. Наи¬более похожим на тип TIMESPAN в стандарте ANSI является тип INTERVAL.
    • TIMESTAMP [(р)] [WITHOUT TIMEZONE \ WITH TIMEZONE] (тип данных SQL2003: TIMESTAMP [WITH TIMEZONE I WITHOUT TIMEZONE])
      Хранил дату и время с учетом и без учета часового пояса сервера базы данных. Допустимый диапазон значений — от 4713 до н. э. до 1 465 001 н. э. Одно значение типа TIMESTAMP занимает 8 байт. Самое наименьшее значение — 1 микросекунда. Заметьте, что в большинстве систем UNIX информация о часовом поясе доступна только для дат с 1902 по 2038 год.
    • TIMETZ (тип данных SQL2003: TIME WITH TIMEZONE)
      Хранит значение времени суток с учетом часового пояса.
    • VARCHAR(n) , CHARACTER VARYLNG(n) (тип данных SQL2003: CHARACTER VARYING(n))
      Хранит символьные строки переменной длины длиной до п. Заключительные пробелы не сохраняются.

    Java/Типы данных

    В Java есть 8 примитивных типов, которые делят на 4 группы, вот они:

    1. Целые числа — byte, short, int, long
    2. Числа с плавающей точкой (иначе вещественные) — float, double
    3. Логический — boolean
    4. Символьный — char

    Целочисленные типы править

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

    Тип Размер (бит) Диапазон
    byte 8 бит от -128 до 127
    short 16 бит от -32768 до 32767
    char 16 бит беззнаковое целое число, представляющее собой символ UTF-16 (буквы и цифры)
    int 32 бит от -2147483648 до 2147483647
    long 64 бит от -9223372036854775808L до 9223372036854775807L

    Пример использования целочисленных типов:

    public class IntegralTypes  public static void main(String[] args)  byte b = 216; // Вот тут будет ошибка, т.к. у нас диапазон от -128 до 127! short s = 1123; int i = 64536; long l = 2147483648L; // Постфикс l или L обозначает литералы типа long System.out.println(i); System.out.println(b); System.out.println(s); System.out.println(l); > > 

    Символы тоже относят к целочисленным типам из-за особенностей представления в памяти и традиций.

    public class Characters  public static void main(String[] args)  char a = 'a', b, c = 'c'; b = (char) ((a + c) / 2); // Можно складывать, вычитать, делить и умножать // Но из-за особенностей арифметики Java результат приходится приводить к типу char явно System.out.println(b); // Выведет символ 'b' > > 

    Типы с плавающей точкой править

    Тип Размер (бит) Диапазон
    float 32 от 1.4e-45f до 3.4e+38f
    double 64 от 4.9e-324 до 1.7e+308
    public class FloatingPointTypes  public static void main(String[] args)  double a, b = 4.12; a = 22.1 + b; float pi = 3.14f; // При использовании типа float требуется указывать суффикс f или F // так как без них типом литерала будет считаться double float anotherPi = (float) 3.14; // Можно привести явно double c = 27; double d = pi * c; System.out.println(d); > > 

    Логический тип править

    Тип Размер (бит) Значение
    boolean 8 (в массивах), 32 (не в массивах используется int) true (истина) или false (ложь)

    В стандартной реализации Sun JVM и Oracle HotSpot JVM тип boolean занимает 4 байта (32 бита), как и тип int. Однако, в определенных версиях JVM имеются реализации, где в массиве boolean каждое значение занимает по 1-му байту.

    Ссылочные править

    Ссылочные типы — это все остальные типы: классы, перечисления и интерфейсы, например, объявленные в стандартной библиотеке Java, а также массивы.

    Строки править

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

    public class Strings  public static void main(String[] args)  String a = "Hello", b = "World"; System.out.println(a + " " + b); // Здесь + означает объединение (конкатенацию) строк // Пробел не вставляется автоматически // Строки конкатенируются слева направо, надо помнить это когда соединяешь строку и примитив String c = 2 + 2 + ""; // "4" String d = "" + 2 + 2; // "22" d = "" + (2 + 2); // а теперь d тоже "4" String foo = "a string"; String bar = "a string"; // bar будет указывать на тот же объект что и foo String baz = new String("a string"); // Чтобы гарантированно создать новую строку надо вызвать конструктор System.out.println("foo == bar ? " + (foo == bar)); // == сравнивает ссылки на объекты System.out.println("foo равен bar ? " + (foo.equals(bar))); // Метод equals служит для проверки двух объектов на равенство System.out.println("foo == baz ? " + (foo == baz)); System.out.println("foo равен baz ? " + (foo.equals(baz))); > > 

    Эта программа выведет:
    Hello World
    foo == bar ? true
    foo равен bar ? true
    foo == baz ? false
    foo равен baz ? true

    Обертки править

    Если требуется создать ссылку на один из примитивных типов данных, необходимо использовать соответствующий класс-обертку. Также в таких классах есть некоторые полезные методы и константы, например минимальное значение типа int можно узнать использовав константу Integer.MIN_VALUE. Оборачивание примитива в объект называется упаковкой (boxing), а обратный процесс распаковкой (unboxing).

    Тип Класс-обертка
    byte Byte
    short Short
    int Integer
    long Long
    char Character
    float Float
    double Double
    boolean Boolean
    int i; Integer boxed; // Обычное создание объекта boxed = new Integer(i); // Фабричный метод boxed = Integer.valueOf(i); // Автоматическая упаковка, компилятор просто вставит вызов Integer.valueOf boxed = i; 

    Рекомендуется использовать valueOf, он может быть быстрее и использовать меньше памяти потому что применяет кэширование, а конструктор всегда создает новый объект.

    Получить примитив из объекта-обертки можно методом Value.

    Integer boxed; int i; // Явная распаковка i = boxed.intValue(); // Автоматическая распаковка i = boxed; 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *