II) Вопросы по языку sql
Основные типы данных SQL Oracle
Тип данных |
Описание |
Длина столбца и значение по умолчанию o |
CHAR (size) |
Строковые данные фиксированной длины в size байт |
Длина фиксирована для всех строк таблицы (с учетом дописываемых справа пробелов). Максимально допустимый размер - 2000 байт. Размер по умолчанию – 1 байт. |
VARCHAR2 (size) |
Переменными данными длиной.
|
Переменная для каждой строки, вплоть до 4000 байт на каждую строку. Максимальный размер должен быть определен. |
NUMBER (p,s) |
Числовое данное переменной длины. Максимальное значение точности p и/или масштаба равно 38 |
Длина переменная для каждой стоки. Для такого столбца максимально необходимое пространство равно 21 байт |
DATE |
Данное фиксированной длины, содержащее дату и время в диапазоне от Jan. 1, 4712 B.C.E. до Dec. 31, 4712 C.E. |
Длина фиксирована и равна 7 байт для каждой стоки в таблице. Формат по умолчанию (например, DD-MON-YY) определяется параметром NLS_DATE_FORMAT |
BLOB |
Неструктурированные бинарные данные |
До 232 - 1 байт или 4 гигабайт |
RAW (size) |
Бинарные данные переменной длины |
Каждая строка имеет переменную длину, не превышающую 2000 байт. Максимальные размер size должен быть указан. Используется для совместимости с предыдущими версиями Oracle. |
LONG |
Строковые данные переменной длины |
до 2GB |
LONG RAW |
Бинарные данные переменной длины |
Каждая строка имеет переменную длину, не превышающую 231 - 1 байт или 2 гигабайта. Используется для совместимости с предыдущими версиями Oracle. |
ROWID |
Бинарные данные, представляющие адрес строки. |
Фиксированной длины в 10 байт (расширенный ROWID) или 6 байт (ограниченный ROWID) для каждой строки таблицы |
Язык SQL Oracle. Типы CHAR и VARCHAR2
Тип данных |
Описание |
Длина столбца и значение по умолчанию o |
CHAR (size) |
Строковые данные фиксированной длины в size байт |
Длина фиксирована для всех строк таблицы (с учетом дописываемых справа пробелов). Максимально допустимый размер - 2000 байт. Размер по умолчанию – 1 байт. |
VARCHAR2 (size) |
Переменными данными длиной.
|
Переменная для каждой строки, вплоть до 4000 байт на каждую строку. Максимальный размер должен быть определен. |
Oracle сравнивает значения типа CHAR с использованием семантику сравнения с дополнением пробелами. Если два значения имеют различную длину, то Oracle дополняет пробелами более короткое значение пробелами до размера более длинного значения, и затем сравнивает их посимвольно до первого отличающегося символа. То значение, которое имеет отличающийся символ большим по величине, рассматривается как большим значением. Если два значения отличаются только количеством пробелов в конце, то они рассматриваются равными.
Oracle сравнивает значения типа VARCHAR2 используя семантику сравнения без дополнения пробелами. Два значения рассматриваются равными, если они равны по длине и содержат одинаковые символы. Oracle сравнивает значения посимвольно до первого отличающегося символа. То значение, которое имеет отличающийся символ большим по величине, рассматривается как большим значением.
Язык SQL Oracle. Тип данных NUMBER
Тип данных |
Описание |
Длина столбца и значение по умолчанию o |
NUMBER (p,s) |
Числовое данное переменной длины. Максимальное значение точности p и/или масштаба равно 38 |
Длина переменная для каждой стоки. Для такого столбца максимально необходимое пространство равно 21 байт |
Используйте тип NUMBER для хранения действительных чисел в формате с фиксированной или плавающей точкой. Гарантируется, что числа в этом формате будут совместимыми на всех платформах Oracle. Допустимая точность - 38 десятичных цифр. В столбце типа NUMBER можно запоминать положительные и отрицательные числа в диапазоне от 1 x 10-130 до 9.99...x10125, а также нули.
Для числовых столбцов вы можете специфицировать столбец как число с плавающей запятой следующим образом:
Column_name NUMBER
Вы можете указать точность – precision - (общее количество десятичных знаков в числе) и масштаб – scale - (количество десятичных знаков справа от десятичной точки) следующим образом:
Column_name NUMBER (<precision>, <scale>)
Например: число 123.45 имеет точность 5 и масштаб 2.
Для указания чисел специального типа используйте следующие возможности:
Целое число – NUMBER(p);
Число с фиксированной точкой – NUMBER(p,s)
Число с плавающей точкой - NUMBER
Точность и масштаб не являются обязательными, однако они позволяют проводить дополнительную проверку данных при их вводе. Если точность не определена, то значение столбца запоминается в том виде, как оно было указано. В табице ниже приводятся примеры запоминания данных при различных значениях точности и масштаба.
Исходные данные |
Формат запоминания |
Сохраняются так |
7,456,123.89 |
NUMBER |
7456123.89 |
7,456,123.89 |
NUMBER (9) |
7456124 |
7,456,123.89 |
NUMBER (9,2) |
7456123.89 |
7,456,123.89 |
NUMBER (9,1) |
7456123.9 |
7,456,123.89 |
NUMBER (6) |
(не допустимо, так как превышена точность) |
7,456,123.89 |
NUMBER (7, -2) |
7456100 |
Язык SQL Oracle. Тип данных DATE.
Используйте тип данных DATE для запоминания даты и времени. Тип DATE запоминает столетие, год, месяц, день, часы, минуты и секунды.
Oracle использует свой внутренний формат для хранения дат. Данные типа даты запоминаются в полях фиксированной длины в 7 байт, каждый байт используется для хранения столетия, года, месяца, дня, часа, минуты и секунды соответственно.
При вводе и выводе даты стандартным форматом даты по умолчанию является DD-MON-YY. Например:
'13-NOV-92'
Для изменения этого формата по умолчанию на другой используйте параметр NLS_DATE_FORMAT. Для изменения формата по умолчанию даты на период сеанса работы используйте предложение ALTER SESSION. Для ввода даты, которая отличается от текущего формата по умолчанию воспользуйтесь функцией TO_DATE с соответствующей маской формата, например:
TO_DATE ('November 13, 1992', 'MONTH DD, YYYY')
Если используется формат DD-MON-YY, то YY указывает на год в 20-м столетии (например, 31-DEC-92 является датой December 31, 1992). Если необходимо представить год с указанием столетия, то используйте соответствующую маску формата, например, как это показано на примере выше.
Время запоминается в формате 24 часов: #HH:MM:SS. По умолчанию время в поле даты равно 12:00:00 A.M. если временная компонента даты не была указана. Если вводится только время, то дата по умолчанию предполагается равной первому дню текущего месяца. Для ввода только времени используйте функцию TO_DATE с маской формата, указывающей на присутствии только времени, например::
INSERT INTO EventTime (name, EvTime) VALUES
('START',TO_DATE('10:56',' HH:MI'));
Стандарт SQL предполагает еще одну форму задания литерала типа даты (то есть собственно даты без времени), который также поддерживается в Oracle. Этот формат следующий:
DATE 'YYYY-MM-DD'
Где:
DATE – ключевое слово
YYYY-MM-DD – дата в формате:
YYYY – четыре цифры года
ММ – две цифры месяца
DD – две цифры дня
- – символ «минус»
Примеры: DATE '1968-01-17', DATE '2005-07-23'