27_28_Построение запросов SQL.pptx
- Количество слайдов: 40
Построение запросов SQL 1 БД_Тимофеева Е. В.
План: Определение данных. 2. Табличные, условные, скалярные выражения. 3. Обработка данных. 1. 2 БД_Тимофеева Е. В.
1. Определение данных Домен - это набор допустимых значений для одного или нескольких атрибутов. Например: Допустимыми значениями для атрибута «Пол» сущности «Работник» являются «М» и «Ж» . Домен этого атрибута состоит их двух строк длиной в один символ, имеющих указанные значения. 3 БД_Тимофеева Е. В.
Отношение – это плоская таблица, состоящая из столбцов и строк. 4 БД_Тимофеева Е. В.
два типа таблиц пользовательские таблицы (user table) – содержат информацию (данные по сделкам, заказам, персоналам); системные таблицы (system tables) – содержат описание базы данных 5 БД_Тимофеева Е. В.
Потенциальный ключ - это суперключ, который не содержит подмножества, также являющегося суперключом данного отношения. Потенциальный ключ К для данного отношения Р обладает двумя свойствами: 1. уникальность – в каждом кортеже отношения Р значение ключа К единственным образом идентифицируют этот кортеж; 2. неприводимость – никакое допустимое множество ключа К не обладает свойством уникальности. 6 БД_Тимофеева Е. В.
Отношение может иметь несколько потенциальных ключей. Если ключ состоит из нескольких атрибутов, то он называется составным ключом. Первичный ключ – это потенциальный ключ, который выбран для уникальной идентификации кортежей внутри отношения. 7 БД_Тимофеева Е. В.
Потенциальные ключи, которые не выбраны в качестве первичного ключа, называются альтернативными ключами. Внешний ключ – это атрибут или множество атрибутов внутри отношения, которое соответствует потенциальному ключу некоторого (может быть, того же самого) отношения. 8 БД_Тимофеева Е. В.
Ссылочная целостность – если в отношении существует внешний ключ, то значение внешнего ключа должно либо соответствовать значению потенциального ключа некоторого кортежа в его базовом отношении, либо задаваться определителем Null. Определитель Null – указывает, что значение атрибута в настоящий момент неизвестно или неприемлемо для этого кортежа. 9 БД_Тимофеева Е. В.
ограничение целостности CHEK Например, если в столбце хранится процентное значение, то необходимо гарантировать, что оно будет лежать в пределах от 0 до 100. CHEK ((Семестр>=1) OR (Семестр<=10)) 10 БД_Тимофеева Е. В.
2. Табличные, условные, скалярные выражения Авторы Код автора Фамилия Имя Город Александр Париж А 1 А 2 Пушкин А 3 Толстой Лев Москва А 4 Лермонтов Михаил Москва А 5 11 Дюма Достоевский Федор Санкт-Петербург БД_Тимофеева Е. В. Александр Санкт-Петербург
Книги Код книги Название книги Число страниц Цена К 1 Три мушкетера 356 125 руб. К 2 Евгений Онегин 150 100 руб. К 3 Война и мир 659 500 руб. К 4 Мцыри 123 56 руб. К 5 Медный всадник 180 78 руб. К 6 Преступление и наказание 320 280 руб. 12 БД_Тимофеева Е. В.
Книги авторов Код автора Код книги 1 А 1 К 1 2 А 2 К 2 3 А 2 К 5 4 А 3 К 3 5 А 4 К 4 6 А 5 К 6 13 БД_Тимофеева Е. В.
Издательство Код Издательство издательства Город Год основания Дрофа Москва 2000 И 2 АСТ Санкт. Петербург 1995 И 3 Детская литература Курск 1965 И 4 Лениздат Санкт. Петербург 1980 И 5 Терра Новгород 1992 И 1 14 БД_Тимофеева Е. В.
Издательство книг Код автора 1 2 3 4 5 6 15 А 1 А 2 А 3 А 4 А 5 БД_Тимофеева Е. В. Код книги К 1 К 2 К 5 К 3 К 4 К 6 Код издательства И 1 И 2 И 3 И 4 И 5
Запрос SQL состоит из следующих разделов: SELECT [предикат] * или | таблица. * или [таблица. ] поле 1 [AS псевдоним 1] FROM выражение таблицы [, . . . ] [IN внешняя база данных] [WHERE. . . ] [GROUP BY. . . ] [HAVING. . . ] [ORDER BY. . . ] [WITH OWNERACCESS OPTION] 16 БД_Тимофеева Е. В.
Инструкция SELECT Аргумент предикат Описание ALL, DISTINCTROW или TOP. Используются для ограничения числа возвращаемых записей. * из заданной таблицы или таблиц выбираются все поля. таблица Имя таблицы, из полей которой отбираются записи. поле 1 Имена полей, содержащих данные, которые необходимо извлечь. псевдоним 1, Имена, используемые как заголовки столбцов вместо псевдоним 2 исходных названий столбцов таблицы. 17 БД_Тимофеева Е. В.
Можно использовать следующие функции: Функция Avg. Вычисляет среднее арифметическое набора значений, содержащихся в определенном поле запроса. Пример: найти среднее значение количества страниц в книгах. SELECT Avg (Книги. [Число страниц]) AS [Среднее количество страниц] FROM Книги; 18 БД_Тимофеева Е. В.
Функция Count. Вычисляет количество записей, возвращенных запросом. Пример: найти количество книг. SELECT Count(*) AS [Количество книг] FROM Книги; или SELECT Count(Книги. [Код книги]) AS [Количество книг] FROM Книги; 19 БД_Тимофеева Е. В.
Функции Min, Max. Они возвращают минимальное или максимальное из значений, содержащихся в заданном поле запроса. Пример: Найти минимальное и максимальное количество страниц в книгах. SELECT Min(Книги. [Число страниц]) AS [Минимум], Max(Книги. [Число страниц]) AS [Maксимум] FROM Книги; 20 БД_Тимофеева Е. В.
Функция Sum. Возвращает сумму значений содержащихся в заданном поле запроса. Пример: Найти общую стоимость книг. SELECT Sum(Книги. Цена) AS [Общая стоимость] FROM Книги; 21 БД_Тимофеева Е. В.
Инструкция FROM Задает таблицы и запросы, содержащие выводящиеся в инструкции SELECT поля (т. е. источник данных): SELECT список полей FROM выражение таблицы [IN внешняя_база_данных] 22 БД_Тимофеева Е. В.
Аргумент Описание Имена полей, загружаемых вместе с любыми псевдонимами, статистическими функциями Список полей SQL, предикатами (ALL, DISTINCTROW или TOP) или с любым другим параметром инструкции SELECT. Выражение таблицы Выражение, определяющее одну или несколько таблиц для извлечения данных. Внешняя база данных Полный путь к внешней базе данных, содержащей все таблицы компонента выражение таблиц. 23 БД_Тимофеева Е. В.
Предложение WHERE Определяет, какие записи из таблиц, перечисленных в предложении FROM, обрабатываются инструкциями SELECT, UPDATE или DELETE. SELECT список полей FROM выражение таблицы WHERE условия отбора 24 БД_Тимофеева Е. В.
Аргумент Условия отбора 25 Описание Выражение, которому должны соответствовать записи, включаемые в результаты запроса. БД_Тимофеева Е. В.
Пример: Получить имена и фамилии авторов, которые проживали в Москве. SELECT Авторы. Фамилия, Авторы. Имя, Авторы. Город FROM Авторы WHERE (((Авторы. Город)="Москва")); 26 БД_Тимофеева Е. В.
Предложение GROUP BY Объединяет записи с одинаковыми значениями в указанном списке полей в одну запись. Сводное значение создается для каждой записи, если в инструкцию SELECT включена статистическая функция SQL, такая как Sum или Count. SELECT список полей FROM таблица WHERE условие отбора [GROUP BY список полей группы] 27 БД_Тимофеева Е. В.
Аргумент Список полей группы 28 БД_Тимофеева Е. В. Описание Имена 10 полей, используемых для группировки записей. Порядок следования имен в списке полей группы определяет уровень группировки — от самого высокого до самого низкого.
Инструкция HAVING Определяет групповую запись, отображаемую в инструкции SELECT с предложением GROUP BY. После того как GROUP BY сгруппирует записи, HAVING покажет те записи, которые отвечают условиям предложения HAVING. SELECT cписок_полей FROM таблица WHERE выбор_условия GROUP BY список_полей_ группы [HAVING условие_ группы] 29 БД_Тимофеева Е. В.
Аргумент Условие группы 30 БД_Тимофеева Е. В. Описание Выражение, определяющее отображаемую запись.
Пример: Получить все издательства, издавшие более 1 книги SELECT [Издательство книг]. [Код издательства] FROM [Издательство книг] GROUP BY [Издательство книг]. [Код издательства] HAVING COUNT([Издательство книг]. [Код книги])>1; 31 БД_Тимофеева Е. В.
Инструкция DELETE Создает запрос на удаление, удаляющий записи из одной или нескольких таблиц, перечисленных в предложении FROM и удовлетворяющих предложению WHERE. DELETE [таблица. *] FROM таблица WHERE условие_отбора 32 БД_Тимофеева Е. В.
Аргумент Описание Необязательное имя таблицы, из таблица которой удаляются записи. Имя таблицы, из которой удаляются таблица записи. Выражение, определяющее, какую Условия отбора запись нужно удалить. 33 БД_Тимофеева Е. В.
Пример: Удалить все издательства из города Москвы. DELETE Издательство. Город FROM Издательство WHERE (((Издательство. Город)='Москва')); 34 БД_Тимофеева Е. В.
Инструкция INSERT INTO Добавление одной или нескольких записей в таблицу. Это называется запросом на добавление. Запрос на добавление нескольких записей INSERT INTO конечный объект [(поле 1[, поле 2[, . . . ]])] [IN внешняя база данных] SELECT [источник. ]поле 1[, поле 2[, . . . ] FROM выражение таблицы Запрос на добавление одной записи INSERT INTO конечный объект [(поле 1[, поле 2[, . . . ]])] VALUES (значение 1[, значение 2[, . . . ]) 35 БД_Тимофеева Е. В.
Аргумент Конечный объект Описание Имя таблицы или запроса, в которые добавляются записи. Имена полей, в которые добавляются данные, если эти компоненты следуют за аргументом конечный объект, поле 1, поле 2 или имена полей, из которых будут взяты данные, если они следуют за аргументом источник. Внешняя база Путь к внешней базе данных Имя таблицы или запроса, из которых копируются источник записи. Выражение Имя таблицы или таблиц, из которых извлекаются таблицы данные. значение 1; значение 2 36 Значения, которые будут добавлены в отдельные поля новой записи. БД_Тимофеева Е. В.
Пример: добавить в таблицу «Книги» одну запись. INSERT INTO Книги ( [Код книги], [Название книги], [Число страниц], Цена ) VALUES (7, 'Отцы и дети', 320, 125); 37 БД_Тимофеева Е. В.
Инструкция UPDATE Создает запрос на обновление, изменяющий значения полей заданных таблиц на основании заданных условий. UPDATE таблица SET новое_значение WHERE условия_отбора; 38 БД_Тимофеева Е. В.
Аргумент таблица Новое значение Условия отбора 39 Описание Имя таблицы, содержащей данные, которые необходимо изменить. Выражение, определяющее значение, которое будет вставлено в определенное поле обновляемых записей. Выражение, определяющее какие записи будут, обновлены. Обновляются только удовлетворяющие выражению поля. БД_Тимофеева Е. В.
Пример: Для всех издательств, основанных после 2000 года, год основания поменять на год основания издательства И 5. UPDATE Издательство SET Город = (SELECT Издательство. [Город] FROM Издательство WHERE (((Издательство. [Код издательства])=5))) WHERE (((Издательство. Город)='Москва')); 40 БД_Тимофеева Е. В.
27_28_Построение запросов SQL.pptx