Методические рекомендации по изучению учебной дисциплины, задания на домашнюю контрольную работу №2 для учащихся заочной формы обучения по специальности 2-40 01 01



страница5/5
Дата09.08.2019
Размер2.95 Mb.
#128178
ТипМетодические рекомендации
1   2   3   4   5

Раздел GROUP BY позволяет выполнять группировку строк таблиц по определенным критериям. Для каждой группы можно выполнить специальные функции агрегирования, которые будут применены ко всем строкам в группе. Синтаксис раздела GROUP BY следующий:


[ GROUP BY [ALL] group_by_expression [,...n] [ WITH { CUBE | ROLLUP }]]
ALL. Если в запросе было определено условие, сужающее диапазон группировки выбираемых строк, то при указании в разделе GROUP BY ключевого слова ALL сервер будет выводить список всех групп, но не будет выполнять для них функции агрегирования.

Раздел HAVING имеет следующую структуру: HAVING .

Этот раздел в основном используется для указания условий поиска при выполнении группирования данных с помощью раздела GROUP BY. Конструкция содержит логические условия, определяющие диапазон строк, обрабатываемых запросом. Правила работы с этой конструкцией были рассмотрены при описании раздела WHERE.

Раздел ORDER BY используется, когда необходимо отсортировать данные в результирующем наборе. Синтаксис этого раздела следующий:


ORDER BY {order_by_expression [ ASC | OESC ] } [,...n]

Аргумент order_by_expression должен содержать имя одной из колонок, включенных в запрос. Можно использовать для сортировки колонку, не включенную в результат. При указании ключевого слова ASC данные будут отсортированы по возрастанию. Если необходимо отсортировать данные по убыванию, нужно использовать ключевое слово DESC. По умолчанию используется сортировка по возрастанию. Данные можно отсортировать по нескольким колонкам. Для этого необходимо ввести имена колонок через запятую с указанием порядка сортировки.

Оператор ALL. С помощью оператора ALL выполняется сравнение скалярного выражения со всеми значениями, возвращаемыми подзапросом. Скалярная величина сравнивается с каждым значением, возвращаемым подзапросом. Если логическое условие выполняется для всех возвращаемых подзапросом значений, только тогда все условие считается выполненным:
ехрr { = | <> | != | > | >= | !> | < | <= | !< } ALL (subquery)
Операторы SOME и ANY. С помощью этих операторов можно сравнивать скалярную величину со всеми значениями в колонке таблицы. Разницы между использованием операторов ANY и SOME нет. Если хотя бы в одной строке содержится значение, равное скалярной величине, то условие выполняется. Часто такой подход используется для получе­ния ответа на вопрос, имеется ли в колонке нужное значение.

Оператор BETWEEN. С помощью этого оператора можно получить ответ на вопрос, лежит ли величина в указанном диапазоне. Исходная величина задается аргументом test_expression. Аргумент begin_expression задает начало диапазона, а аргумент end_expression – конец диапазона.


test_expression [NOT] BETWEEN begin_expression AND end_expression
Оператор EXISTS. Этот оператор возвращает значение TRUE, если указанный подзапрос возвраща­ет хотя бы одну строку. В противном случае возвращается значение FALSE.
EXISTS (subquery)
Оператор IN. С помощью этого оператора можно проверить, соответствует ли выражение test_expression одному из перечисленных выражений или значений, возвращаемых подзапросом. При работе с подзапросами оператор IN можно заменить оператором «= ANY».
test_expression [NOT] IN (subquery | expression [,...n])
Оператор LIKE. С помощью этого оператора можно выполнять сравнение выражения с заданным шаблоном. Аргумент match_expression задает исходное выражение, для которого необходимо выполнить проверку. Шаблон для сравнения, включающий символы-заменители, задается с помощью аргумента pattern. Допускается использование следующих символов-заменителей:

«%». Вместо этого символа может быть подставлено любое количество произвольных символов.

«_». Заменяет один символ строки.

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

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

Как видно, некоторые символы ( «%», «_», «[», «Л» и «]») зарезервированы и их использование затруднительно. При заключении символов-шаблонов в квадратные скобки они воспринимаются как обычные символы. Тем не менее, операнд LIKE позволяет использовать специальный управляющий символ, задаваемый с помощью аргумента escape_character.


match_expression [NOT] LIKE pattern [ESCAPE escape_character]
Примеры.

Получить список всех авторов


SELECT author FROM authors;
получить список всех полей таблицы authors:
SELECT * FROM authors;
В том случае, когда нас интересуют не все записи, а только те, которые удовлетворяют некому условию, это условие можно указать после ключевого слова WHERE., найдем все книги, опубликованные после 1996 года:
SELECT title FROM titles WHERE yearpub > 1996;
Допустим теперь, что нам надо найти все публикации за интервал 1995 - 1997 гг. Это условие можно записать в виде:
SELECT title FROM titles WHERE yearpub>=1995 AND yearpub<=1997;
Другой вариант этой команды можно получить с использованием логической операции проверки на вхождение в интервал:
SELECT title FROM titles WHERE yearpub BETWEEN 1995 AND 1997;
При использовании конструкции NOT BETWEEN находятся все строки, не входящие в указанный диапазон.

Еще один вариант этой команды можно построить с помощью логической операции проверки на вхождение в список:


SELECT title FROM titles WHERE yearpub IN (1995,1996,1997);
Здесь мы задали в явном виде список интересующих нас значений. Конструкция NOT IN позволяет найти строки, не удовлетворяющие условиям, перечисленным в списке.

Наиболее полно преимущества ключевого слова IN проявляются во вложенных запросах, также называемых подзапросами. Предположим, нам нужно найти все издания, выпущенные компанией "Oracle Press". Наименования издательских компаний содержатся в таблице publishers, названия книг в таблице titles. Ключевое слово NOT IN позволяет объединить обе таблицы (без получения общего отношения) и извлечь при этом нужную информацию:


SELECT title FROM titles WHERE pub_id IN

(SELECT pub_id FROM publishers WHERE publisher='Oracle Press')

При выполнении этой команды СУБД вначале обрабатывает вложенный запрос по таблице publishers, а затем его результат передает на вход основного запроса по таблице titles.

Некоторые задачи нельзя решить с использованием только операторов сравнения. Например, мы хоти найти web-site издательтва "Wiley", но не знаем его точного наименования. Для решения этой задачи предназначено ключевое слово LIKE, его синтаксис имеет вид:


WHERE <имя_столбца> LIKE <образец> [ ESCAPE <ключевой_символ> ]
Образец заключается в кавычки и должен содержать шаблон подстроки для поиска. Обычно в шаблонах используются два символа:

  • % (знак процента) - заменяет любое количество символов;

  • _ (подчеркивание) - заменяет одиночный символ.

Попробуем найти искомый web-site:
SELECT publiser, url FROM publishers WHERE publisher LIKE '%Wiley%';
В соотвествии с шаблоном СУБД найдет все строки включающие в себя подстроку "Wiley". Другой пример: найти все книги, название которых начинается со слова "SQL":
SELECT title FROM titles WHERE title LIKE 'SQL%';
В том случае, когда надо найти значение, которое само содержит один из символов шаблона, используют ключевое слово ESCAPE и <ключевой_символ>. Литерал, следующий в шаблоне после ключевого символа, рассматривается как обычный символ, все последующие символы имеют обычное значение. Например, нам надо найти ссылку на web-страницу, о которой известно, что в ее url содержится подстрока "my_works":

     


SELECT site, url FROM wwwsites WHERE url LIKE '%my@_works%' ESCAPE '@';
При выполнении оператора SELECT результирующее отношение может иметь несколько записей с одинаковыми значениями всех полей. Чтобы исключить повторяющиеся записи из выборки используется ключевое слово DISTINCT. Ключевое слово ALL указывает, что в результат необходимо включать все строки.

В SQL также определены так называемые агрегатные функции, которые совершают действия над совокупностью одинаковых полей в группе записей. Среди них:



  • AVG(<имя поля>) - среднее по всем значениям данного поля;

  • COUNT(<имя поля>) или COUNT (*) - число записей;

  • MAX(<имя поля>) - максимальное из всех значений данного поля;

  • MIN(<имя поля>) - минимальное из всех значений данного поля;

  • SUM(<имя поля>) - сумма всех значений данного поля.

Следует учитывать, что каждая агрегирующая функция возвращает единственное значение.

Примеры:



  1. определить дату публикации самой "древней" книги в нашей базе данных

SELECT MIN(yearpub) FROM titles;




  1. подсчитать количество книг в нашей базе данных:

SELECT COUNT(*) FROM titles;


Область действия данных функции можно ограничить с помощью логического условия. Например, количество книг, в названии которых есть слово "SQL":
SELECT COUNT(*) FROM titles WHERE title LIKE '%SQL%';

Таблица 2 – Варианты заданий на домашнюю контрольную работу №2 по учебной дисциплине

«Базы данных и системы управления базами данных»


Последняя

цифра


шифра

Предпоследняя цифра шифра

0

1

2

3

4

5

6

7

8

9

0

5,56,76

17,60,85

8,46,90

9,41,75

28,47,67

25,45,86

20,33,69

2,51,77

11,50,62

27,59,83

1

18,38,72

21,49,89

10,44,68

16,35,73

29,31,65

26,53,88

23,37,79

14,43,82

30,54,87

1,52,81

2

22,55,84

3,32,80

4,40,78

15,42,74

6,39,66

13,57,61

19,36,63

24,34,64

12,58,71

7,48,70

3

29,58,64

8,51,78

26,43,65

18,35,63

9,42,61

27,44,90

5,40,89

7,33,73

25,38,85

30,53,84

4

13,36,77

15,34,87

28,47,82

11,31,67

16,32,76

2,52,79

4,41,80

23,50,62

17,56,66

3,60,71

5

14,39,83

19,49,86

22,45,75

12,48,88

6,54,81

10,37,70

21,59,68

20,55,72

1,46,69

24,57,74

6

11,35,86

1,53,63

14,42,73

27,36,90

12,49,88

5,59,75

22,34,67

9,52,81

15,54,85

7,50,64

7

2,51,70

4,40,89

8,41,71

19,44,65

16,48,83

21,47,82

10,32,68

13,45,76

18,31,80

29,58,69

8

24,60,72

26,33,84

20,55,74

25,56,87

23,43,61

3,37,77

17,54,79

30,39,66

28,46,62

6,38,78

9

8,31,90

4,38,71

25,56,74

22,35,72

3,49,82

16,37,73

11,55,88

6,44,85

12,45,77

13,60,70





Поделитесь с Вашими друзьями:
1   2   3   4   5




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница