Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си

Структура оператора SELECT

2021-03-09СтудИзба

Лекция 21. Структура оператора SELECT

Язык запросов строится на единственном операторе SELECT, используемом чаще всех операторов языка SQL. Он производит выборки данных из таблиц БД и предоставляет их пользователям в необходимом виде. Практически SELECT реализует всю мощь реляционной алгебры.

В наиболее общем виде он имеет следующий формат:

SELECT [DISTINCT или ALL] <имена полей возвращаемых запросом>

FROM <имена таблиц используемых в запросе>

WHERE <условия отбора записей>

GROUP BY <имена группируемых полей>

HAVING <условия отбора>

Рекомендуемые материалы

UNION <оператор select>

PLAN <план выполнения запроса>

ORDER BY <список полей сортировки>

SELECT - ключевое слово, которое сообщает СУБД, что эта команда - запрос. Все запросы начинаются этим служебным словом с последующим пробелом. За ним может следовать способ выборки - с удалением дубликатов записей (DISTINCT) или без удаления (ALL, по умолчанию). Затем через запятую следует список полей включаемых в результат запроса. Может использоваться символ «*» (звездочка) означает, что в результирующий набор включаются все поля из исходных таблиц или из указанной таблицы, например Товары.* (из таблицы товары выбираются все поля). При необходимости поля таблиц можно переименовать, для этого используется оператор AS.

Раздел FROM - используется совместно с SELECT, должен присутствовать в каждом запросе. В нем, через запятую, перечисляются используемые в запросе таблицы. В случае если таблиц несколько, то запрос неявно выполняет декартово произведение. Таблицам можно присвоить имена-псевдонимы, что бывает полезно для осуществления операции соединения таблицы с самой собою или для доступа из вложенного подзапроса к текущей записи внешнего запроса. Все последующие разделы оператора SELECT являются необязательными.

Если необходимо из таблицы А (таблица 6.1) выбрать только записи в необходимых полях (Фамилия, Зарплата), т.е. выполнить проекцию то можно записать следующий код (результат - таблица 7.2):

SELECT  A.Фамилия, A.Зарплата  FROM  А 

Полностью вся таблица будет получена в следующем случае:

SELECT  *  FROM  А 

В разделе WHERE задаются условия отбора записей в результат запроса, т.е. условие которому должна удовлетворять запись, чтобы попасть в результат запроса, аналог операции селекции в реляционной алгебре.

В выражении условий раздела WHERE могут быть использованы следующие предикаты:

· Предикаты сравнения { =, <>, >, <, >=, <= }, которые имеют традиционный смысл, например, следующий код языка SQL использованный для таблицы 6.1 даст результат, приведенный в таблице 7.1:

SELECT  *  FROM  А 

WHERE Зарплата<3000

· Предикат Between A and В - принимает значения между А и В. Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Одновременно в стандарте задан и противоположный предикат Not Between A and В, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы. Например:

SELECT  *  FROM  А 

WHERE Зарплата Between 2000 and 3000

В результате выполнения этого запроса будут возвращены все записи, у которых значения поля «Зарплата» находятся в интервале от 2000 до 3000, включительно.

· Предикат вхождения во множество - IN (множество) истинен тогда, когда сравниваемое значение входит во множество заданных значений. При этом множество значений может быть задано простым перечислением или встроенным подзапросом. Одновременно существует противоположный предикат NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество.

SELECT  *  FROM  А 

WHERE Фамилия IN(‘Иванов’, ‘Петров’)

В результирующий набор данных будут включены те записи, для которых значения поля «Фамилия» совпадут с элементами множества определенными предикатом сравнения IN, т.е. записи о сотрудниках: Иванов и Петров.

· Предикаты сравнения с образцом LIKE и NOT LIKE. Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл. По стандарту в шаблон могут быть включены специальные символы:

o символ подчеркивания (_) - для обозначения любого одиночного символа;

o символ процента (%) - для обозначения любой произвольной последовательности символов;

o остальные символы, заданные в шаблоне, обозначают самих себя.

SELECT  *  FROM  А 

WHERE Фамилия Like ‘П%’

В результате выполнения запроса будут получены все записи, значения поля «Фамилия» для которых совпадет с шаблоном ‘П%’, т.е. Все фамилии сотрудников начинающиеся с символа «П».

· Предикат сравнения с неопределенным значением IS NULL. Понятие неопределенного значения было внесено в концепции БД позднее. Неопределенное значение интерпретируется как значение, неизвестное на данный момент времени. При сравнении неопределенных значений не действуют стандартные правила сравнения: одно неопределенное значение никогда не считается равным другому неопределенному значению. Для вы явления равенства значения некоторого поля неопределенному применяют специальные стандартные предикаты: <имя поля>IS NULL и <имя поля > IS NOT NULL.

· Предикаты существования EXIST и не существования NOT EXIST. Эти предикаты относятся к встроенным подзапросам.

Раздел ORDER BY определяет список полей сортировки. Последовательность перечисления полей имеет важное значение и определяет порядок сортировки в результирующем отношении. Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания номеров групп. Приведем простой пример сортировки записей по полю «Фамилия»:

SELECT  *  FROM  А 

ORDER  BY  Фамилия

В разделе GROUP BY определяется список полей группировки. При группировке записи таблиц разбиваются на группы. В группы собираются записи, имеющие одинаковые значения полей указанных в разделе GROUP BY. Данный раздел позволяет выполнять операции над группами с применением агрегатных функций указанных в таблице 21.1

Таблица 21.1 – Основные агрегатные (итоговые) функции

Функция

Результат

COUNT

Количество строк или непустых значений полей, которые выбрал запрос

SUM

Сумма всех выбранных значений данного поля

AVG

Среднеарифметическое значение всех выбранных значений данного поля

MIN

Наименьшее из всех выбранных значений данного поля

MAX

Наибольшее из всех выбранных значений данного поля

В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу, и имеет тот же синтаксис, что и раздел WHERE.   Другими словами раздел HAVING используется при группировке вместо раздела WHERE.

Агрегатные функции можно использовать без группировки, если вся таблица будет рассматриваться как одна группа и результатом запроса будет одна строка. Например, требуется определить количество экземпляров книг библиотеки, в этом случае запрос будет иметь вид:

SELECT COUNT(*) AS Количество

FROM Экземпляры;

Если требуется определить количество экземпляров книг имеющихся сейчас в библиотеке, тогда запрос примет вид:

SELECT COUNT(*) AS Количество

FROM Экземпляры

GROUP BY Наличие

HAVING Наличие = Да;

Контрольные вопросы

1. В чем связь реляционной алгебры и оператора SELECT?

2. Назовите формат использования оператора SELECT в общем виде.

3. Как из результатов запроса исключить повторяющиеся записи?

4. Как накладываются условия на отбираемые записи?

5. Что такое предикаты?

6. Какие предикаты можно использовать в разделе WHERE?

7. Как выполняется сортировка?

8. Что общего между запросами MS Access и SQL?

Задания для самостоятельной работы

14. Организационное обеспечение КИС - лекция, которая пользуется популярностью у тех, кто читал эту лекцию.

Задание 1. Напишите запрос на получение информации о книгах, год издания которых больше 2000.

Задание 2. Получите список инвентарных номеров книг имеющихся в данный момент времени в библиотеке.

Задание 3. Получите список читателей, дата рождения которых находится в каком-либо интервале дат.

Задание 4. Получите список читателей, фамилии которых начинаются с буквы «А»

Задание 5. Напишите запрос на определение количества читателей библиотеки.

Во всех заданиях выполняйте сортировку.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее