
- •Создание таблиц
- •Модификация таблиц
- •Создание индексов
- •Создание представления
- •Создание последовательности
- •Создание данных, определяемых пользователем
- •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-операторов.