
- •БАЗЫ ДАННЫХ
- •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

Запросы: |
Имя вычисляемого поля |
|||
Подсчитать и вывести |
|
|
|
(псевдоним) |
SELECT COUNT(*) AS kol |
|
|
|
|
|
|
kol |
||
FROM student |
|
|
|
10 |
Определить среднее значение |
|
|
||
|
стипендии |
|||
SELECT AVG (stip) AS sredn |
|
|
||
|
sredn |
|||
FROM student |
|
|
|
|
|
|
|
1250 |
|
|
|
|
|
|
|
|
|
|
|

Вычисляемые поля
SELECT Fam, Stip, Stip*1.5
FROM student

GROUP BY – группирование результатов. SELECT и GROUP BY тесно связаны между собой.
Если в запросе есть группировка, то каждый элемент списка SELECT должен иметь единственное
значение для всей группы. В SELECT могут включаться:
•имена столбцов,
•агрегатные функции,
•константы,
•выражения.
GROUP BY позволяет определить подмножество значений в особом поле в терминах другого поля и применить агрегирующую функцию к подмножеству.

Запросы:
Вывести количество студентов в каждой группе. SELECT Gruppa, COUNT(*) AS kol
FROM student
GROUP BY Gruppa
Вывести сумму стипендии, выдаваемой каждой группе.
SELECT Gruppa, SUM(Stip) AS stipend FROM student
GROUP BY Gruppa

Вывести среднее значение стипендии по группам:
SELECT Gruppa, AVG(Stip) AS sredn FROM student
GROUP BY Gruppa

Вложенные подзапросы
Стандарт языка позволяет в тело одного оператора SELECT внедрять другой оператор SELECT .
Получается внешний и внутренний (внедряемый) операторы запроса.
Обычно внутренний запрос генерирует значение, который проверяется в предикате внешнего запроса (в предложении WHERE или HAVING), определяющего, верно оно или нет.

Виды подзапросов:
-скалярный подзапрос возвращает одно значение,
-строковый подзапрос возвращает значения в виде одной строки,
-табличный подзапрос возвращает данные в виде таблицы.

Накладываемые ограничения:
-нельзя использовать в подзапросах ORDER BY (только в основном запросе),
-список в SELECT может включать только имена столбцов и выражения из них,
-по умолчанию имена столбцов в подзапросе относятся к таблице, указанной в FROM,
-подзапрос может быть только правым операндом,
-подзапросы, возвращающие более одной записи, могут использоваться только с многозначными операторами,
-в основном запросе нельзя использовать between.

Вывести фамилии и стипендии тех, у которых она > средней.
SELECT fam, stip FROM student
WHERE stip > (SELECT avg(stip) FROM student)

•В стандарте языка операторы сравнения расширены до многократных сравнений с использованием слов ANY и ALL.
•Слово ANY, поставленное в предикате сравнения, означает, что предикат будет TRUE, если хотя бы для одного значения из подзапроса, предикат сравнения =TRUE.
•Слово ALL требует, чтобы предикат сравнения был TRUE при сравнении со всеми строками подзапроса