- •БАЗЫ ДАННЫХ
- •SQL (Structured Query Language) ─
- •SQL - это гибкий и эффективный язык, все средства которого применяются для манипулирования
- •Структура SQL:
- •Типы данных языка SQL/92 :
- •INTEGER или INT ─ целые числа. SMALLINT ─ целые числа меньшего диапазона.
- •VARCHAR(n) - строка символов переменной длины. BIT(n) ─ строка битов постоянной длины.
- •В стандарте SQL определены стандартные встроенные функции для обработки текста, чисел, даты-времени, определены
- •Операторы определения данных:
- •Операторы манипулирования данными:
- •Администрирование данных:
- •Соглашения:
- •Синтаксис оператора SELECT:
- •Простые запросы:
- •Выборка по условию:
- ••IN – предикат TRUE, когда сравниваемое значение входит в заданное множество (NOT IN
- ••IS NULL – предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению
- •Запросы (использовать все варианты ответа):
- •ORDER BY – список полей упорядочивания результата (ASC – возрастание, DESC – убывание).
- •Агрегатные функции:
- •Запросы:
- •Вычисляемые поля
- •GROUP BY – группирование результатов. SELECT и GROUP BY тесно связаны между собой.
- •Запросы:
- •Вывести среднее значение стипендии по группам:
- •Вложенные подзапросы
- •Виды подзапросов:
- •Накладываемые ограничения:
- ••В стандарте языка операторы сравнения расширены до многократных сравнений с использованием слов ANY
- •Определить студентов, у которых стипендии превышают начисления хотя бы одного студента в группе
- •Определить студентов, у которых стипендии превышают начисления любого студента в группе 1223
- •Предложение HAVING
- •Запрос: Получить группы, количество студентов в группе, среднюю стипендию для групп, у которых
- •Порядок обработки предложений в SELECT:
- •Многотабличные запросы
- •Самый простой запрос:
- •Поэтому перечисление таблиц используется с условием соединения записей из разных таблиц в предложении
- •Соединения равенства
- •Запрос: Вывести сведения о клиентах и их покупках (сведения в таблице ПРОДАЖИ).
- •Запрос: Вывести для каждого клиента суммарное количество покупок
- •Выборка из 3 таблиц проводится аналогично.
- •Внешнее соединения
- •Различают:
- •Синтаксис:
- •Запрос: Выбрать из таблицы «Товары» список товаров, а из таблицы «Продажи» - суммарное
- •Команда создания таблицы — CREATE TABLE
- •ограничение_столбца — с помощью этого предложения указываются ограничения, которые будут определены для столбца.
- •CONSTRAINT — необязательное ключевое слово, после которого указывается название ограничения на значения столбца
- •PRIMARY KEY — определение первичного ключа на уровне одного столбца (т. е. первичный
- •ON DELETE {CASCADE | NO ACTION} - эти ключевые слова определяют действия, предпринимаемые
- •CREATE TABLE Учебный_план (ID_План INTEGER NOT NULL,
- •Изменение структуры таблицы — ALTER TABLE
- •Добавим, например, в таблицу «Студенты» столбец Год_поступления следующим образом:
- •Удаление из таблицы «Студенты» столбца «Год_поступления»:
- •Удаление таблиц — DROP TABLE
- •Добавление данных —INSERT
- •Оператор удаления данных DELETE
- •Операция обновления данных UPDATE
- •Операторы создания и удаления индекса
- •Product
Администрирование данных:
CREATE DATABASE – создать новую БД, DROP DATABASE – удалить БД,
GRANT – предоставить права доступа, REVOKE – отменить права доступа и др.
Управление транзакциями:
COMMIT – завершить транзакцию, ROLLBACK – откат транзакции,
SAVEPOINT – сохранить промежуточную точку транзакции.
Соглашения:
-зарезервированные слова – ПРОПИСНЫМИ,
-слова определяемые пользователем – строчными,
-{обязательный элемент},
-[необязательный элемент],
-«…» - необязательная возможность повторения конструкции от 0 до нескольких раз,
-« | » - выбор одного из нескольких.
Синтаксис оператора SELECT:
SELECT [DICTINCT | ALL] {*| [список полей]} FROM <список таблиц>
[WHERE <условие выборки или соединения>] [GROUP BY <список полей результата>] [HAVING <условие для группы>]
[ORDER BY <список полей, по которым требуется упорядочить>]
Простые запросы:
SELECT *
FROM <таблица>
- выводит все столбцы и строки данной таблицы. SELECT < поле1>, < поле2>, … < полеN> FROM <таблица>
- выводит перечисленные столбцы из данной таблицы.
DISTINCT – исключает вывод дубликатов строк. ALL – вывод всех строк таблицы (по умолчанию).
Выборка по условию:
SELECT [DICTINCT | ALL] {*| [список полей]} FROM <список таблиц>
WHERE <условие выборки >
В качестве условий отбора могут быть использованы
предикаты:
•=, <>, >, <, <=, >=, AND, OR, NOT - для сравнения результатов вычисления двух выражений,
•BETWEEN a AND b – предикат TRUE, когда вычисленное значение попадает в указанный диапазон (NOT BETWEEN a AND b - когда не входит), для числовых и символьных, a < b,
•IN – предикат TRUE, когда сравниваемое значение входит в заданное множество (NOT IN – когда не входит),
•LIKE – задает шаблон поиска, применим к символьным полям:
-символ «_» допускает наличие одного символа в указанном месте (например: LIKE 'обл_ко '),
-символ «%» допускает в указанном месте последовательности любых символов произвольной длины (например: LIKE 'P%'),
•IS NULL – предикат, применяющийся для выявления равенства значения некоторого атрибута неопределенному значению (IS NOT NULL – все наоборот),
•EXIST (NOT EXIST ) – используют во встроенных подзапросах.
Примеры: имеем отношение
STUDENT (Kod, Fam, Im, Gruppa, Stip, Ocenka)
Запросы (использовать все варианты ответа):
Вывести всю информацию о студентах. Вывести фамилии студентов и их оценки.
Вывести фамилии студентов (уникальные значения).
Вывести фамилии студентов, получающих стипендию (не получающих).
Вывести фамилии студентов, получивших 4 и 5.
Вывести фамилии студентов, имеющих имена
Владимир и Анатолий.
Вывести фамилии студентов, имеющих фамилию от 'К ' до 'Р' включительно.
Вывести фамилии студентов, не имеющих оценки.
ORDER BY – список полей упорядочивания результата (ASC – возрастание, DESC – убывание).
Запрос:
Вывести фамилии в виде , отсортированном по столбцу Fam в порядке возрастания :
SELECT *
FROM student
ORDER BY Fam ASC
(ASC – по умолчанию, можно не писать).
Агрегатные функции:
COUNT – возвращает кол-во значений в таблице, SUM - возвращает сумму значений (числовых) в
столбце,
AVG - возвращает среднее значение (числовых) в столбце,
MIN - возвращает минимальное значение в столбце, MAX - возвращает максимальное значение в
столбце.
В качестве операнда функций – наименование одного столбца.
При вызове функций исключаются пустые значения (кроме функции COUNT(*)).