
5.Языки запросов.pptx
- Количество слайдов: 37
Языки запросов БД АРЕФЬЕВА Е. А. ЯЗЫК ЗАПРОСОВ QBE ЯЗЫК ЗАПРОСОВ SQL
Операции с данными Селекция Виды операция Реализация любой конкретной операции над данными включает в себя селекцию данных, т. е. выделение по некоторому критерию из всей совокупности именно нужных данных. Селекция выполняется любым из способов с использованием: логической позиции данного; значений данных, связей между данными. идентификация Арефьева Е. А. Языки запросов данного и нахождение его позиции в БД выборка (чтение) данного из БД; включение (запись) данного в БД; удаление данного из БД; модификация данного в БД.
Операции с данными По характеру способа получения результата Процедура БД Если результат операции Процедура БД (обобщенная получается путем прохождения по связям (манипулированием указателей), реализованным в структуре БД, то операции называются навигационными. Если в операции определяются только требования к результату, но не задается способ его получения, то операции называются спецификационными. Арефьева Е. А. Языки запросов операция) - это последовательность операций, позволяющих реализовать определенный алгоритм обработки данных С помощью процедур СУБД может выполнять автоматическую обработку различных ситуаций, возникающих при функционировании системы (вычисление значения атрибутов, отсутствующих в БД, контроль целостности данных и доступа к ним, сбор статистики обращения к данным и т. п. )
Язык запросов QBE QUERY-BY-EXAMPLE (ЗАПРОС ПО ПРИМЕРУ) – ТАБЛИЧНЫЙ ЯЗЫК ЗАПРОСОВ Арефьева Е. А. Языки запросов
QBE - запросы Связи Структура запроса Поле 1 Поле 2 Поле 3 Поле 4 Поле 5 Условия … … v. Последовательность атрибутов выполняют роль иерархической группировки. v. Допускаются простые и сложные условия (с логическими связками). v. И – на одной строке (Аnd) v. ИЛИ – на разных (Or) v. Between, v. Like v. Виртуальные атрибуты Арефьева Е. А. Языки запросов Совместная обработка нескольких таблиц 3 варианта связи: объединение по совпадающим полям, объединение «слева» и «справа» Отсутствие связи: декартово произведение Самообъединение
QBE – запросы: основные типы Вычисляемые поля (виртуальный атрибут): агрегирующие и обычные. Запрос с параметром Перекрестные запросы Корректирующие запросы: на обновление, удаление, добавление записей; создание таблицы. Специальные запросы: поиск записей, не имеющих подчиненных; поиск повторяющихся записей (по конкретным значениям полей). Запросы в Access Арефьева Е. А. Языки запросов
Язык запросов SQL STRUCTURE QUERY LANGUAGE (СТРУКТУРНЫЙ ЯЗЫК ЗАПРОСОВ) Арефьева Е. А. Языки запросов
Возможности Ограничения целостности Язык определения схемы (SQL-DDL) – описание и создание объектов БД Язык манипулирования данными (SQL-DML) – задание поисковых и корректирующих запросов Арефьева Е. А. Языки запросов Уникальность • Первичный ключ • Признак уникальности Ограничения на столбец • Ограничение на неопределенное значение • Ограничение контроля Целостность связей
Структура оператора SELECT FROM WHERE GROUP BY HAVING ORDER BY Арефьева Е. А. Языки запросов • определяет столбцы таблицы, полученные в результате запроса • указываются таблицы, которые используются при формировании запроса • задает условие отбора записей • используется для определения групп выходных строк, к которым могут применятся агрегатные функции • задает условие отбора для групп • задает вариант сортировки
Структура оператора SELECT [предикат] {{функция агрегирования. . |выражение для вычисления значений [AS псевдоним]}. . , } | {спецификатор. *} |* FROM {{имя таблицы [AS][имя корреляции]. [(имя столбца, …)]} |{подзапрос [AS][имя корреляции]. [имя столбца, …]} | соединенная таблица}. . , . . [WHERE предикат] [GROUP BY {{[имя таблицы|имя корреляции]}. ] имя столбца}. . , . }] [HAVING предикат] [UNION|INTERSECT|EXCEPT}[ALL] [CORRESPONDING [BY ( имя столбца. . , . . )]] Оператор SELECT|TABLE имя таблицы| конструктор значений таблицы] [ORDER BY {{ столбец-результат [ASC|DESC]}. , . . } |{{ положительное число[ASC|DESC]}. , . . }]} Арефьева Е. А. Языки запросов
Структура оператора SELECT • [предикат] • { • функция агрегирования. . • |выражение для вычисления значений • [AS псевдоним]} - задает имя столбцарезультата • |* - включает все поля таблицы • | {спецификатор. *} - все поля указанной таблицы Арефьева Е. А. Языки запросов Предикат Обращение к полям: <имя таблицы>. ALL - все записи <имя поля> DISTINCT - убирает повторяющиеся строки в Агрегированные соответствии с выбранными функции: полями COUNT – количество DISTINCTROW - опускает SUM – сумма данные, основанные на целиком повторяющихся записях MAX – максимум MIN – минимум TOP n [PERCENT] - возвращает определенное число (процент) AVG – среднее записей, находящихся в начале Агрегированные функции диапазона, описанного с могут использоваться помощью предложения ORDER вместе с GROUP BY BY
Структура оператора SELECT FROM • {имя таблицы [AS][имя корреляции]. [(имя столбца, …)]} • |{подзапрос [AS][имя корреляции]. [имя столбца, …]} • | соединенная таблица}. . , . . Арефьева Е. А. Языки запросов Cross • Прямое декартово произведение [IN внешняя • Эквивалентное Inner (внутреннее) База. Данных] Left Right Full Union • Левое (внешнее) • Правое (внешнее) • Полное (правое +левое) • Объединение
Пример связей Левое соединение Объединение Внутреннее соединение SELECT Группа. [№ группы], Группа. Специальность, SELECT Группа. Специальность, Студент. №зачетки, Группа. Специальность, Студент. ФИО Студент. №зачетки, FROM Группа LEFT JOIN Студент. ФИО Студент ON Группа. [№ Студент. ФИО группы] = Студент. Группа; FROM Группа UNION JOIN Перекрестное соединение FROM Группа INNER Студент ON Группа. [№ SELECT Группа. Специальность, Студент. ФИО, Студент. №зачетки FROM Группа, Студент; Арефьева Е. А. Языки запросов JOIN Студент ON группы] = Студент. Группа; Группа. [№ группы] = Студент. Группа;
Пример Все поля таблицы «Группа» SELECT Группа. *, Студент. ФИО FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа; Все поля выбранных таблиц SELECT * FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа; Исключение повторяющихся значений в выбранных полях SELECT Distinct Группа. Специальность FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа; Первые 10 значений SELECT TOP 10 Студент. *, Группа. Специальность FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа; Арефьева Е. А. Языки запросов
Структура оператора SELECT WHERE • предикат Предложение WHERE не является обязательным Предложение WHERE может содержать до 40 выражений, связанных логическими операторами, такими как And и Or. Арефьева Е. А. Языки запросов Интервальный предикат Between Начало and Конец Предикат In (список значений|подзапрос) Предикат проверки на неопределенное значение Is[not]Null Предикат подобия Like выражение (_- единичный символ; % - набор символов) Квантор существования Exists (подзапрос)
Пример Between SELECT Студент. *, Группа. Специальность FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа WHERE ((Студент. №зачетки) Between [нижняя граница] And [верхняя граница]); In SELECT Студент. *, Группа. Специальность FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа WHERE ((Группа. Специальность) In ("Финансы и кредит", "Мировая экономика")); Like SELECT Группа. Специальность, Студент. ФИО FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа WHERE ((Студент. ФИО) Like "А%"); Арефьева Е. А. Языки запросов
Пример Is Null SELECT Группа. [№ группы], Группа. Специальность, Студент. №зачетки FROM Группа LEFT JOIN Студент ON Группа. [№ группы] = Студент. Группа WHERE ((Студент. №зачетки) Is Null); Exists SELECT * FROM Группа WHERE EXISTS (SELECT * FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа) Арефьева Е. А. Языки запросов
Структура оператора SELECT Объединяет записи с GROUP BY • {{[имя таблицы • |имя корреляции]}. ] • имя столбца}. . , . }] Арефьева Е. А. Языки запросов одинаковыми значениями в указанном списке полей в одну запись. Используется с агрегированными функциями. Если агрегированные функции используются без Group By, то они применяются ко всем записям. Конструкция работает на одном уровне.
Пример SELECT Группа. Специальность, Count(Группа. [№ группы]) AS [Count-№ группы] FROM Группа GROUP BY Группа. Специальность; Арефьева Е. А. Языки запросов
Структура оператора SELECT HAVING • предикат Определяет, какие сгруппированные записи отображаются при использовании инструкции SELECT с предложением GROUP BY. Арефьева Е. А. Языки запросов SELECT Группа. Специальность, Count(Группа. [№ группы]) AS [Count-№ группы] FROM Группа GROUP BY Группа. Специальность HAVING ((Count(Группа. [№ группы]))>0);
Структура оператора SELECT ORDER BY • [ASC • |DESC] Определяет вид сортировки (по возрастанию/убыванию) По умолчанию ASC Арефьева Е. А. Языки запросов SELECT TOP 10 Студент. *, Группа. Специальность FROM Группа INNER JOIN Студент ON Группа. [№ группы] = Студент. Группа ORDER BY Группа. Специальность;
Запросы на создание объектов БД ЗАПРОСЫ НА СОЗДАНИЕ ОБЪЕКТОВ БД Арефьева Е. А. Языки запросов
Ограничения целостности в SQL Уникальность • PRIMARY KEY - Первичный ключ • UNIQUE - Признак уникальности Ограничения на столбец • NOT NULL - Ограничение на неопределенное значение • Ограничение контроля Целостность связей • FOREIGH KEY – имена полей ссылающейся таблицы (внешний ключ) • REFERENCES – ссылка на родительскую таблицу Триггеры • Активизируются при возникновении событий • Ассоциируются с операциями UPDATE, INSERT, DELETE Арефьева Е. А. Языки запросов
Инструкция CREATE TABLE • • [{GLOBAL|LOCAL}| TEMPORARY] – временные таблицы Имя таблицы ({ОПРЕДЕЛЕНИЕ СТОЛБЦА| [ограничение таблицы]}, … • [ON COMMIT {DELETE|PRESERVE} • ROWS]) - завершение транзакции Арефьева Е. А. Языки запросов
Инструкция CREATE TABLE ОПРЕДЕЛЕНИЕ СТОЛБЦА • Имя столбца| • {имя домена| тип данных [размер ]} • [ограничение столбца: NOT NULL| PRIMARY KEY| UNIQUE| CHECK| FOREIGH KEYREFERENCES] • [DEFAULT значение по умолчанию] Арефьева Е. А. Языки запросов
Пример CREATE TABLE Группы (№ группы NUMERIC PRIMARY KEY, Специальность CHAR (30) NOT NULL, Плановый набор NUMERIC NOT NULL CHECK <30) CREATE TABLE Студенты (№зачетки NUMERIC PRIMARY KEY, ФИО CHAR (50) NOT NULL, Группа NUMERIC NOT NULL, FORIGN KEY (Группа) REFERENCES Группы (№ Группы)) Арефьева Е. А. Языки запросов
Инструкция ALTER TABLE имя таблицы • {ADD [COLUMN] определение столбца} • |{ALTER [COLUMN] <имя столбца> • {SET DEFAULT значение по умолчанию} • | {DROP DEFAULT} • |{DROP[COLUMN] имя столбца RESTRICT|CASCADE} • |{ADD определение ограничения для таблицы} • |{DROP CONSTAINT имя ограничения RESTRICT|CASCADE} Арефьева Е. А. Языки запросов
Инструкция CREATE DOMAIN имя домена • [AS] тип данных • [DEFAULT значение по умолчанию] • [определение ограничения] Арефьева Е. А. Языки запросов
Виртуальные таблицы: Представление VIEW CREATE VIEW Представление можно Имя представления рассматривать как хранимый запрос. Освобождает пользователя от просмотра ненужной информации Повышает защиту данных Упрощение сложных запросов [{столбцы выборки}] AS SELECT … Виртуальная таблица, данные для которой получаются из базовых таблиц или других представлений, может содержать вычисляемые поля. Арефьева Е. А. Языки запросов
Виртуальные таблицы: Курсор CURSOR Для его определения используется запрос. DECLARE имя CURSOR FOR подзапрос. Курсоры используются только во встроенном SQL с целью стыковки позаписных языков с теоретикомножественными. Арефьева Е. А. Языки запросов OPEN CURSOR имя курсора FETCH [[NEXT |PRIOR |FIRST |LAST |{ABSOLUTE|RELATION спецификация значений}] FROM] имя курсора CLOSE имя курсора
Корректирующие запросы Арефьева Е. А. Языки запросов
Инструкция INSERT INTO • таблица-назначение [(поле_1[, поле_2[, . . . ]])] • Выражение запроса • | конструктор значений таблицы • |{DEFAULT VALUES} Арефьева Е. А. Языки запросов
Инструкция INSERT INTO Запрос на добавление одной записи INSERT INTO • таблица-назначение [(поле_1[, поле_2[, . . . ]])] VALUES • (значение_1[, значение_2[, . . . ]) Арефьева Е. А. Языки запросов Пример INSERT INTO Группа ([№ группы], Специальность ) VALUES ("454", "Менеджмент");
Инструкция INSERT INTO Запрос на добавление нескольких записей Пример INSERT INTO • таблица-назначение [(поле_1[, поле_2[, . . . ]])] SELECT • [таблица-источник. ] поле_1[, поле_2[, . . . ] FROM • выражение Арефьева Е. А. Языки запросов Группа ( [№ группы] ) SELECT Студент. Группа FROM Группа RIGHT JOIN Студент ON Группа. [№ группы] = Студент. Группа WHERE (((Группа. [№ группы]) Is Null));
Инструкция UPDATE • имя таблицы • SET • имя столбца = новое значение , • [имя столбца = новое значение] • [WHERE условие Отбора] Арефьева Е. А. Языки запросов UPDATE Студент SET Студент. ФИО = "Иванова И. И. " WHERE (((Студент. №зачетки)= 156345));
Инструкция DELETE • FROM • таблица • [WHERE • условие. Отбора] Арефьева Е. А. Языки запросов DELETE FROM Студенты WHERE № группы = 730261
Успешного Вам проектирования БД!!! СПАСИБО ЗА ВНИМАНИЕ!!!
5.Языки запросов.pptx