6урок по oracle sql, типы данных и работа с таблицами
--Распространенные типы данных, используемые для указания типа данных в столбцах таблиц:
--Числа:
--NUMBER - числа общего вида, NUMBER (n) - n это точность мантиссы, NUMBER (n, m) - с фиксированной десятичной точкой
--INTEGER, FLOAT, REAL, NUMERIC, DECIMAL
--BINARY_FLOAT(), BINARY_DOUBLE()
--Строки текста:
--VARCHAR2 (n) - может хранить до 4000 байт, CHAR (n) - может хранить до 2000 байт
--NVARCHAR2 (n), NCHAR (n)() - строки в национальной кодировке
--CLOB(), NCLOB() - используются для хранения больших строк
--Временные типы:
--DATE
--TIMESTAMP(), TIMESTAMP (n)()
--TIMESTAMP WITH TIME ZONE(), TIMESTAMP WITH LOCAL TIME ZONE()
--Строки байтов:
--RAW (n)
--BLOB()
--Создание таблицы (столбцы с разными типами данных)
--DEFAULT - значение по умолчанию, если при операции INSERT небыло введено значения
--CHECK - условие(ограничение) для значений столбца
CREATE TABLE any_table
(
id INTEGER
,name VARCHAR2 (14)
,d_time DATE DEFAULT TRUNC(SYSDATE)
,d_money NUMBER (10, 2) CHECK (d_money > 1000)
);
--Пройдут без ошибок, во втором случае добавится значение по умолчанию в d_time
INSERT INTO any_table(id, name, d_time, d_money) VALUES (1, 'MyName', TRUNC(SYSDATE), 2000);
INSERT INTO any_table(id, name, d_money) VALUES (2, 'MyName', 2000); --Вызовет ошибку в d_money
INSERT INTO any_table(id, name, d_money) VALUES (3, 'MyName', 500);
SELECT * FROM any_table;
--Создание таблицы из существующей, данные перенесутся
CREATE TABLE any_table_copy AS SELECT * FROM any_table;
SELECT * FROM any_table_copy;
--Добавление столбца
ALTER TABLE any_table ADD(n_name VARCHAR2(10)); --Изменение столбца
ALTER TABLE any_table MODIFY(n_name VARCHAR2(20)); --NULL значение
ALTER TABLE any_table MODIFY (id NOT NULL);
ALTER TABLE any_table MODIFY (id NULL); --Удаление столбца
ALTER TABLE any_table DROP COLUMN n_name; --CASCADE CONSTRAINTS позволяет удалить столбец с ключами
ALTER TABLE any_table DROP COLUMN n_name CASCADE CONSTRAINTS; --Переименовать таблицу
ALTER TABLE any_table RENAME TO any_table_new; --Переименовать столбец
ALTER TABLE any_table_new RENAME COLUMN name TO name_new;
--Удаление таблицы
--Если на столбцы таблицы определены ссылки внешними ключами из других таблиц, СУБД не позволит выполнить DROP TABLE
--CASCADE CONSTRAINTS позволяет удалить таблицу с ключами, при этом удалит сначало правило внешнего ключа.
DROP TABLE any_table_new;
DROP TABLE any_table_copy CASCADE CONSTRAINTS;