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

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

Оператор выборки SELECT

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

1.6. Оператор выборки SELECT

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

Оператор SELECT - средство, которое полностью абстрагировано от вопросов представления данных, что помогает сконцентрировать внимание на проблемах доступа к данным. Примеры его использования наглядно демонстрируют один из основополагающих принципов больших (промышленных) СУБД: средства хранения данных и доступа к ним отделены от средств представления данных. Операции над данными производятся в масштабе наборов данных, а не отдельных записей.

SELECT [ALL | DISTINCT ] {*|[имя_столбца [AS       новое__имя]]}

FROM имя таблицы [[AS] псевдоним] [,...п]

[WHERE <условие отбора>]

[ORDER BY <список полей> desc или asc]

[GROUP BY <список полей>] 

Используются встроенные функции

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

COUNT   –   подсчет количества в группе

AVJ   –   среднее арифметическое значение

МАХ

SUM

MIN

[HAVING   <критерии выбора групп>]  

Обработка элементов оператора SELECT выполняется в следующей последовательности:

- FROM – определяются имена используемых таблиц;

- WHERE   –   выполняется фильтрация строк объекта в соответствии с заданными условиями, при формирования запроса можно использовать , >, and, nod, or;

- GROUP BY   –   образуются группы строк , имеющих одно и то же значение в указанном столбце;

- HAVING   –   фильтруются группы строк объекта в соответствии с указанным условием, определят условие  по   которому   группы   включаются   в выходные данные, применяется только с GROUP BY;

- SELECT   –   устанавливается, какие столбцы должны присутствовать в выходных данных;

- ORDER BY   –   определяется упорядоченность результатов выполнения операторов. сортировка). Сортировать можно по нескольким полям. ASC возрастающий он принят по умолчанию, DESC убывающий;

Порядок предложений и фраз в операторе SELECT не может быть изменен. Только два предложения SELECT и FROM являются обязательными, все остальные могут быть опущены. SELECT   –   закрытая операция: результат запроса к таблице представляет собой другую таблицу. Существует множество вариантов записи данного оператора, что иллюстрируется приведенными ниже примерами.

Оператор SELECT определяет поля (столбцы), которые будут входить в результат выполнения запроса. В списке они разделяются запятыми и приводятся в такой очередности, в какой должны быть представлены в результате запроса. Если используется имя поля, содержащее пробелы или разделители, его следует заключить в квадратные скобки. Символом * можно выбрать все поля, а вместо имени поля применить выражение из нескольких имен.

Если обрабатывается ряд таблиц, то (при наличии одноименных полей в разных таблицах) в списке полей используется полная спецификация поля, т.е. Имя_таблицы. Имя_поля.

1.6.1. Предложение FROM

Предложение FROM задает имена таблиц и просмотров, которые содержат поля, перечисленные в операторе SELECT. Необязательный параметр псевдонима   –   это сокращение, устанавливаемое для имени таблицы.

Пример 1. Показать фамилии и имена студентов из таблицы «студент».

          SELECT Fam, Imy FROM Student;

При указании списка полей данные будут выводиться в соответствие с этим списком, а не в соответствии со структурой.

Пример 2. Показать студентов и день рождения.

SELECT Fam, Birthday FROM Student;

SELECT * FROM Student;

Пример 3. Показать города, в которых живут студенты.

SELECT City FROM Student;

SELECT DISTING City FROM Student;

         

Пример 4. Составить список сведений о всех клиентах.

SELECT * FROM Klient

Пример 5. Составить список всех фирм.

 

SELECT ALL Klient.Firma FROM Klient Или (что эквивалентно)

SELECT Klient.Firma FROM Klient

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

Предикат DISTINCT следует применять в тех случаях, когда требуется отбросить блоки данных, содержащие дублирующие записи в выбранных полях. Значения для каждого из приведенных в инструкции SELECT полей должны быть уникальными, чтобы содержащая их запись смогла войти в выходной набор.

Причиной ограничения в применении DISTINCT является то обстоятельство, что его использование может резко замедлить выполнение запросов.

1.6.2.. Предложение WHERE

С помощью WHERE  –  параметра пользователь определяет, какие блоки данных из приведенных в списке FROM таблиц появятся в результате запроса. За ключевым словом WHERE! следует перечень условий поиска, определяющих те строки, которые должны быть выбраны при выполнении запроса. Существует пять основных типов условий поиска (или предикатов):

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

- диапазон: проверяется, попадает ли результат вычисления выражения в заданный диапазон значений.

- принадлежность   множеству,   проверяется,   принадлежит   ли   результат   вычислений выражения заданному множеству значений.

- соответствие   шаблону,   проверяется,   отвечает   ли   некоторое   строковое   значение заданному шаблону.

- значение   NULL:   проверяется,   содержит   ли   данный   столбец   определитель   NULL (неизвестное значение).

Пример 6.  Отобразить студентов с ФИО Петров.

 SELECT Fam, Imy FROM Student WHERE Fam = "Петров";

Пример 7. Выбрать студентов 3   –   его курса получивших стипендию.

 SELECT Fam, Imy FROM Student WHERE Kurs = 3 AND Stip > 0; 

Запрос выбирающий в следующем порядке Курс, ФИО, Стипендия. SELECT Kurs, Fam, Stip FROM Student;

Сравнение

В языке SQL можно использовать следующие операторы сравнения: =   –   равенство; <   –   меньше; >   –   больше; <=   –   меньше или равно; >=   –   больше или равно; <>   –   не равно.

Пример 8. Показать все операции отпуска товаров объемом больше 20.

SELECT *

FROM Sdelka

WHERE Kolichestvo>20

Более сложные предикаты могут быть построены с помощью логических операторов AND, OR или NOT, а также скобок, используемых для определения порядка вычисления выражения. Вычисление выражения в условиях выполняется по следующим правилам.

- Выражение вычисляется слева направо.

- Первыми вычисляются подвыражения в скобках.

- Операторы NOT выполняются до выполнения операторов AND и OR.

- Операторы AND выполняются до выполнения операторов OR.

Для устранения любой возможной неоднозначности рекомендуется использовать скобки.

Пример 9. Вывести список товаров, цена которых больше или равна 100 и меньше или равна 150.

SELECT Nazvanie,Cena

FROM Tovar

WHERE Cena>=100 And Cena<=150

Пример 10. Вывести список клиентов из Москвы или из Самары.

SELECT Familiya, GorodKlienta

FROM Klient

WHERE GorodKlienta="Москва" Or GorodKlienta ="Самара"

Диапазон

Оператор BETWEEN используется для поиска значения внутри некоторого интервала, определяемого своими минимальным и максимальным значениями. При этом указанные значенья включаются в условие поиска.

BETWEEN <выражение 1> AND <выражение 2>

         Пример 11. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150.

SELECT Nazvanie, Cena

FROM Tovar

 WHERE Cena Between 100 And 150

         

       Пример 12. Список товаров, цена которых не лежит в диапазоне от 100 до 150.

SELECT * FROM Subject

WHERE Hour BETWEEN 30 AND 40 i*

Пример 13. Получить сведения о студентах получающих стипендию от 100   –   140 руб.

 SELECT * FROM Student WHERE Stip BETWEEN 100 AND 140

Пример 14. Вывести список товаров, цена которых лежит в диапазоне от 100 до 150.

SELECT Nazvanie, Cena

FROM Tovar

WHERE Cena Between 100 And 150

Принадлежность множеству

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

IN (<выражение 1>, <выражение 2>)

Пример 15. Вывести список клиентов из Москвы или из Самары

SELECT Familiya, GorodKlienta

FROM Klient

WHERE GorodKlienta in ("Москва", "Самара")

NOT IN используется для отбора любых значений, кроме тех, которые указаны в представленном списке.

Пример 16. Вывести список клиентов, проживающих не в Москве и не в Самаре.

SELECT Familiya, GorodKlienta

FROM Klient

WHERE GorodKlienta Not in ("Москва","Самара")

          Пример 17. Получить список предметов 1  –  ого, 2  –  ого семестра.

SELECT * FROM Subject WHERE Curs IN (1, 2) 4

         

          Пример 18.  Получить фамилии студентов 1  –  ого, 4  –  ого курса.

 SELECT Fam FROM Student WHERE Curs IN (1, 4)

Пример 19. Определить товары, покупку которых осуществляют только клиенты из Москвы, и никто другой.

SELECT DISTINCT Tovar.Nazvanie, Klient. GorodKlientа

FROM Tovar INNER JOIN

(Klient INNER JOIN Sdelka

ON Klient.KodKlientа=Sdelka.KodKlientа)

ON Tovar. КодTovarа=Sdelka. Kod Tovarа WHERE Tovar.Nazvanie NOT IN

(SELECT Tovar.Nazvanie

FROM Tovar INNER JOIN Klient INNER JOIN Sdelka

ON Klient.KodKlientа=Sdelka.KodKlientа)

ON Tovar.KodTovarа=Sdelka.KodTovarа

WHERE Klient.GorodKlientао'Москва')

Пример 20. Какие товары ни разу не купили московские клиенты?

SELECT DISTINCT Tovar.Nazvanie, Klient. GorodKlientа

FROM Tovar INNER JOIN

(Klient INNER JOIN Sdelka

ON Klient.KodKlientа=Sdelka.KodKlientа)

ON Tovar.KodTovarа=Sdelka.KodTovarа WHERE Tovar.Nazvanie NOT IN

(SELECT Tovar.Nazvanie FROM Tovar INNER JOIN

(Klient INNER JOIN Sdelka

ON Klient.KodKlientа=Sdelka.KodKlientа)

ON Tovar. KodTovarа=Sdelka.KodTovarа WHERE.GorodKlientа='Москва')

Соответствие шаблону

С помощью оператора можно выполнять сравнение выражения с заданным шаблоном, в котором допускается использование символов  –  заменителей:

- Символ   %     –     вместо   этого   символа   может   быть   подставлено   любое   Kolichestvo произвольных символов.

- Символ __ заменяет один символ строки.

- []   –   вместо символа строки будет подставлен один из возможных символов, указанный в этих ограничителях.

- [^]   –   вместо соответствующего символа строки будут подставлены все символы, кроме указанных в ограничителях.

Like применяется только с символьными выражениями. Просматривает символьное поле и выявляет совпадает ли значение поля с выражением в операторе Like.

Like <выражение>

Пример 21. Показать фамилии студентов начинающихся с буквы А SELECT * FROM Student WHERE Fam LIKE "A%"

Пример 22. Найти клиентов, у которых в номере телефона вторая цифра   –   4.

SELECT Klient.Familiya, Klient.Telefon

FROM Klient

WHERE Klient.Telefon Like"_4%"

Пример 23. Найти клинтов, у которых в номере телефона вторая цифра   –   2 или 4.

SELiiCT Klient.Familiya, Klient.Telefon

FROM Klient

WHERE Klient.Telefon Like "_[24]%"

Пример 24. Найти клиентов, у которых в номере телефона вторая цифра 2, 3 или 4.

SELECT Klient.Familiya, Klient.Telefon

FROM Klient.

WHERE Klient.Telefon Like "[2  –  4]%"

Пример 25. Найти клинтов, у которых в фамилии встречается слог "ро".

SELECT Klient.Familiya

FP ОМ Klient.

WHERE Klient.Familiya Like "%ро%"

Значение NULL

Оператор IS NULL используется для сравнения текущего значения со значением NULL   –  специальным значением, указывающим на отсутствие любого значения. NULL   –   это не то же самое, что знак пробела (пробел   –   допустимый символ) или ноль (0   –   допустимое число). NULL отличается и от строки нулевой длины (пустой строки).

Пример 26. Найти сотрудников, у которых нет телефона (поле Телефон не содержит никакого значения).

SELECT Familiya, Telefon

FROM Klient

WHERE Telefon Is Null

Пример 27. Выборка сотрудников, у которых есть телефон (поле Телефон,  содержит какое  –  либо значение).

SELECT Klient.Familiya, Klient.Telefon

FROM Klient.

WHERE Klient.Telefon Is Not ull

1.6.3. Предложение ORDER BY

В общем случае строки в результирующей таблице SQL  –  запроса никак не упорядочены. Однако их можно требуемым образом отсортировать, для чего в оператор SELECT помещается фраза ORDER BY, которая сортирует данные выходного набора в заданной последовательности. Сортировка может выполняться по нескольким полям, в этом случае они перечисляются за ключевым словом ORDER BY через запятую. Способ сортировки задается ключевым словом, указываемым в рамках параметра ORDER BY следом за названием поля, по которому выполняется сортировка. По умолчанию реализуется сортировка по возрастанию. Явно ога задается ключевым словом ASC. Для выполнения сортировки в обратной последовательности необходимо после имени поля, по которому она выполняется, указать ключевое слово DESC. Фраза ORDER BY позволяет упорядочить выбранные записи в порядке возрастания или убывания значений любого столбца или комбинации столбцов, независимо от того, присутствуют эти столбцы в таблице результата или нет. Фраза ORDER BY всегда должна быть последним элементом в операторе SELECT.

Пример 28. Вывести список клиентов в алфавитном порядке.

SELECT Klient.Familiya, Klient.Telefon

FROM Klient

ORDER BY Klient.Familiya,

Пример 29.  Показать записи из таблицы предметы в алфавитном порядке наименование предметов.

 SELECT * FROM Subject ORDER BY Name;

Пример 30. Показать в убывающем порядке количество часов

 SELECT * FROM Subject ORDER BY Hours DESC;

Пример 31.  Упорядочить по 2-м полям.

SELECT * FROM Subject ORDER BY Sem, Name;

Лекция "16. Потери напора по длине потока" также может быть Вам полезна.

Во фразе ORDER BY может быть указано и больше одного элемента. Главный (первый) ключ сортировки определяет общую упорядоченность строк результирующей таблицы. Если во всех строках результирующей таблицы значения главного ключа сортировки являются уникальными, нет необходимости использовать дополнительные ключи сортировки. Однако, если значения главного ключа не уникальны, в результирующей таблице будет присутствовать несколько строк с одним и тем же значением старшего ключа сортировки. В этом случае, возможно, придется упорядочить строки с одним и тем же значением главного ключа по какому  –  либо дополнительному ключу сортировки.

Пример 32. Вывести список фирм и клиентов. Названия фирм упорядочить в алфавитном порядке, имена клиентов в каждой фирме отсортировать в обратном порядке.

SELECT Klient.Firma, Klient.Familiya

FROM Klient

ORDER BY Klient.Firma, Klient.Familiya DESC

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