Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012), страница 13
Описание файла
PDF-файл из архива "Кузин А.В., Левонисова С.В. Базы данных (5-е издание, 2012)", который расположен в категории "". Всё это находится в предмете "базы данных" из 6 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "базы данных (бд)" в общих файлах.
Просмотр PDF-файла онлайн
Текст 13 страницы из PDF
Соединение таблиц:SELECT Студент.*, Оценка.*, Дисциплина.[Наименование дисциплины] FROM (Студент INNER JOIN (Оценка INNERJOIN (Дисциплина ON Оценка.[Код дисциплины] = Дисцип63лина.[Код дисциплины])Оценка.[№ зач.книжки])ON Студент.[№ зач.книжки]=Здесь сначала происходит соединение таблиц ОЦЕНКА и ДИСЦИПЛИНА по ключу связи [Код дисциплины]. Соединение симметричное,т.е.
если коды дисциплины не совпадают, записи этих таблиц не соединяются. Затем происходит соединение таблиц СТУДЕНТ и ОЦЕНКА поключу связи [№ зач.книжки].Таким образом, при условии совпадения ключей связи на выходезапроса получается результат соединения трех таблиц.Удаление записей в таблице. В исходной таблице можно удалитьотдельные записи или все записи, сохранив при этом ее структуру и индексы. При удалении записей в индексированной таблицеавтоматически корректируются ее индексы:DELETE [таблица.*] FROM выражение WHERE условия отбораПолная чистка таблицы от записей и очистка индексов выполняются следующей операцией:DELETE * FROM таблицаПример 2.10.
Удаление всех записей в таблице:DELETE * FROM СтудентУдаление только тех записей, в которых поле [Дата рождения] больше указанной даты:DELETE * FROM Студент WHERE [Дата рождения]> #1.1.81 #Удаление в таблице записей, связанных с другой таблицей (условияудаления записей могут относиться к полям связанных таблиц):DELETE таблица.* FROM таблица INNERJOIN другая таблица ON таблица.[поле N] = [другая таблица].[поле М]WHERE условиеПример 2.11.
Удаление записей в таблице СТУДЕНТ, для которыхимеются связанные записи в таблице СТУДЕНТ-ЗАОЧНИК:DELETE Студент.* FROM Студент INNER JOIN [Студентзаочник] ON Студент.[Группа] = [Студент-заочник]. [Группа]Обновление (замена) значений полей записи. Изменение значений нескольких полей одной записи или группы записей табли64цы, удовлетворяющих условиям отбора производится следующейфразой:UPDATE таблица SET новое значение WHERE условия отбора Новое значение указывается как имя поля=новоезначениеПример 2.12. Отбор студентов, чьи фамилии начинаются на букву В идата рождения не превышает указанной, для перевода в группу 1212:UPDATE Студент SET [Группа] = "1212"WHERE [Фамилия] LIKE 'В*' AND [Дата рождения]#01/01/81#< =Изменение в таблице СТУДЕНТ номеров групп обучения путем добавления к ним буквы «а», если эти группы встречаются в таблице СТУДЕНТ-ЗАОЧНИК:UPDATE Студент INNER JOIN [Студент-заочник] ON Студент. [Группа] = [Студент-заочник].[Группа] SET [Группа] = [Группа]&"а"Организация запросов в форме SQLСинтаксис оператора SELECT.
Выборка с помощью оператораSELECT — это наиболее частая команда при работе с реляционной базой данных. Данный оператор обладает большими возможностями по заданию структуры выходной информации, указаниюисточников входной информации, способа упорядочения выходной информации, формированию новых значений и т.п. (табл. 2.5).При выполнении выборки могут формироваться и новые данные, так называемые вычисляемые поля, являющиеся результатом обработки исходных данных. Возможно упорядочение выводимых данных, формирование групп записей, подсчет групповыхитогов, формирование подмножеств данных (записей), являющихся основой для формирования условий по обработке следующегоэтапа — вложенных запросов.Универсальный оператор SELECT имеет следующую конструкцию:SELECT [предикат] {*|таблица.* | [таблица.]поле1 [,[таблица.] поле2[, ...]]}[AS псевдоним1[, псевдоним2[, ...]]]FROM выражение [, ...] [IN внешняя база данных][WHERE ...][GROUP BY ...]65[HAVING ...][ORDER BY ...][WITH OWNERACCESS OPTION]Синтаксис оператора SELECT реализует сложные алгоритмызапросов.Слово SELECT определяет структуру выводимой информации(это могут быть поля таблиц и вычисляемые выражения).Вычисляемое выражение включает в себя:• поля таблиц;• константы;• знаки операций;• встроенные функции;• групповые функции SQL;Пример 2.13.
Использование оператора SELECT:1. SELECT [Имя], [Фамилия] FROM Студент2. SELECT Т0Р5 [Фамилия] FROM Студент3. SELECT Т0Р5 [Фамилия] FROM Студент ORDER BY [Группа]В первом случае выбираются все записи таблицы СТУДЕНТ в составеуказанных полей. Причем, если все поля отбираются в том же самомпорядке, что и в структуре таблицы, можно использовать символ точки.Во втором случае отбирается пять первых фамилий студентов.В третьем случае отбирается пять первых фамилий студентов, а упорядочение записей осуществляется по учебным группам.Если используются одноименные поля из нескольких таблиц,включенных в предложение FROM, следует указывать перед именем этих полей имя таблицы через точку (.), т.
е. [Студент-заочник].[Группа] и [Студент].[Группа] — два одноименных поля из разныхтаблиц.Для изменения заголовка столбца с результатами выборкииспользуется служебное слово AS.Пример 2.14. Использование служебного слова AS:1. SELECT DISTINCT [Дата рождения] AS Юбилей FROMСтудент2. SELECT [Фамилия]&" "&[Имя] AS ФИО, [Дата рождения] AS Год FROM СтудентВ первом случае будут выведены неповторяющиеся даты рождениястудентов, которые имеют новое наименование — Юбилей.Во втором случае в результирующей таблице будут присутствоватьвсе записи, но вместо [Дата рождения] будет указан Год, а вместо Фамилия и Имя, соединенных вместе через пробел, — ФИО.66Т а б л и ц а 2.5Аргументы оператора SELECTАргументНазначение11редикатИспользуются для ограничения числа возвращаемыхзаписей:ALL — всех записей;DISTINCT — записей, различающихся в указанныхдля вывода полях;DISTINCTROW — записей, полностью различающихся по всем полям;ТОР — заданного числа записей или процента записейв диапазоне, соответствующем фразе ORDER BYТаблицаОпределяет имя таблицы, поля которой формируютвыходные данныеПоле1, Поле2Определяют имена полей, используемых при отборе(порядок следования полей определяет выходнуюструктуру выборки данных)Псевдоним1,11севдоним2Определяют новые заголовки столбцов результата выборки данныхFROMОпределяет выражение, используемое для задания источника формирования выборки (обязательно присутствует в каждом операторе)Внешняя базаданныхОпределяет имя внешней базы данных — источникаданных для выборки| WHERE...]Необязательный.
Определяет условия отбора записей|GROUP BY...] Необязательный. Указывает поля (максимум 10) дляформирования групп, по которым возможно вычисление групповых итогов; порядок следования полей определяет виды итогов — старший, промежуточный ит.п.| HAVING ...]Необязательный. Определяет условия отбора записейдля сгруппированных данных (задан способ группирования GROUP BY...)|ORDER BY...] Определяет поля для выполнения упорядочения выходных записей, порядок следования которых соответствует старшинству ключей сортировки.
Упорядочение возможно как по возрастанию (ASC), так и поубыванию (DES С) значения выбранного поляСлужит при работе в сети в составе защищенной рабо[WITHчей группы для указания пользователям, не обладаюOWNERACCESS OPTION] щим достаточными правами, возможности просмотрарезультата запроса или выполнения запроса67Наиболее часто слово AS применяется для наименований вычисляемых полей.Задание условий выборки. Предложение WHERE может содержать выражения, связанные логическими операторами, с помощьюкоторых задаются условия выборки (табл. 2.6).Т а б л и ц а 2.6Логические условия для построения условий выборкиОператорНазначениеОператорAndЛогическое И —конъюнкция (логическоеумножение)NotОтрицаниеEqvПроверка логическойэквивалентности выраженийOrЛогическое ИЛИ —дизъюнкция (включающее Ог)ImpЛогическая импликациявыраженийXorЛогическое ИЛИ(исключающее Ог)НазначениеКроме того, могут использоваться операторы для построенияусловий:LIKE — выполняет сравнение строковых значений;BETWEEN...AND — выполняет проверку на диапазон значений;IN — выполняет проверку выражения на совпадение с любымиз элементов списка;1S — выполняет проверку значения на Null.Заданные условия обеспечивают горизонтальную выборку данных, т.е.
результатом запроса будут только те записи, которыеудовлетворяют сформулированным условиям.Пример 2.15. Задание условий выборки:1. SELECT Студент.* FROM Студент WHERE [Дата рождения] >=#01 .01 .79#2. SELECT Студент.* FROM Студент WHERE [Дата рождения] >=#01 .01 .79# AND [Группа] IN ("1212", "1213")3. SELECT Студент.* FROM Студент WHERE [Дата рождения] BETWEEN #01.01.79# AND #01.01.81# AND [Группа] IN("1212", "1213")4. SELECT Студент.* FROM Студент INNER JOIN [Студент-заочник] On Студент.[Группа]= [Студент-заочник].[Группа] WHERE Студент.[Дата рождения]>=#01.01.79#68В первом случае выбираются студенты, родившиеся после 01.01.79.Во втором случае отбираются все студенты, обучающиеся в группах1212 или 1213, родившиеся после 01.01.79.В третьем случае выбираются студенты, дата рождения которых находится в заданном диапазоне, обучающиеся в любой из указанных групп.В четвертом случае выбираются студенты, которые обучаются в тех жегруппах, что и студенты-заочники, родившиеся после 01.01.79.Групповые функции SQL.
Групповые функции необходимы дляопределения статистических данных на основе наборов числовыхзначений:• Avg — вычисляет среднее арифметическое набора чисел, содержащихся в указанном поле запроса;• Count — вычисляет число выделенных записей в запросе;• Min, Мах — соответственно возвращают минимальное и максимальное значения из набора в указанном поле запроса;• StDev, StDevPs — возвращают среднеквадратическое отклонение соответственно генеральной совокупности и выборки дляуказанного поля в запросе;• Sum — возвращает сумму значений в заданном поле запроса;• Var, VarPs — возвращают дисперсию распределения соответственно генеральной совокупности и выборки для указанного поляв запросе.Для определения полей группирования указывается ключевоеслово HAVING для заданного условия по группе при вычислении групповых значений.Пример 2.16.
Использование групповых функций SQL:1. SELECT Фамилия, Avg(Результат) AS Средний баллFROM Результаты GROUP BY [№ зач.книжки]2. SELECT [Код дисциплины], Avg(Результаты) AS Средний балл FROM Результаты GROUP BY [Код дисциплины]В первом случае создается список фамилий студентов с указаниемсреднего балла для каждого из них.Во втором случае составляется список кодов дисциплин с указаниемсреднего балла по дисциплине.Пример 2.17. Использование групповых функций SQL:1. SELECT Фамилия, Avg(Результат) AS Средний баллFROM Результаты GROUP BY [№ зач.книжки] HAVING Avg(Результат)>4.52. SELECT [Код дисциплины], Avg(Результат)AS Средний балл FROM Результаты GROUP BY [Код дисциплины]HAVING Avg(Результат)<469В первом случае создается список фамилий студентов с указаниемсреднего балла для каждого из них и выводятся фамилии тех студентов,которые имеют средний балл выше 4,5.Во втором случае выводится список кодов дисциплин со среднимбаллом при условии, что он ниже 4.Подчиненный запрос.