Типы данных в СУБД Oracle.ppt
- Количество слайдов: 24
Типы данных в СУБД Oracle Скалярные типы данных Композитные (составные) типы данных
Строковый тип данных VARCHAR 2 ( n [ BYTE | CHAR ] ) (тип данных SQL 2003: CHARACTER VARYING(n)) Хранит символьные строки переменной длины до 4000 байт (определяется параметром): q атрибут BYTE – размер измеряется в байтах. q атрибут CHAR – размер измеряется в символах. Если выбрано CHAR, Oracle должна провести внутреннее преобразование длины в определенное количество байт, соответствующее ограничению в 4000 байт. Oracle не рекомендует использовать синоним этого типа – VARCHAR (планируется изменить его назначение).
Числовой тип данных NUMBER (p, s), NUMERIC (p, s), DECIMAL (p, s) ( тип данных SQL 2003: NUMERIC(p. s) ) Хранит числа как с фиксированной, так и с плавающей запятой. Существует в трех вариантах: q NUMBER – для хранения чисел «самого общего вида» ; q NUMBER (p) – для хранения целых с максимальной точностью мантиссы p десятичных позиций; q NUMBER (p, s) – для хранения чисел «с фиксированной десятичной точкой» .
Числовой тип данных NUMBER. Точность (Precision) – это максимально допустимое число значащих десятичных цифр. Если этот параметр определен, то точность может быть задана в диапазоне от 1 до 38 десятичных цифр. Если сделана попытка сохранить в БД число с большим количеством цифр, чем указанная точность, возникает ошибка ORA-01438. Если точность не определена, сохраняемые числа усекаются по значению максимальной точности, обеспеченной данной реализацией.
Числовой тип данных NUMBER. Масштаб (Scale) – определяет позицию наименьшей значащей цифры. Если параметр определен, то он должен быть в диапазоне от -84 до 127 (от 84 цифр слева (отрицательный масштаб) до 127 цифр справа от десятичной точки). Часть числа, выходящая за границу заданного значения масштаба, при помещении в память округляется. Для столбца, содержащего число 12, 345 можно задать тип NUMBER (5, 3). Для столбца, содержащего число 125000 можно задать тип NUMBER (3, -3).
Другие числовые типы данных INTEGER(n) (тип данных SQL 2003: INTEGER) Хранит целые числа со знаком и без знака с точностью до 38. Тип INTEGER считается синонимом NUMBER. SMALLINT (тип данных SQL 2003: SMALLINT) То же, что INTEGER. Для столбцов INTEGER и SMALLINT по умолчанию устанавливается масштаб равный нулю.
Другие числовые типы данных FLOAT(n) (тип данных SQL 2003: FLOAT(n)) Хранит числовые данные с плавающей точкой с двоичной точностью до 126. REAL (тип данных SQL 2003: REAL) Хранит значения с плавающей точкой с одинарной точностью. То же, что FLOAT(63). DOUBLE PRECISION (тип данных SQL 2003: DOUBLE PRECISION) Хранит значения с плавающей точкой двойной точности. То же, что FLOAT(126). Для этих типов точность определена в терминах двоичных битов, а не десятичных цифр (требование ANSI).
Календарные типы данных DATE (тип данных SQL 2003: DATE) Хранит дату и время в диапазоне от 00: 00 01 -01 -4712 до н. э. до 23: 59 31 -12 -9999. TIMESTAMP(n) { [WITH TIME ZONE] | [WITH LOCAL TIME ZONE] } (тип SQL 2003: TIMESTAMP [ Wl. TH TIME ZONE ] ) Разновидность типа DATE, полезная для хранения особо точных значений даты и времени с точностью до долей секунды, где n – количество цифр для долей секунды в поле секунд (допустимы значения 0 -9, по умолчанию - 6).
Календарные типы данных При указании атрибута WITH TIME ZONE сохраняется переданный в качестве параметра часовой пояс (по умолчанию – часовой пояс текущего сеанса) и значение времени выдается с учетом этого часового пояса. При указании атрибута WITH LOCAL TIME ZONE данные хранятся с автоматическим подключением и отключением использования локальной временной зоны
Ввод и вывод календарных данных с датой по умолчанию CREATE TABLE proba (data 1 date); INSERT INTO proba VALUES ('24 -JUN-2012'); SELECT * FROM proba;
Ввод и вывод календарных данных с датой в нужном формате CREATE TABLE proba (data 1 date); INSERT INTO proba VALUES( TO_DATE( '24 -JUN-2012', 'DD / MM / YYYY‘ ) ); SELECT TO_CHAR ( data 1, 'DD/ MM/ YYYY') FROM proba;
Ввод и вывод календарных данных с датой в нужном формате SELECT TO_CHAR (data 1, 'DD / MM / YYYY‘ ) AS data 1 FROM proba;
Ввод и вывод календарных данных с датой и временем CREATE TABLE proba (data 1 timestamp); INSERT INTO proba VALUES(TO_TIMESTAMP ('24 -12 -2012 11: 34: 56', 'DD-MM-YYYY HH 24: MI: SS')); SELECT TO_CHAR(data 1, 'DD-MM-YYYY HH 24: MI: SS') AS data 1 FROM proba;
Ссылки на неструктурированные данные большого объема q BLOB (тип данных SQL 2003: BLOB) – хранит большой двоичный объект (BLOB – Binary Large Object) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных. q CLOB (тип данных SQL 2003: CLOB) – хранит большой символьный объект (CLOB – Character Large Object) размером от 8 до 128 терабайт в зависимости от размера блока в базе данных. q NCLOB (тип данных SQL 2003: NCLOB) – представляет собой CLOB с поддержкой многобайтовых символов и UNICODE размером от 8 до 128 терабайт в зависимости от размера блока базы данных.
Ограничения на большие двоичные объекты в Oracle q q q q Нельзя выбирать с удаленной машины. Не могут быть компонентом предложений ORDER BY и GROUP BY в запросе. Нельзя использовать в агрегатных функциях запроса. На них нельзя ссылаться в запросах при помощи инструкций DISTINCT и UNIQUE или в соединениях. На них нельзя ссылаться в предложениях ANALYZE…COMPUTE и ANALYZE… ESTIMATE. Не могут быть частью первичного ключа или ключа индекса. Нельзя использовать в предложении UPDATE OF триггера UPDATE.
Создание таблицы USERS 1. Запустить Oracle SQL Developer. 2. Раскрыть соединение с пользователем (XE_OLEG).
Простой режим создания таблицы
Продвинутый режим создания таблицы
Определение первичного ключа
Определение ограничения выбора
Создание внешнего ключа в таблице BOOKS
Ввод данных в таблицу CATALOGS /* Заполнение таблицы Catalogs */ DELETE FROM Catalogs; INSERT INTO Catalogs VALUES (1, 'Программирование'); INSERT INTO Catalogs VALUES (2, 'Интернет'); INSERT INTO Catalogs VALUES (3, 'Базы данных'); INSERT INTO Catalogs VALUES (4, 'Сети'); INSERT INTO Catalogs VALUES (5, 'Мультимедиа'); COMMIT;
Ввод данных в таблицу ORDERS INSERT INTO Orders VALUES (1, 3, 8, TO_TIMESTAMP ('04/01/2009 10: 39: 38', 'DD/MM/YYYY HH 24: MI: SS'), 1); INSERT INTO Orders VALUES (2, 6, 10, TO_TIMESTAMP ('10/02/2009 09: 40: 29', 'DD/MM/YYYY HH 24: MI: SS'), 2); INSERT INTO Orders VALUES (3, 1, 20, TO_TIMESTAMP ('18/02/2009 13: 41: 05', 'DD/MM/YYYY HH 24: MI: SS'), 4); INSERT INTO Orders VALUES (4, 4, 20, TO_TIMESTAMP ('10/03/2009 18: 20: 00', 'DD/MM/YYYY HH 24: MI: SS'), 1); INSERT INTO Orders VALUES (5, 3, 20, TO_TIMESTAMP ('17/03/2009 19: 15: 36', 'DD/MM/YYYY HH 24: MI: SS'), 1);
Фиксация транзакции и результаты ввода данных
Типы данных в СУБД Oracle.ppt