Дата создания таблицы Oracle
Обновлено: 21.11.2024
В этом учебном пособии Oracle объясняется, как использовать инструкцию Oracle CREATE TABLE с синтаксисом, примерами и практическими упражнениями.
Описание
Инструкция Oracle CREATE TABLE позволяет создать и определить таблицу.
Синтаксис
Синтаксис инструкции CREATE TABLE в Oracle/PLSQL:
Параметры или аргументы
table_name Имя таблицы, которую вы хотите создать. столбец1, столбец2, . column_n Столбцы, которые вы хотите создать в таблице. Каждый столбец должен иметь тип данных. Столбец должен быть определен как «нулевой» или «не нулевой», и если это значение оставить пустым, база данных принимает значение «нуль» по умолчанию.
Пример
Давайте рассмотрим пример Oracle CREATE TABLE.
В этом примере Oracle CREATE TABLE создается таблица с именем customers, которая имеет 3 столбца.
- Первый столбец называется customer_id и создается как числовой тип данных (максимум 10 цифр в длину) и не может содержать пустых значений.
- Второй столбец называется customer_name и относится к типу данных varchar2 (длина не более 50 символов) и также не может содержать пустых значений.
- Третий столбец называется city и относится к типу данных varchar2, но может содержать нулевые значения.
Теперь единственная проблема с этой инструкцией Oracle CREATE TABLE заключается в том, что вы не определили первичный ключ для таблицы. Мы могли бы изменить этот оператор CREATE TABLE и определить customer_id в качестве первичного ключа следующим образом:
Создайте таблицу Oracle с именем suppliers, в которой хранится информация об идентификаторе, имени и адресе поставщика.
Инструкция Oracle CREATE TABLE для таблицы suppliers выглядит следующим образом:
Создайте таблицу Oracle с именем customers, в которой хранится информация об идентификаторе, имени и адресе клиента.
Но на этот раз идентификатор клиента должен быть первичным ключом для таблицы.
Инструкция Oracle CREATE TABLE для таблицы customers выглядит следующим образом:
На основе приведенной ниже таблицы departments создайте таблицу Oracle с именем employees, в которой хранится информация о номере сотрудника, имени сотрудника, отделе и зарплате. Первичным ключом для таблицы employees должен быть номер сотрудника. Создайте внешний ключ в таблице employees, который ссылается на таблицу departments на основе поляdepartment_id.
Во многих наших настраиваемых таблицах используются столбцы даты создания и даты последнего обновления. Эти столбцы заполняются операторами вставки и операторами обновления.
Есть ли способ автоматического заполнения столбцов даты при создании таблицы, можем ли мы добавить что-то для автоматического заполнения этих дат.
Я имею в виду заполнение даты создания при вставке новой строки и заполнение столбца даты последнего обновления при повторном обновлении той же строки.
Лучший ответ
Вот уточнение того, что упоминает Соломон.
SQL> создать таблицу tbl(
3 описание varchar2(30),
4 date_created дата по умолчанию sysdate не нулевая,
5 date_дата обновления,
6 ограничение ограничивающее_имя первичный ключ (идентификатор)
SQL> создать или заменить триггер trg_bu_tbl перед обновлением таблицы
4 :new.date_updated := sysdate;
SQL> вставить в таблицу (идентификатор, описание) значения (1, 'Test1');
SQL> вставить в таблицу(id, description) значения (2, 'Test2');
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 Тест1 25.08.2017 19:24:24
2 Тест2 25.08.2017 19:24:24
SQL> begin dbms_lock.sleep(10); конец; -- Подождите 10 секунд
Процедура PL/SQL успешно завершена.
2 установить описание = 'Тест. 1 дюйм
2 установить описание = 'Тест. 2 фута
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 тест. 1 25.08.2017 19:24:24 25.08.2017 19:24:34
2 Тест. 2 25.08.2017 19:24:24 25.08.2017 19:24:34
Ответы
SQL> создать таблицу tbl (номер идентификатора, дата dt по умолчанию, системная дата)
2 /
Таблица создана.
SQL> вставить в таблицу (id) значения(1)
2 /
Создана 1 строка.
SQL> вставить в tbl(id) значения(2)
2 /
Создана 1 строка.
SQL> выберите * из таблицы
2 /
Идентификатор ОУ
1 25.08.2017 13:23:24
2 25.08.2017 13:23:32
SQL>
Для обновлений вам понадобится триггер.
Вот уточнение того, что упоминает Соломон.
SQL> создать таблицу tbl(
3 описание varchar2(30),
4 date_created дата по умолчанию sysdate не нулевая,
5 date_дата обновления,
6 ограничение ограничивающее_имя первичный ключ (идентификатор)
SQL> создать или заменить триггер trg_bu_tbl перед обновлением таблицы
4 :new.date_updated := sysdate;
SQL> вставить в таблицу (идентификатор, описание) значения (1, 'Test1');
SQL> вставить в таблицу(id, description) значения (2, 'Test2');
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 Тест1 25.08.2017 19:24:24
2 Тест2 25.08.2017 19:24:24
SQL> begin dbms_lock.sleep(10); конец; -- Подождите 10 секунд
Процедура PL/SQL успешно завершена.
2 установить описание = 'Тест. 1 дюйм
2 установить описание = 'Тест. 2 фута
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 тест. 1 25.08.2017 19:24:24 25.08.2017 19:24:34
2 Тест. 2 25.08.2017 19:24:24 25.08.2017 19:24:34
Это делает его нетранзакционным. В результате каждая строка, обновленная одним оператором UPDATE, может иметь разную дату обновления. Чтобы сделать его транзакционным, мы должны использовать переменную пакета или составной триггер:
SQL> создать таблицу tbl(
2 идентификационных номера,
3 описание varchar2(30),
4 date_created дата по умолчанию sysdate не нулевая,
5 date_updated date,
6 ограничение ограничение_имя первичный ключ (идентификатор)
7 )
8 /
Таблица создана.
SQL> создать или заменить триггер trg_bu_tbl перед обновлением таблицы
2 для каждой строки
3 начало
4 :new.date_updated := sysdate;
5 dbms_lock.sleep(2);
6 конец;
7 /
Триггер создан.
SQL> вставить в таблицу (идентификатор, описание) значения (1, 'Test1');
Создана 1 строка.
SQL> вставить в таблицу(id, description) значения (2, 'Test2');
Создана 1 строка.
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 Тест1 25.08.2017 15:34:38
2 Тест2 25.08.2017 15:34:38
SQL> begin dbms_lock.sleep(10); конец;
2 /
Процедура PL/SQL успешно завершена.
SQL> обновить таблицу
2 установить описание = 'Тест. ' || идентификатор;
2 строки обновлены.
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 тест. 1 25.08.2017 15:34:38 25.08.2017 15:34:48
2 Тест. 2 25.08.2017 15:34:38 25.08.2017 15:34:50
SQL> удаление таблицы очистки таблицы
2 /
Таблица удалена.
SQL> создать таблицу tbl(
2 идентификационных номера,
3 описание varchar2(30),
4 date_created дата по умолчанию sysdate не нулевая,
5 date_updated date,
6 ограничение ограничение_имя первичный ключ (идентификатор)
7 )
8 /
Таблица создана.
SQL> создать или заменить триггер trg_bu_tbl перед обновлением таблицы
2 для каждой строки
3 начало
4 :new.date_updated := sysdate;
5 dbms_lock.sleep(2);
6 конец;
7 /
Триггер создан.
SQL> создать или заменить
2 триггера trg_cmp_tbl
3 для обновления
4 в таблице
5 составных триггеров
6 v_dt дата := sysdate;
7 перед каждой строкой
8
9 начало
10 :new.date_updated := v_dt;
11 dbms_lock.sleep(2);
12 end перед каждой строкой;
13 конец;
14 /
Триггер создан.
SQL> вставить в таблицу (идентификатор, описание) значения (1, 'Test1');
Создана 1 строка.
SQL> вставить в таблицу(id, description) значения (2, 'Test2');
Создана 1 строка.
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 Тест1 25.08.2017 15:35:47
2 Тест2 25.08.2017 15:35:47
SQL> begin dbms_lock.sleep(10); конец;
2 /
Процедура PL/SQL успешно завершена.
SQL> обновить таблицу
2 установить описание = 'Тест. ' || идентификатор;
2 строки обновлены.
SQL> выберите * из таблицы;
ID DESCRIPTION DATE_CREATED DATE_UPDATED
1 тест. 1 25.08.2017 15:35:47 25.08.2017 15:35:59
2 Тест. 2 25.08.2017 15:35:47 25.08.2017 15:35:59
SQL>
Есть ли способ сделать это без триггера?
Я предлагаю вам обсудить удаление этих столбцов с вашим ИТ-отделом. По крайней мере, удалите все столбцы «последнее обновление».
В некоторых случаях информация о том, когда была создана строка, может быть весьма полезной.
Но столбцы, связанные с "кто" и "обновление", практически бесполезны и обычно неточны для каких-либо реальных целей устранения неполадок или аудита.
Другая проблема заключается в том, что эти значения отражают только изменения на уровне строк.Таким образом, если один пользователь изменит важный столбец, а другой пользователь изменит ЧТО-НИБУДЬ, независимо от того, насколько это тривиально, второе изменение будет полностью переопределять первое изменение.
Это означает, что вы НИКОГДА не узнаете, кто и когда изменил этот важный столбец.
Хотите пример? Просто используйте тот пример кода, который вы отметили как «правильный». Он не проверяет, действительно ли изменились какие-либо значения столбцов. Он просто проверяет, был ли выполнен оператор обновления.
Поэтому, если я заменю "N" на "N", значение вообще не изменится, но "обновленная дата" изменится и скроет дату, когда значение ДЕЙСТВИТЕЛЬНО изменилось.
Это означает, что я могу скрыть реальную дату изменения чего-либо в строке, просто обновив столбец "Дата обновления".
Если вам нужно записать «кто, что и когда изменил», запишите это. Но не испортите свои таблицы, пытаясь записать это в самой таблице.
Вывод: в этом руководстве вы узнаете, как использовать оператор Oracle CREATE TABLE для создания новой таблицы в базе данных Oracle.
Введение в оператор Oracle CREATE TABLE
Чтобы создать новую таблицу в базе данных Oracle, используйте оператор CREATE TABLE. Ниже показан основной синтаксис инструкции CREATE TABLE:
- Сначала укажите имя таблицы и имя схемы, к которой принадлежит новая таблица, в предложении CREATE TABLE.
- Во-вторых, перечислите все столбцы таблицы в скобках. Если в таблице несколько столбцов, их необходимо разделить запятыми (,). Определение столбца включает имя столбца, за которым следует его тип данных, например NUMBER , VARCHAR2 , и ограничение столбца, такое как NOT NULL , первичный ключ, проверка.
- В-третьих, добавьте ограничения таблицы, если применимо, например первичный ключ, внешний ключ, проверка.
Обратите внимание, что у вас должна быть системная привилегия CREATE TABLE для создания новой таблицы в вашей схеме и системная привилегия CREATE ANY TABLE для создания новой таблицы в схеме другого пользователя. Кроме того, владелец новой таблицы должен иметь квоту на табличное пространство, содержащее новую таблицу, или системную привилегию UNLIMITED TABLESPACE.
Пример инструкции Oracle CREATE TABLE
В следующем примере показано, как создать новую таблицу с именем person в схеме ot:
В этом примере таблица person содержит три столбца: person_id , first_name и last_name .
Person_id — это столбец идентификаторов, определяющий уникальные строки в таблице. Тип данных столбца person_id — NUMBER. Предложение GENERATED BY DEFAULT AS IDENTITY указывает Oracle генерировать новое целое число для столбца всякий раз, когда в таблицу вставляется новая строка.
Столбец first_name имеет тип данных VARCHAR2 с максимальной длиной 50. Это означает, что вы не можете вставить имя, длина которого больше 50, в столбец first_name. Кроме того, ограничение столбца NOT NULL не позволяет столбцу first_name иметь значения NULL.
Столбец last_name имеет те же характеристики, что и столбец first_name.
Предложение PRIMARY KEY указывает столбец person_id в качестве столбца первичного ключа, который используется для идентификации уникальной строки в таблице person.
В этом руководстве вы узнали, как использовать оператор Oracle CREATE TABLE для создания новой таблицы.
Операторы UNION, INTERSECT, MINUS и сортировка результатов запроса
Функция Oracle DECODE
Функция Oracle INSTR() с примерами
Функция Oracle TO_CHAR()
Числовые функции (математические функции)
Функции персонажа
Разные функции
Агрегированные функции
Функции даты и времени
Запросы на присоединение к Oracle
ГРУППИРОВКА ПО ЗАПРОСАМ, ПОДЗАПРОСЫ
Функции CUBE, ROLLUP
Oracle DML (ВСТАВИТЬ, ОБНОВИТЬ, УДАЛИТЬ.)
DDL Oracle (СОЗДАНИЕ, ИЗМЕНЕНИЕ, УДАЛЕНИЕ)
ЗАПИСАТЬСЯ, ОТКАТ, ТОЧКА СОХРАНЕНИЯ
Язык управления данными (GRANT, REVOKE)
Значения ПО УМОЛЧАНИЮ
Отключение ограничений
Отключение и включение
Проверка различных ограничений
Просмотреть информацию об ограничениях
Работа с датами
Представления Oracle
Последовательности Oracle
Синонимы Oracle
Индексы и кластеры
Изменение таблиц разделов
Удаление разделов
Объединение разделов
Разделение разделов
Объединение разделов
Объекты и типы объектов Oracle
Таблица – это структура данных, содержащая данные в реляционной базе данных. Таблица состоит из строк и столбцов.
Таблица в Oracle Ver. 7.3 может иметь максимум 255 столбцов, а в Oracle Ver. 8 и выше таблица может иметь максимум 1000 столбцов. Количество строк в таблице не ограничено во всех версиях.
Таблица может представлять один объект, который вы хотите отслеживать в своей системе. Этот тип таблицы может представлять собой список сотрудников вашей организации или заказы, сделанные для продуктов вашей компании.
Таблица также может представлять отношения между двумя объектами.Этот тип таблицы может отражать связь между сотрудниками и их профессиональными навыками или связь продуктов с заказами. Внутри таблиц внешние ключи используются для представления отношений.
Несмотря на то, что некоторые хорошо разработанные таблицы могут представлять как сущность, так и описывать взаимосвязь между этой сущностью и другой сущностью, большинство таблиц должны представлять либо сущность, либо взаимосвязь.
В следующих занятиях объясняется, как создавать, изменять и удалять таблицы. Включены некоторые простые рекомендации по управлению таблицами в базе данных.
Дизайн таблиц
При разработке таблиц учитывайте следующие рекомендации:
- Используйте описательные имена для таблиц, столбцов, индексов и кластеров.
- Имена таблиц, имена столбцов могут содержать не более 30 символов и должны начинаться с алфавита.
- Будьте последовательны в сокращениях и использовании форм единственного и множественного числа в именах таблиц и столбцов.
- Выберите соответствующий тип данных для каждого столбца.
- Располагайте столбцы, которые могут содержать значения NULL, последними, чтобы сэкономить место для хранения.
Перед созданием таблицы следует также определить, следует ли использовать ограничения целостности. Ограничения целостности могут быть определены для столбцов таблицы, чтобы автоматически применять бизнес-правила вашей базы данных.
Прежде чем создавать таблицу, вы также должны решить, какой тип данных может содержать каждый столбец. Это известно как тип данных. Давайте обсудим, какие типы данных доступны в Oracle.
Типы данных
Тип данных связывает фиксированный набор свойств со значениями, которые можно использовать в столбце таблицы или в аргументе процедуры или функции. Эти свойства заставляют Oracle обрабатывать значения одного типа данных иначе, чем значения другого типа данных. Например, Oracle может добавлять значения типа данных NUMBER, но не значения типа данных RAW.
Oracle предоставляет следующие встроенные типы данных:
Типы данных символов
- СИМВОЛ
- ЧАР
- VARCHAR2 и VARCHAR
- NVARCHAR2
- CLOB
- НКЛОБ
- ДЛИННОЕ
Числовые типы данных
Типы данных времени и даты:
- ДАТА
- ИНТЕРВАЛ ОТ ДНЯ ДО ВТОРОГО
- ИНТЕРВАЛ ОТ МЕСЯЦА
- TIMESTAMP
- ОТМЕТКА ВРЕМЕНИ С ЧАСОВЫМ ПОЯСОМ
- ОТМЕТКА ВРЕМЕНИ С МЕСТНЫМ ЧАСОВЫМ ПОЯСОМ
Двоичные типы данных
Другой тип данных, ROWID, используется для значений в псевдостолбце ROWID, представляющем уникальный адрес каждой строки в таблице.
В следующей таблице обобщена информация о каждом встроенном типе данных Oracle.
Длина столбца и значение по умолчанию
CHAR (размер [BYTE | CHAR])
Символьные данные фиксированной длины размером в байтах или символах.
Исправлено для каждой строки в таблице (с пробелами в конце); максимальный размер — 2000 байт на строку, размер по умолчанию — 1 байт на строку. Перед установкой размера учитывайте набор символов (однобайтный или многобайтовый).
VARCHAR2 (размер [BYTE | CHAR])
Символьные данные переменной длины с максимальным размером байтов или символов.
Переменная для каждой строки, до 4000 байт на строку. Перед установкой размера рассмотрите набор символов (однобайтный или многобайтовый). Необходимо указать максимальный размер.
Символьные данные Unicode с фиксированной длиной символов размера длины.
Исправлено для каждой строки в таблице (с пробелами в конце). Размер столбца — это количество символов. (Количество байтов в 2 раза больше этого числа для кодировки AL16UTF16 и в 3 раза больше этого числа для кодировки UTF8.) Верхний предел составляет 2000 байтов на строку. По умолчанию 1 символ.
Символьные данные Unicode переменной длины с размерами символов длины. Необходимо указать максимальный размер.
Переменная для каждой строки. Размер столбца — это количество символов. (Количество байтов может быть в 2 раза больше этого числа для кодировки AL16UTF16 и в 3 раза больше этого числа для кодировки UTF8.) Верхний предел составляет 4000 байтов на строку. По умолчанию 1 символ.
Однобайтовые символьные данные
До 232 – 1 байт или 4 ГБ.
Данные национального набора символов Unicode (NCHAR).
До 232 – 1 байт или 4 ГБ.
Символьные данные переменной длины.
Переменная для каждой строки в таблице, до 232 – 1 байт или 2 гигабайта на строку. Предусмотрено для обратной совместимости.
Числовые данные переменной длины. Максимальная точность p и/или масштаб s – 38.
Переменная для каждой строки. Максимальное пространство, необходимое для данного столбца, составляет 21 байт на строку.
Дата и время фиксированной длины, начиная с 1 января 4712 г. до н. э. по 31 декабря 4712 г. н. э.
Исправлено 7 байтов для каждой строки в таблице. Формат по умолчанию — это строка (например, DD-MON-RR), указанная параметром NLS_DATE_FORMAT.
ИНТЕРВАЛ ГОД (с точностью) ДО МЕСЯЦА
Период времени, представленный в виде лет и месяцев.Значение точности указывает количество цифр в поле YEAR даты. Точность может быть от 0 до 9, по умолчанию 2 для лет.
Исправлено 5 байт.
ИНТЕРВАЛ ДЕНЬ (с точностью) ДО ВТОРОЙ (с точностью)
Период времени, представленный в виде дней, часов, минут и секунд. Значения точности определяют количество цифр в полях ДЕНЬ и дробные СЕКУНДЫ даты. Точность может быть от 0 до 9, по умолчанию 2 для дней и 6 для секунд.
Исправлено 11 байт.
Значение, представляющее дату и время, включая доли секунды. (Точное разрешение зависит от часов операционной системы.)
Значение точности указывает количество цифр в дробной части секунды поля даты SECOND. Точность может быть от 0 до 9, по умолчанию 6
Варьируется от 7 до 11 байт, в зависимости от точности. Значение по умолчанию определяется параметром инициализации NLS_TIMESTAMP_FORMAT.
TIMESTAMP (точность) С ЧАСОВЫМ ПОЯСОМ
Значение, представляющее дату и время, а также соответствующий параметр часового пояса. Часовой пояс может быть смещением от UTC, например "-5:0", или названием региона, например "US/Pacific".
Исправлено 13 байт. Значение по умолчанию определяется параметром инициализации NLS_TIMESTAMP_TZ_FORMAT.
TIMESTAMP (точность) С МЕСТНЫМ ЧАСОВЫМ ПОЯСОМ
Аналогично TIMESTAMP WITH TIME ZONE, за исключением того, что данные нормализуются к часовому поясу базы данных при сохранении и корректируются в соответствии с часовым поясом клиента при извлечении.
Варьируется от 7 до 11 байт, в зависимости от точности. Значение по умолчанию определяется параметром инициализации NLS_TIMESTAMP_FORMAT.
Неструктурированные двоичные данные
До 232 – 1 байт или 4 ГБ.
Двоичные данные, хранящиеся во внешнем файле
До 232 – 1 байт или 4 ГБ.
Необработанные двоичные данные переменной длины
Переменная для каждой строки в таблице, до 2000 байт на строку. Должен быть указан максимальный размер. Предусмотрено для обратной совместимости.
Необработанные двоичные данные переменной длины
Переменная для каждой строки в таблице, до 231 – 1 байт или 2 гигабайта на строку. Предусмотрено для обратной совместимости.
Двоичные данные, представляющие адреса строк
Фиксировано: 10 байт (расширенный ROWID) или 6 байт (ограниченный ROWID) для каждой строки в таблице.
Представление символьных данных
Используйте символьные типы данных для хранения буквенно-цифровых данных:
Типы данных CHAR и NCHAR хранят строки символов фиксированной длины.
Типы данных VARCHAR2 и NVARCHAR2 хранят строки символов переменной длины. (Тип данных VARCHAR является синонимом типа данных VARCHAR2.)
Типы данных NCHAR и NVARCHAR2 хранят только символьные данные Unicode.
Типы данных CLOB и NCLOB хранят однобайтовые и многобайтовые строки символов размером до четырех гигабайт.
Тип данных LONG хранит строки символов переменной длины, содержащие до двух гигабайт, но со многими ограничениями.
Этот тип данных предназначен для обратной совместимости с существующими приложениями; как правило, новые приложения должны использовать типы данных CLOB и NCLOB для хранения больших объемов символьных данных, а также BLOB и BFILE для хранения больших объемов двоичных данных.
При принятии решения о том, какой тип данных использовать для столбца, в котором будут храниться буквенно-цифровые данные в таблице, учитывайте следующие особенности:
Для более эффективного хранения данных используйте тип данных VARCHAR2. Тип данных CHAR дополняет пробелы и сохраняет конечные пробелы до фиксированной длины столбца для всех значений столбца, в то время как тип данных VARCHAR2 не добавляет никаких дополнительных пробелов.
Например, если вы определяете empname как char(20), то при сохранении таких имен, как «Сами», имя будет занимать 20 байт (4 байта для символов «Сами» и 16 пробелов)
И если вы определите empname как varchar2(20), то при сохранении таких имен, как «Сами», оракул займет всего 4 байта.
Используйте тип данных CHAR, если вам требуется совместимость с ANSI в семантике сравнения (когда пробелы в конце не важны при сравнении строк). Используйте VARCHAR2, если при сравнении строк важны пробелы в конце.
Типы данных CHAR и VARCHAR2 полностью поддерживаются и всегда будут поддерживаться. В настоящее время тип данных VARCHAR автоматически соответствует типу данных VARCHAR2 и зарезервирован для использования в будущем.
Представление числовых данных
Используйте тип данных NUMBER для хранения действительных чисел в формате с фиксированной или плавающей запятой. Числа, использующие этот тип данных, гарантированно переносимы между различными платформами Oracle и обеспечивают точность до 38 знаков после запятой. Вы можете хранить положительные и отрицательные числа в диапазоне от 1 x 10–130 до 9,99 x 10 125, а также ноль в столбце NUMBER.
Вы можете указать, что столбец содержит число с плавающей запятой, например:
Или вы можете указать точность (общее количество цифр) и масштаб (количество цифр справа от десятичной точки):
Цена НОМЕР (8, 2)
Хотя это и не обязательно, указание точности и масштаба помогает определить неверные входные значения. Если точность не указана, столбец сохраняет значения как заданные. В следующей таблице показаны примеры того, как различные коэффициенты масштабирования данных влияют на объем хранилища.
Входные данные | Указано как | Хранится как |
4 751 132,79 | ЧИСЛО | 4751132,79 | < /tr>
4 751 132,79 | ЧИСЛО (9) | 4751133 |
4 751 132,79 | ЧИСЛО (9,2) | 4751132,79 |
4 751 132,79 | ЧИСЛО (9,1) | 4751132,7 |
4 751 132,79 | ЧИСЛО (6) | (не принято, превышена точность) | 4 751 132,79 | ЧИСЛО (7, -2) | 4 751100 |
Представление данных о дате и времени
Используйте тип данных DATE для хранения значений на определенный момент времени (даты и время) в таблице. Тип данных DATE хранит век, год, месяц, день, часы, минуты и секунды.
Используйте тип данных TIMESTAMP для хранения точных значений, вплоть до долей секунды. Например, приложение, которое должно решить, какое из двух событий произошло первым, может использовать TIMESTAMP. Приложение, которому необходимо указать время выполнения задания, может использовать DATE.
Формат даты
Для ввода и вывода дат используется стандартный формат даты Oracle по умолчанию: DD-MON-RR. Например:
Чтобы изменить этот формат даты по умолчанию для всего экземпляра, используйте параметр NLS_DATE_FORMAT. Чтобы изменить формат во время сеанса, используйте оператор ALTER SESSION. Чтобы ввести даты, отличные от текущего формата даты по умолчанию, используйте функцию TO_DATE с маской формата. Например:
TO_DATE ("13 ноября 1992 г.", "МЕСЯЦ ДД, ГГГГ")
Будьте осторожны, используя формат даты, например ДД-МЕСЯЦ-ГГ. YY указывает год в текущем столетии. Например, 31-DEC-92 — это 31 декабря 2092 года, а не 1992 год, как можно было ожидать. Если вы хотите указать годы в любом столетии, отличном от текущего, используйте другую маску формата, например RR по умолчанию.
Формат времени
Время хранится в 24-часовом формате ЧЧ24:МИ:СС. По умолчанию время в поле даты равно 00:00:00. (полночь), если временная часть не введена. В записи только для времени часть даты по умолчанию соответствует первому дню текущего месяца. Чтобы ввести временную часть даты, используйте функцию TO_DATE с маской формата, указывающей временную часть, например:
INSERT INTO Birthdays_tab (bname, bday) VALUES
('ANNIE',TO_DATE('13-NOV-92 10:56 AM','DD-MON-YY HH:MI AM'));< /p>
После того как вы разработали таблицу и определились с типами данных, используйте следующую команду SQL для создания таблицы.
Например, следующий оператор создает таблицу с именем Emp.
CREATE TABLE Emp (
Empno NUMBER(5),
Ename VARCHAR2(15),
Hiredate DATE,
Sal NUMBER(7,2)
) ;
Чтобы вставить строки в таблицу, вы можете использовать команду SQL INSERT.
Например, следующий оператор создает строку в приведенной выше таблице.
SQL> вставить в значения emp (101,’Сами’,3400);
Чтобы непрерывно вставлять строки в SQL Plus, вы можете ввести следующую команду.
SQL> вставить в значения emp (&empno,’&name’,&sal);
Эти &Empno, &name и &sal называются переменными подстановки. То есть SQLPlus запросит у вас эти значения, а затем перепишет оператор с предоставленными значениями.
Читайте также:
- Не удалось смонтировать тип файловой системы vfat в точке загрузки efi
- Какой порядок получения электронной подписи для учреждения уголовно-исполнительной системы
- Включите стиль css и нормализуйте файлы css в правильном порядке
- Как сделать резервную копию iphone на ПК с помощью itunes
- Какие карты памяти подходят для psp