 
        
        - •Создание таблиц
- •Модификация таблиц
- •Создание индексов
- •Создание представления
- •Создание последовательности
- •Создание данных, определяемых пользователем
- •Insert into employee values (100,name_info(‘Boby Marx’, ‘Braiton 3’, ‘New-York’)); Создание синонима
- •Создание ограничений
- •Табличные пространства
- •Контрольные вопросы
- Oracle – реляционная СУБД => её основа SQL (sequel) структурированный английский язык запросов 
SQL
| DDL | DML | DCL | DQL | 
| CREATE RENAME ALTER DROP | INSERT UPDATE D S | COMMIT ROLLBACK GRANT REVOKE | SELECT | 
- SQL*PLUS – основной инструмент всех версий Oracle. (Может и весьма старый, но основной). 
sqlplus <userid>/<password>@<dblink> <file_name> <input_var>
- PL/SQL – процедурный язык Oracle с входящими в него операторами SQL 
- Буфер SQL – рабочая область, применяемая в среде SQL*PLUS - Строки в буфере нумерованы 
- Есть текущая строка 
- Команды буфера 
 
…………………………………………………………………….
A или APPEND new_text
Добавить к концу текущей строки
C или CHANGE/старый текст/новый текст/
Заменить подстроку в текущей строке буфера
Del
Удалить текущую подстроку из буфера
ED или EDIT [file_name]
Вызвать текстовый редактор и передать в него буфер, либо указанный файл
Get file_name
Считать указанный файл в буфер
I или Input text
Вставляет дополнительную строку с текстом после текущей строки
L или LIST number или nn1 nn2
Отображает содержимое строки number, либо строк от nn1 до nn2.
SAVE file_name
Сохраняет содержимое буфера в файле
START file_name param1 param2 … или @file_name param1 param2 …
Загрузить файл в буфер и выполнить его с параметрами
/ (косая черта)
Вызывает на выполнение содержимое буфера (ставится в отдельной строке)
Пример создания таблиц
Примерный синтаксис оператора SELECT
(язык выборки данных)
SELECT * or column-name [alias] [, column-name [alias] [, …] [function] [arithmetic expression]
FROM table-name [, table-name [, …] or [sub-query]
[WHERE [conditional-statement] or [sub-query] ]
[GROUP BY column-name [alias] [, column-name [alias] [, …] ] ]
[HAVING [conditional-statement] or [sub-query] ]
[ORDER BY column-name [alias] [, column-name [alias] [, …] ] [DESCENNDING or ASCENDING] ]
где column-name – это может быть имя-таблицы.имя-столбца
Операторы сравнения значений
| = | != или <> | > | < | >= | <= | 
Конструкции, используемые вместо операторов сравнения
| IN (list) | Равно любому элементу в списке | 
| BETWEEN значение AND значение | Включительно в диапазоне | 
| значение AND / OR значение | Логическая функция/связка | 
| LIKE ‘шаблон’ | Сравнить текст по шаблону | 
| IS NULL | Проверка отсутствия данных | 
| NOT (конструкция) | Логическое отрицание | 
D M L
Примерный синтаксис оператора INSERT
INSERT INTO table-name [column-name [, column-name [, …]]
[VALUES (data [, date [, …] ])]
or
[SELECT …]
Примерный синтаксис оператора UPDATE
UPDATE table-name SET column-name = (значение или результат выполнения оператора SQL)
[WHERE [conditional-statement] or [sub-query] ]
Примерный синтаксис оператора DELETE
DELETE FROM table-name
[WHERE [conditional-statement] or [sub-query] ]
TRUNCATE TABLE table-name
Эта команда не обратима, откаты после неё не работают
COMMIT
ROLLBACK [TO savepoint-name]
D D L
Предназначен для создания разнообразных объектов, таких как:
- Таблицы 
- Индексы 
- Представления 
- Последовательности 
- Типы данных, определяемые пользователем 
- Синонимы 
- Кластеры 
- Ограничения 
- Табличные пространства 
- Секции 
- Триггеры, пакеты, процедуры, функции 
Создание таблиц
CREATE TABLE table-name (column-name type [default-expression] [constraint] [,column-name type [default-expression] [constraint]] [,…])
Стандартные типы данных
- CHAR(n) – символьное поле длиной до 2000 символов 
- DATE – дата в пределах от 1/1/4712г до н.э. до 31/12/4712г н.э. 
- NUMBER(n,m) – числовое поле длиной до 38 позиций 
- VARCHAR2(n) – символьное поле переменной длины, до 4000 символов 
Специальные типы данных
- LONG – символьное поле переменной длины, до 2GB 
- CLOB – однобайтовое символьное поле длиной до 4GB 
- NLOB – двухбайтовое символьное поле длиной до 4GB 
- RAW (и LONG RAW) – неструктурированное двоичное поле длиной до 2000 байт 
- BLOB – двоичное поле длиной до 4GB 
- BFILE – хранимое во внешнем файле двоичное поле длиной до 4GB 
Ограничения: NOT NULL, UNIQUE, CHECK
Модификация таблиц
ALTER TABLE table-name ADD (column-name type [default-expression] [constraint] [,column-name type [default-expression] [constraint]] [,…]);
ALTER TABLE table-name MODIFY (column-name type [default-expression] [constraint] [,column-name type [default-expression] [constraint]] [,…]);
ALTER TABLE table-name DROP column- name;
Создание индексов
CREATE [UNIQUE] INDEX index-name ON TABLE table-name (column-name [,column-name] [,…])
Кроме того, индексы создаются автоматически, если при создании таблицы указать для столбца ограничение “PRIMARY KEY”.
Индексы используются автоматически, если во фразе “WHERE” указан индексированный столбец.
Создание представления
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view-name AS sql-запрос [WITH CHECK OPTION] [WITH READ ONLY]
Представление – это SQL-оператор, хранящийся в словаре данных.
Типы представлений:
- Сложные – имеют в своём теле фразы “GROUP BY” или функции, либо связанные с несколькими таблицами 
- Простые – ничего такого нет. 
Только к простым могут применяться операторы DML (INSERT, UPDATE, DELETE)
Создание последовательности
CREATE SEQUENCE seq-name
[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] SYNONYM synonym-name
FOR object-name;
Применяется для сокращения объёма sql-операторов.

 ELETE
ELETE ELECT
ELECT