Лабораторная работа №2
Использование операторов языка SQL СУБД Oracle для работы с базой данных
Контрольные вопросы
ТЕОРИЕТИЧЕСКИЙ МАТЕРИАЛ, ИЗ МЕТОДИЧКИ НЕ ДОСТУПЕН!
Какие функциональные группы операторов предусмотрены в языке SQL? Укажите состав каждой группы для СУБД Oracle.
Операторы описания данных: CREATE,DROP,ALTER…
Операторы манипуляции данными: INSERT,DELETE,SELECT,UPDATE…
Операторы задания прав доступа в БД: GRANT/REVOKE,LOCK/UNLOCK,SETLOCKMODE
Операторы защиты, восстановления данных и другие:
CREATE ASSERTION - создать ограничение
DROP ASSERTION - удалить ограничение
Перечислите правила именования таблиц и столбцов в языке SQL СУБД Oracle.
Название таблиц может содержать набор вплоть до 30 латинских символов. Названия должны быть уникальны.
Не допускается наличие пробелов в названии таблиц.
Таблицы корпоративного хранилища данных делятся на следующие четыре класса:
Таблицы метаданных внедряемого программного обеспечения.
Системные таблицы, обеспечивающие мониторинг и функционирование основных процессов.
Таблицы, содержащие элементы нормативно-справочной информации.
Таблицы, содержащие фактические значения показателей корпоративного хранилища данных.
Наименование таблиц метаданных внедряемого программного обеспечения определяется регламентами непосредственно программного обеспечения и не предполагает вмешательства консультантов.
При формировании названия таблиц регулируемых классов (2-4) необходимо руководствоваться составным кодом: [Префикс]_Тип_Название, где различные элементы значения разделены символом разделителя "_". При этом наличие префикса является опциональным и предполагается для объектов, поддерживающих непосредственно функционирование бизнес подсистем.
В качестве префикса таблиц допускаются следующие значения: "KPI", "IAS", "BUD", "MGR".
В качестве типа таблиц допускаются следующие значения: "SYS$", "DW$", "DWH$".
Название таблиц должно быть интуитивно понятно администратору системы.
Для его формирования допускается использование разделителей.
При формировании названия необходимо использовать корректные и несокращенные фразы, что бы максимально полно представить таблицу администратору для последующих операций с его использованием.
Какие операции можно использовать в выражениях на языке 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 |
Как задать псевдоним для столбца в операторе выборки данных? Что можно использовать в качестве псевдонима столбца? Приведите примеры.
перед именами столбцов рекомендуется указывать псевдонимы таблиц;
псевдонимы таблиц действительны только для данной команды 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;
Какие операторы языка 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- Задает максимальное количество строк, которые могут быть удалены за текущий запрос.
Когда происходит завершение транзакции (явное и неявное) с сохранением произведенных ею изменений в базе данных?
Транзакции базы данных обладают свойствами, сокращенно называемыми ACID (Atomicity, Consistency, Isolation, Durability).
Неделимость (Atomicity). Транзакция либо выполняется полностью, либо не выполняется.
Согласованность (Consistency). Транзакция переводит базу данных из одного согласованного состояния в другое.
Изолированность (Isolation). Результаты транзакции становятся доступны для других транзакций только после ее фиксации.
Продолжительность (Durability). После фиксации транзакции изменения становятся постоянными.
Явные транзакции. По умолчанию, каждая команда выполняется как отдельная транзакция. Пользователь может объединить несколько команд в одну транзакцию, явно указав ее начало и конец.
Неявные транзакции. Не существует оператора начала транзакции. Транзакция начинается с началом сеанса работы с БД. Завершаетсятранзакция при следующих событиях:
Явно выполненный оператор завершения транзакции - rollback или commit
Оператор DDL
Завершение сеанса.
После окончания транзакции сразу неявно начинается новая транзакция.