- •Операторы сравнения значений
- •Insert into table-name[column-name[,column-name [,…]]
- •Создание таблиц
- •Модификация таблиц
- •Создание индексов
- •Создание представления
- •Создание последовательности
- •Создание данных, определяемых пользователем
- •Insert into employee values (100,
- •Создание синонима
- •Создание ограничений
- •Табличные пространства (области).
- •Табличныеобласти
- •Контрольные вопросы
Создание последовательности
CREATE SEQUENCE имя_последовательности
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CACHE n | NOCACHE]
[CYCLE | NOCYCLE]
Любая последовательность имеет два поля NEXTVAL и CURRVAL.
Примеры:
SQL> CREATE SEQUENCE test_seq;
Sequence created
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
-------
1
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
-------
2
SQL> SELECT test_seq.nextval FROM DUAL;
NEXTVAL
-------
3
SQL>
Посмотреть имеющиеся последовательности, можно используя представление USER_SEQUENCES в словаре системы:
DESC user_sequences;
SELECT sequence_name, last_number, increment_by
FROM user_sequences;
Изменить параметры последовательности нельзя! Её надо удалить и создать заново. Оператора типа «ALTER SEQUENCE» нет.
DROP SEQUENCE имя_последовательности;
Создание данных, определяемых пользователем
Пример.
CREATE TYPE name_info AS OBJECT (
ename VARCHAR2(10),
address VARCHAR2(10),
city VARCHAR2(10) ) ;
CREATE TABLE employee (
emp_id NUMBER(4),
employee_info NAME_INFO );
Insert into employee values (100,
name_info(‘Boby Marx’, ‘Braiton 3’, ‘New-York’));
Создание синонима
CREATE[PUBLIC]SYNONYMsynonym-name
FORobject-name;
Применяется для сокращения объёма sql-операторов. Имя объекта должно чётко именовать объект, например
TB_EMPLOYEE_OF_MANUFACTURING
Но в запросах хотелось бы использовать что-то покороче, например
EM01
Создание ограничений
ALTER TABLEtable-nameMODIFY(column-name constraint [,column-name constraint] [,…])
Отметим, что «UNIQUE» и «PRIMARY KEY» - это почти одно и то же, в обоих случаях автоматически создаётся индекс.
Пример:
CREATE TABLE DEPT (
deptno NUMBER(2) NOT_NULL,
dname VARCHAR2(14),
CONSTRAINT dept_primary_key PRIMARY KEY (DEPTNO));
CREATE TABLE EMP (
empno NUMBER(4) NOT NULL,
ename VARCHAR2(10),
mgr NUMBER(4) CONSTRAINT emp_self_key REFERENCES EMP(EMPNO),
cur_emp VARCHAR2(1) CHECK (cur_emp IN (‘Y’,’N’)),
deptno NUMBER(2) NOT_NULL,
CONSTRAINT emp_foreign_key FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO),
CONSTRAINT emp_primary_key PRIMARY KEY (EMPNO) );
Посмотреть имеющиеся ограничения можно, можно используя представление USER_CONSTRAINT в словаре системы.
Представление USER_CONS_COLUMNS показывает перечень столбцов, на которых заданы ограничения, а представление USER_INDEXES показывает, какие уникальные индексы созданы для первичных ключей.
Бывает, что ограничения препятствуют вводу данных и их нужно временно отменить оператором:
ALTER TABLEtable_nameDISABLE CONSTRAINTимя_ограничения [CASCADE]
а затем можно снова включить его оператором:
ALTER TABLEtable_nameENABLE CONSTRAINTимя_ограничения
Полное уничтожение ограничения осуществляется:
DROP CONSTRAINTимя_ограничения
По умолчанию строка в родительской таблице не удаляется, если в дочерних таблицах есть связи с этой строкой. Для сохранения ссылочной целостности, удалить такую строку можно только вместе со связанными строками, используя опцию «CASCADE ON DELETE».