Академический Документы
Профессиональный Документы
Культура Документы
Селективность
Виды объектов БД
• Таблицы
• View (Представления)
• Много других, вспомогательных
– Индексы
– Sequence (последовательности)
– Хранимые процедуры
– Партиции, Привилегии, Триггеры и много чего
еще…
Виды операций
Вид Ключевые слова
Чтение, выборка данных Select DML
Вставка новых данных Insert, merge, bulk DML
Обновление данных Update, merge DML
Удаление данных Delete, truncate DML,
DDL
Управление изменениями Commit, Rollback и другие
Операции над объектами Create, drop, alter – DDL
БД (изменение (table, index, trigger и
метаданных) т.д.)
Управление доступом Grant, Revoke
(изменение метаданных)
Изменение настр. сессии Set
Типы данных
Короткий текст – небольшая символьная строка переменной длины, для которой указывается
максимальная длина.
VARCHAR2(n) – Oracle, максимальная длина текста до 4000-32000 в зависимости от места
использования
VARCHAR(n) – MS SQL, максимальная длина текста около 4000 (возможно в свежих версиях больше)
Числовой тип
NUMBER (в Oracle) – число с плавающей точкой, до 36 значащих цифр
DECIMAL(n,m), NUMERIC(n,m) – любая БД десятичное число фиксированной точности, может быть
целым или дробным, обычно содержит не более 28 значащих цифр. Первый параметр задает
количество цифр, второй – количество цифр после запятой.
INT, BIGING – вариации целых чисел, есть в различных БД, реализации различны
Дата и время
DATE – в Oracle – дата с указанием времени
DATETIME – в MS SQL дата с указанием времени
Есть еще много разных других типов данных, они обычно специфичны для вида БД
Оператор SELECT
• SELECT [DISTINCT] список атрибутов [псевдоним]
• FROM список таблиц
• [WHERE условие выборки]
• [ORDER BY список атрибутов]
• [GROUP BY список атрибутов]
• [HAVING условие]
• [UNION выражение с оператором SELECT];
STUDENT
SURNAME NAME
Петров Антон
Петров Илья
Операторы сравнения
Оператор Значение
< Меньше, чем
> Больше, чем
= Равно
>= Больше или равно
<= Меньше или равно
<> Не равно
!= Не равно
Арифметические выражения
Обозначение Оператор
* Умножение
Приоритет
/ Деление
+ Сложение
- Вычитание
SELECT *
FROM EXAM_MARKS
WHERE MARK IN (4, 5);
SELECT *
FROM SUBJECT
WHERE HOUR BETWEEN 30 AND 40;
Операторы IN, BETWEEN, LIKE, IS NULL
LIKE – проверка соответствия строковых полей
NOT LIKE – проверка несоответствия строковых полей
% - любое количество любых символов
_ - один символ
ESCAPE ‘символ’ – исключающий символ
IS NULL – поле является пустым
IS NOT NULL – поле не является пустым
SELECT *
FROM STUDENT
WHERE SURNAME LIKE 'P%';
SELECT *
FROM STUDENT
WHERE SURNAME LIKE 'Сергей/_/_/_255' ESCAPE '/';
Неопределенное значение NULL
• NULL – значение, которое недоступно, не присвоено, неизвестно или
неприменимо
• Это не ноль и не пробел
• Для NULL алгебраические операции и операции сравнения порой дают
особый (неожиданный для новичка) результат
• coalesce(значение1, значение2, …) – функция, которая возвращает первое
значение отличающиеся от NULL. В Oracle есть часто применяется аналог –
nvl(значение1, значение2).
Практические задания №2
Конкатенация строк
• значимое_символьное_выражение || значимое_символьное_выражение
STUDENT
SELECT SURNAME ||'_'|| NAME FIO, STIPEND FIO STIPEND
FROM STUDENT Петров_Сергей 150
WHERE KURS = 4 AND STIPEND > 0; Иванов_Петр 300
Сергеев_Андрей 670
Коротков_Артем 300
Функции преобразования символов в строке
• INSTR — поиск подстроки, начало поиска задает начальную позицию в строке для
поиска подстроки. Тип возвращаемого значения — INT, функция возвращает позицию
найденной подстроки.
INSTR (<строка>,<подстрока>[,<начало поиска> [,<номер вхождения>]])
• ‘DD-Mon-YY’
• ‘DD-Mon-YYYY’
• ‘MM/DD/YY’ DD – формат дня
• ‘MM/DD/YYYY’ MON – формат месяца в текстовой форме
• ‘DD.MM.YY’ MM – формат месяца в числовой форме
• ‘DD.MM.YYYY’ YY – год в числовой форме
• ‘HH24’ HH – час в числовой форме
• ‘HH24:MI’ MI – минуты в числовой форме
• ‘HH24:MI:SS’ SS – секунды в числовой форме
• ‘HH24:MI:SS.FF’ FF – доли секунд в числовой форме
Работа с датами
• SYSDATE – это функция, возвращающая текущую дату и время сервера базы данных.
TODAY NEXT_WEEK
28.09.2010 05.10.2010
Функции для работы с датами
• MONTHS_BETWEEN – вычисляет количество месяцев между датой1 и датой2
MONTHS_BETWEEN (дата1, дата2)
SELECT *
FROM (SELECT NAME, SURNAME FROM STUDENT ORDER BY STIPEND)
WHERE ROWNUM<=5;
Нумерация строк
JOIN
9 NULL
8 NULL LEFT OUTER JOIN
1 1
2 2 RIGHT OUTER JOIN
3 3
4 4
FULL OUTER JOIN
5 5
6
NULL
NULL 7
Псевдоним (алиас) столбца или таблицы
Чем плох синтаксис через (+) : при нескольких полях соединения приходится
повторять (+), не понятно какие условия к каким соединениям относятся. На
практике, не редко встречаются запросы с 10-15 join, если использовать там плохой
синтаксис, они становятся не читаемы и очень часто там где должен быть left, по
ошибке получается inner – в итоге, проблемы, дефекты и тп.
Операторы объединения
• UNION – используется для объединения выходных данных двух или более SQL-запросов в
единое множество строк и столбцов. Дубликаты не выводит
• UNION ALL – используется для объединения выходных данных двух или более SQL-
запросов в единое множество строк и столбцов. Дубликаты выводит
• MINUS – используется для вывода строк первого запроса, которые не присутствуют во
втором запросе
• INTERSECT – используется для вывода общих или пересекающихся строк нескольких
запросов
SELECT CITY
FROM STUDENT
UNION
SELECT CITY
FROM LECTURER
UNION
SELECT CITY
FROM UNIVERSITY;
Операторы объединения
• UNION • UNION ALL
• MINUS • INTERSECT
Практические задания №6
Операторы для работы с данными в таблице
• INSERT INTO имя_таблицы [поля таблицы] VALUES (значение, значение) – осуществляет
вставку в таблицу новой строки.
• DELETE FROM имя_таблицы – удаляет строки из таблицы.
• UPDATE имя_таблицы SET изменение – обновляет значения полей.
• MERGE – обновляет значения полей на основании select (как update, но по данным
таблицы), при этом какого-то PK в таблице еще нет, merge позволяет добавить строку
(как insert).
Сессиями можно управлять (их можно убивать при помощи ключевого слова “kill”).