Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Oracle - MS Server / OracleМП / Lab2 / отчёт.docx
Скачиваний:
38
Добавлен:
17.04.2018
Размер:
1.76 Mб
Скачать

Лабораторная работа №2

Использование операторов языка SQL СУБД Oracle для работы с базой данных

Контрольные вопросы

ТЕОРИЕТИЧЕСКИЙ МАТЕРИАЛ, ИЗ МЕТОДИЧКИ НЕ ДОСТУПЕН!

  1. Какие функциональные группы операторов предусмотрены в языке SQL? Укажите состав каждой группы для СУБД Oracle.

Операторы описания данных: CREATE,DROP,ALTER…

Операторы манипуляции данными: INSERT,DELETE,SELECT,UPDATE…

Операторы задания прав доступа в БД: GRANT/REVOKE,LOCK/UNLOCK,SETLOCKMODE

Операторы защиты, восстановления данных и другие:

CREATE ASSERTION - создать ограничение

DROP ASSERTION - удалить ограничение

  1. Перечислите правила именования таблиц и столбцов в языке SQL СУБД Oracle.

Название таблиц может содержать набор вплоть до 30 латинских символов. Названия должны быть уникальны.

Не допускается наличие пробелов в названии таблиц.

Таблицы корпоративного хранилища данных делятся на следующие четыре класса:

  1. Таблицы метаданных внедряемого программного обеспечения.

  2. Системные таблицы, обеспечивающие мониторинг и функционирование основных процессов.

  3. Таблицы, содержащие элементы нормативно-справочной информации.

  4. Таблицы, содержащие фактические значения показателей корпоративного хранилища данных.

Наименование таблиц метаданных внедряемого программного обеспечения определяется регламентами непосредственно программного обеспечения и не предполагает вмешательства консультантов.

При формировании названия таблиц регулируемых классов (2-4) необходимо руководствоваться составным кодом: [Префикс]_Тип_Название, где различные элементы значения разделены символом разделителя "_". При этом наличие префикса является опциональным и предполагается для объектов, поддерживающих непосредственно функционирование бизнес подсистем.

В качестве префикса таблиц допускаются следующие значения: "KPI", "IAS", "BUD", "MGR".

В качестве типа таблиц допускаются следующие значения: "SYS$", "DW$", "DWH$".

Название таблиц должно быть интуитивно понятно администратору системы.

Для его формирования допускается использование разделителей.

При формировании названия необходимо использовать корректные и несокращенные фразы, что бы максимально полно представить таблицу администратору для последующих операций с его использованием.

  1. Какие операции можно использовать в выражениях на языке SQL СУБД Oracle? Приведите примеры записи выражений в операторах языка SQL СУБД Oracle.

Арифметические операции

Операция

Выполняемая функция

Пример

( )

Меняет нормальный порядок выполнения операций. Операции внутри скобок выполняются в первую очередь.

SELECT (X+Y)/(X_Y)...

+ -

Означает положительное илиотрицательное выражение.

...WHERE QTYSOLD=-1 ...WHERE -SAL < 0

* /

Умножить, разделить.

SELECT 2*X+1 ...WHERE X>Y/2

+ -

Сложить, вычесть

SELECT 2*X+1 ...WHERE X>Y-Z

Символьные операции

Операция

Выполняемая функция

Пример

||

Конкатенация (сцепление) символьных значений

SELECT 'NAME IS'||ENAME

Операции сравнения

Операция

Выполняемая функция

Пример

()

Меняет нормальные правила старшинства операций.

...NOT(A=1 OR B=1)

=

Проверяет на равенство

...WHERE SAL=10000

!=,^=,<>

Проверяет на неравенство

...WHERE SAL!=10000

> <

"Больше чем" и "меньше чем"

...WHERE SAL>10000

>= >=

"Больше или равно" и "меньше или равно"

...WHERE SAL>=10000

IN

"Равен любому члену из списка"

...WHERE JOB IN ('CLERK','ANALIST')

 

Эквивалентен "=ANY"

...WHERE SAL IN (SELECT SAL FROM EMP WHERE DEPTNO=30)

NOT IN

Эквивалентен "!=ALL" Результат FALSE любой элемент из набора NULL

...WHERE SAL NOT IN (SELECT SAL FROM EMP WHERE DEPTNO=30)

ANY

Сравнивает значение с каждым значением из списка или запроса. Должен предваряться: =,!=,>,<,<=,>=.

...WHERE SAL=ANY (SELECT SAL FROM EMP WHERE DEPTNO=30)

ALL

Сравнивает значение со всеми значениями из списка или запроса. Должен предваряться: =,!=,>,<,<=,>=.

...WHERE (SAL,COMM)>=ALL ((1400,300),(3000,0))

[NOT] BETWEEN x AND y

[Не] больше или равно x и меньше или равно y.

WHERE A BETWEEN 1 AND 9

[NOT] EXISTS

TRUE, если запрос возвращает [не возвращает] как минимум одну строку

WHERE EXISTS (SELECT SAL FROM EMP WHERE DEPTNO=30)

[NOT] LIKE

"не сопоставляется/сопоставляется со следующим шаблоном". Символ "%" используется для сопоставления с любой строкой из нуля или более символов, кроме NULL - строки, а "_" сопоставляется с любым одиночным символом. Примеры приводятся ниже в разделе "Операция LIKE".

 

IS [NOT] NULL

"проверка на [не] null. IS должен использоваться для проверки на NULL.

WHERE JOB IS NULL

Логические операции

Операция

Выполняемая функция

Пример

( )

Меняет нормальные правила старшинства операций.

SELECT...WHERE x=y and (a-b or p=q)

NOT

Инвертирует результат логического выражения

...WHERE NOT(JOB IS NULL) ...WHERE NOT(CODE LIKE 'T%') ...WHERE NOT(SAL BETWEEN 500 AND 999) ...WHERE NOT(A=1)

AND

Устанавливает в TRUE логическое выражение, если оба условия TRUE.

...WHERE A=1 AND B=1

OR

Устанавливает в TRUE логическое выражение, если одно из условий TRUE.

...WHERE A=1 OR B=1

Операции с множествами

Операция

Выполняемая функция

Пример

UNION

Объединяет запросы для выдачи всех различающихся строк каждого отдельного запроса

...SELECT... UNION SELECT...;

INTERSECT

Объединяет запросы для выдачи всех различающихся строк обоих запросов

...SELECT INTERSECT SELECT...;

MINUS

Объединяет запросы для выдачи всех различающихся строк, выданных первым запросом, но не вторым.

...SELECT... MINUS SELECT...;

Copied from: http://articles.org.ru/docum/sql_oper.php

Другие операции

Операция

Выполняемая функция

Пример

(+)

Указывает, что предыдущий столбец - столбец внешнего объединения

WHERE DEPT.DEPTNO=EMP.DEPTNO(+)

[table.]*

Выбирает в запросе все столбцы из таблиц. Когда предваряется именем таблицы с точкой, запрос выбирает все столбцы этойтаблицы.

SELECT * FROM EMP SELECT EMP.* FROM EMP

COUNT(expr)

Возвращает число строк, в которых expr не null.

SELECT COUNT(COMM) FROM EMP

COUNT(*)

Возвращает число строк в таблице, включая содержащие null.

SELECT COUNT(*) FROM EMP

ALL

Возвращает дублирующиеся значения в запросах и агрегатах. (ALL - умалчиваемое в отличие от DISTINCT)

SELECT ALL * ... ...COUNT(ALL DEPTNO)

DISTINCT

Удаляет дублирующиеся строки из запроса или удаляет дублирующиеся значения из агрегатного выражения.

DELECT DISTINCT *... ...COUNT(DISTINCT DEPTNO)...

PRIOR

Определяет отношение "отец-сын" в древовидном запросе. Выражение в левой части условия (EMPNO) представляет родительскую строку; выражение справа (MGR) представляет строку ребенка. Может использоваться в любой фразе древовидного запроса, а не только в CONNECT BY.

CONNECT BY PRIOR EMPNO=MGR

  1. Как задать псевдоним для столбца в операторе выборки данных? Что можно использовать в качестве псевдонима столбца? Приведите примеры.

перед именами столбцов рекомендуется указывать псевдонимы таблиц;

псевдонимы таблиц действительны только для данной команды SELECT;

если псевдоним таблицы создан, перед ссылкой на столбец следует указывать его, а не имя таблицы.

Пример: Вывод наименования клиента, номера региона и названия региона для всех клиентов. Используются псевдонимы столбцов, а для упрощения ссылок на таблицы – псевдонимы таблиц.

SELECT c.name “CustomerName”, c.Region_id “Region_ID”, r.Name “RegionName” FROM s_Customer c, s_Region r WHERE c.Region_id = r.id;

  1. Какие операторы языка SQL СУБД Oracle предназначены для удаления строк из таблицы и в чем состоят особенности их выполнения?

Удаление записей осуществляется командой DELETE FROM.

DELETE [LOW_PRIORITY | QUICK] FROM table_name

[WHERE where_definition]

[ORDER BY ...]

[LIMIT rows]

Команда DELETE удаляет из таблицы table_name все записи, удовлетворяющие условию where_definition. Если условиеWHERE where_definition не задано, то из таблицы table_name удаляются все записи. ORDER BY- Задает имя поля, или имена полей через запятую, по которым происходит сортировка удаляемых записей. LIMIT- Задает максимальное количество строк, которые могут быть удалены за текущий запрос.

  1. Когда происходит завершение транзакции (явное и неявное) с сохранением произведенных ею изменений в базе данных?

Транзакции базы данных обладают свойствами, сокращенно называемыми ACID (AtomicityConsistencyIsolationDurability).

  • Неделимость (Atomicity). Транзакция либо выполняется полностью, либо не выполняется.

  • Согласованность (Consistency). Транзакция переводит базу данных из одного согласованного состояния в другое.

  • Изолированность (Isolation). Результаты транзакции становятся доступны для других транзакций только после ее фиксации.

  • Продолжительность (Durability). После фиксации транзакции изменения становятся постоянными.

Явные транзакцииПо умолчанию, каждая команда выполняется как отдельная транзакцияПользователь может объединить несколько команд в одну транзакцию, явно указав ее начало и конец.

Неявные транзакции. Не существует оператора начала транзакцииТранзакция начинается с началом сеанса работы с БД. Завершаетсятранзакция при следующих событиях:

  • Явно выполненный оператор завершения транзакции - rollback или commit

  • Оператор DDL

  • Завершение сеанса.

После окончания транзакции сразу неявно начинается новая транзакция.

Соседние файлы в папке Lab2