Для очистки экрана SQL Plus используйте CLEAR SCREEN Для очистки буфера CLEAR BUFFER
9. Создание пользователя и настройка прав доступа
Используйте команду SHOW USER
SQL> SHOW USER
Вернитесь к пользователю System
Создадим пользователя MILLER с паролем KOLOBOK в табличном пространстве USER, владея им целиком и захватив в свое распоряжение еще кусочек табличного пространства TEMP (на всякий случай!)
CREATE USER MILLER IDENTIFIED BY KOLOBOK DEFAULT TABLESPACE USERS
/
Выделим этому пользователю ряд прав и создадим сессию с се рвером! Нижеприведенные операторы можно вводить по очереди или целиком. Главное, чтобы сработал последний оператор COMMIT (завершение транзакции)
GRANT CREATE SESSION, TABLE, PROCEDURE, TRIGGER, VIEW, SEQUENCE,VIEW TO MILLER
/
GRANT DELETE ANY TABLE TO MILLER
/
GRANT DROP ANY TABLE TO MILLER
/
GRANT DROP ANY PROCEDURE TO MILLER
/
GRANT DROP ANY TRIGGER TO MILLER
/
GRANT DROP ANY VIEW TO MILLER
/
GRANT ALTER ANY TABLE TO MILLER
/
GRANT ALTER ANY TABLE TO MILLER
11
/
GRANT ALTER ANY PROCEDURE TO MILLER
/
GRANT ALTER ANY TRIGGER TO MILLER
/
COMMIT
/
Операторы GRANT предоставляют пользователю определенные привилегии.
Для упрощения можно собрать все строки, которые мы вводили в файл, затем использовав команду START или операцию "@". Проделайте это сами, находясь в схеме SYSTEM!!!
ПРЕДВАРИТЕЛЬНО Введите
DROP USER MILLER CASCADE
/
Затем соберите все строки, в файл, скажем CrMiller.sql, поместите его в каталог, например, Temp, и введите следующее:
@C:\TEMP\CRMILLER.SQL
В SQL Plus, есть много внутренних команд, например, очень полезной может оказаться SET TIME ON приглашение примет вот такой вид:
14:09:52 SQL>
Например, можно оценивать время на запрос из таблицы!
Если ввести SET TIME OFF, то все станет по-прежнему.
При отображении информации на экран ПОЛЕЗНО использовать оператор форматирования столбца:
COL имя_столбца FORMAT Ann, например: COL FIO FORMAT A10
При работе с типом DATE можно использовать встроенную функцию
TO_DATE
например,
SELECT имя_столбца FROM имя_таблицы
WHERE HIRE_DATE < TO_DATE('01.06.1988','DD/MM/YYYY')
12
Лабораторная работа №2
Цель. Создание таблиц и формирование запросов в СУРБД ORACLE
Задачи: построить таблицы, заполнить их информацией, сформировать по 2 запроса следующих типов:
•выборка всех данных
•запрос с условием
•запрос с использованием синонимов
•с использованием подзапроса
•с использованием сортировки
•с использованием группировки
•с использованием конкатенации
•выборка неповторяющихся записей
•с использованием агрегатных функций
•с использованием NOT
•с использованием WHERE
Запросы сохранить в виде представлений.
Последовательность выполнения.
1. Создание Таблиц
Создать соответствующие таблицы. Поля выбрать самостоятельно.
При построении запроса из двух таблиц, где столбцы имеют одинаковые имена, то применяется «точечная нотация», т.е. запись вида:
имя_таблицы.имя_столбца
(Аналогично разные схемы БД (то есть пользователи) также могут содержать таблицы с одинаковыми именами, но в разных схемах).
2. Построение сложных запросов
Для построения запроса использовать оператор SELECT Синтаксис оператора SELECT имеет следующий вид:
13
SELECT ([ALL | DISTINCT]< список полей>|*) FROM <Список таблиц>
[WHERE<Предикат-условие выборки или соединения>] [GROUP BY <Список полей результатам] [HAVING <Предикат-условие для группы>]
[ORDER BY <Список полей, по которым упорядочить вывод>]
Пример 1:
Выбрать все записи из таблицы Закупка детали:
select KODDZ, KODZ, KOLVO, PRICED, DATA from zakupkad;
Пример 2:
Выбрать данные из полей «Название завода», «Адрес» и «ФИО
руководителя» по заводу с кодом 2: |
|
select NAMEZ, ADRESS, FIOR |
from zavod where kodz=2; |
NAMEZ |
ADRESS |
FIOR
---------------------- -------------------------------------------------------------- ---------
-
Лакокрасочный завод г. Москва, Варшавское шоссе,7, кор. 4 430412 Коломова В. В.
Условия.
Условия в предложении where может быть несколько. В таком случае используют ключевые слова:
And - И Or - ИЛИ
Like – КАК
BETWEEN
IN - выборка значений из списка
IS Null | IS NOT NULL
14
Пример 3:
Выбрать |
из таблицы Закупка деталей информацию по деталям, |
купленным у |
завода с кодом 2, подставив вместо кода название: |
select zavod.kodz, zavod.namez, zakupkad.koddz, zakupkad.kolvo, priced,
data
from zakupkad, zavod
where zavod.kodz=zakupkad.kodz and zavod.kodz=2;
KODDZ |
KODZ |
KOLVO PRICED |
DATA |
|||
---------- |
|
---------------------------- |
---------- |
---------- |
-------- |
|
31 |
Лакокрасочный завод |
8 |
30 |
07.01.07 |
||
32 |
Лакокрасочный завод |
1 |
35 |
10.01.07 |
||
Пример 4: |
|
|
|
|
||
Закупались ли детали у заводов с кодом 2 и 3? |
|
|
||||
select * |
from zavod where kodz=2 and kodz=3; |
|
||||
Пример 5:
Закупались ли детали у заводов с кодом 2 или 3? select * from zavod where kodz=2 or kodz=3;
Пример 6:
Есть ли в таблице завод, в названии которого присутствует слово «лак»? select * from zavod where namez like ‘%лак%’ or namez like ‘%Лак%’;
Пример 7:
Выбрать информацию по деталям, которые закупались в одну из дат: select * from zakupkad
where data in (’07-01-07’, ’10-01-07’, ’11-01-07’);
Пример 8:
Выбрать информацию по деталям, которые закупались между датами: select * from zakupkad
15