- •БАЗЫ ДАННЫХ
- •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 Клиенты.Фамилия, Продажи.Продано FROM Клиенты, Продажи
WHERE
Клиенты.Код_клиента = Продажи.Код_клиента
Запрос: Вывести для каждого клиента суммарное количество покупок
SELECT Клиенты.Фамилия,
SUM (Продажи.Продано) AS Количество FROM Клиенты, Продажи
WHERE
Клиенты.Код_клиента = Продажи.Код_клиента GROUP BY Клиенты.Фамилия
Выборка из 3 таблиц проводится аналогично.
Запрос: Вывести для каждого клиента суммарное количество покупок по видам товара
SELECT Клиенты.Фамилия,
SUM (Продажи.Продано) AS Количество FROM Клиенты, Продажи, Товар
WHERE
(Клиенты.Код_клиента = Продажи.Код_клиента) and (Продажи.Код_товара=Товары.Код_товара)
GROUP BY Клиенты.Фамилия
Внешнее соединения
Результат запроса будет содержать все записи одной из таблиц, даже в том случае, если в связанной с ней таблице отсутствуют совпадающие значения.
Этот тип соединения реализуется с помощью оператора OUTER JOIN.
Различают:
•левое внешнее соединение LEFT OUTER JOIN – выборка будет содержать все записи таблицы, имя которой указано слева от оператора,
•правое внешнее соединение RIGHT OUTER JOIN
– выборка будет содержать все записи таблицы, имя которой указано справа от оператора,
•полное внешнее соединение FULL OUTER JOIN – выборка будет содержать все записи из правой и левой таблицы.
Синтаксис:
SELECT table1.field1, table2.field2, …. FROM table1
LEFT | RIGHT | FULL {OUTER } JOIN table2
ON условие
{LEFT | RIGHT | FULL {OUTER } JOIN table3
ON условие}
Запрос: Выбрать из таблицы «Товары» список товаров, а из таблицы «Продажи» - суммарное количество проданных товаров.
SELECT Товары.Наименование,
SUM (Продажи.Продано) AS Всего FROM Товары
LEFT OUTER JOIN Продажи
ON Продажи.Код_товара = Товары.Код_товара
GROUP BY Товары.Наименование
Команда создания таблицы — CREATE TABLE
CREATE TABLE имя_таблицы
({<определение_столбца> |<определение _ограничения _таблицы> } [,..., {<определение _столбца>| <определение _ограничения_ таблицы
>}])
определение_столбца — задание имени, типа данных и параметров отдельного столбца таблицы. Названия столбцов должны соответствовать правилам для идентификаторов и быть уникальными в пределах таблицы;
определение_ограничения_таблицы — задание некоторого ограничения целостности на уровне таблицы.
ограничение_столбца — с помощью этого предложения указываются ограничения, которые будут определены для столбца. Синтаксис предложения следующий:
<ограничение_столбца>::=[ CONSTRAINT
<имя_ограничения > ]
{[ DEFAULT <выражение>] | [ NULL | NOT NULL ] [ PRIMARY KEY | UNIQUE ] |
[FOREIGN KEY REFERENCES
<имя_главной_таблицы>[(<имя_столбца> [,...,n])] [ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ] | [CHECK (<условие проверки>)]}
CONSTRAINT — необязательное ключевое слово, после которого указывается название ограничения на значения столбца (имя_ограничения). Имена ограничений должны быть уникальны пределах базы данных.
DEFAULT — задает значение по умолчанию для столбца.
NULL|NOT NULL — ключевые слова, разрешающие (NULL) или запрещающие (NOT NULL) хранение в столбце значений NULL