
- •Занятие 3 Инструкция select Простая выборка
- •Выборка с условием (фильтрация)
- •Фильтрация по одному полю
- •Расширенные условия отбора
- •Сортировка
- •Вычисляемые поля
- •Математические операции между столбцами.
- •Функция round
- •Текстовые операции. Сцепление столбцов. Функции len, left
- •Функции Даты
- •Условный оператор iif
- •Занятие 7 Статистические функции в sql
- •Группировка данных
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Фильтрация групп
- •Сортировка групп
- •Примеры:
- •Фамилия бажанова коваленко лапина
- •Занятие 8 Подзапросы
- •Использование подзапросов возвращающих одно значение
- •Использование подзапросов возвращающих несколько значений
- •Примеры с подзапросами
- •Соединение таблиц
- •Инструкции на изменение данных Инструкция: delete
- •Инструкция update
- •Инструкция: insert into
- •Insert into ИмяТаблицы
- •Комбинированные запросы
Сортировка
Определение:
Сортировка это расположение данных в определенном порядке.
Для сортировки отобранных данных используется предложение ORDER BY. В этом предложении указывается имя одного или нескольких столбцов, по которым сортируются результаты отбора.
Направление сортировки
Для сортировки в порядке возрастания используется ключевое слово ASC, а для сортировки по убыванию, ключевое слово DESС по умолчанию, сортировка всегда осуществляется в возрастающем порядке.
Сотрудники
Фамилия
Имя
Отдел
Лосев
Петр
3
Бобров
Михаил
3
Гарин
Петр
2
Романов
Андрей
3
Бобров
Алексей
1
Конев
Василий
1
Для таблицы "Сотрудники", применить
следующие запросы:
Сортировка по одному столбцу
Отсортировать
все строки по фамилии в порядке
возрастания.
Отсортировать
все строки по номеру отдела в порядке
убывания.
Сортировка по нескольким столбцам
Отсортировать
все строки по фамилии и отделу в порядке
возрастания.
Отсортировать
все строки по имени, в порядке возрастания
и фамилии, в порядке убывания.
Сортировка по одному столбцу
Запросы: Запрос 1(а) и Запрос 1(б), сортируют по возрастанию и совершенно идентичны по результату. Запрос 2, сортирует по убыванию.
Запрос 1(а)
SELECT
Фамилия, Имя, Отдел
FROM
Сотрудники
ORDER
BY
Фамилия
ASC
Фамилия
Имя
Отдел
Бобров
Михаил
3
Бобров
Алексей
1
Гарин
Петр
2
Конев
Василий
1
Лосев
Петр
3
Романов
Андрей
3
Запрос 1(б)
SELECT
Фамилия, Имя, Отдел
FROM
Сотрудники
ORDER
BY
Фамилия
Фамилия
Имя
Отдел
Бобров
Михаил
3
Лосев
Петр
3
Романов
Андрей
3
Гарин
Петр
2
Бобров
Алексей
1
Конев
Василий
1
Запрос 2
SELECT
Фамилия, Имя, Отдел
FROM
Сотрудники
ORDER
BY
Отдел DESС
Сортировка по нескольким столбцам
Для сортировки по нескольким столбцам, необходимо в предложении ORDER BY, перечислить столбцы сортировки и после имени каждого столбца, указать направление его сортировки (ASC,DESC)
Фамилия
Имя
Отдел
Бобров
Алексей
1
Бобров
Михаил
3
Гарин
Петр
2
Конев
Василий
1
Лосев
Петр
3
Романов
Андрей
3
SELECT
Фамилия, Имя, Отдел
FROM
Сотрудники
ORDER
BY
Фамилия
ASC,
Отдел
ASC
Фамилия
Имя
Отдел
Бобров
Алексей
1
Романов
Андрей
3
Конев
Василий
1
Бобров
Михаил
3
Лосев
Петр
3
Гарин
Петр
2
SELECT
Фамилия, Имя, Отдел
FROM
Сотрудники
ORDER
BY
Имя
ASC,
Фамилия
DESC
Предикаты
(лат. praedicatum - сказанное) - выражение, обозначающее какое-то свойство или действие
Предикат позволяют отобрать записи среди выбранных с помощью запроса на языке SQL. Располагаются сразу за инструкцией SELECT
Предикат TOP N
Возвращает N записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY.
SELECT
TOP
25
Фамилия
FROM
Студенты
WHERE
[Год Выпуска] = 1994
SELECT
TOP
10
Фамилия
FROM
Студенты
ORDER
BY
Балл
DESC
Предикат DISTINCT
Исключает записи, которые содержат повторяющиеся значения в выбранных полях.
SELECT
DISTINCT
Фамилия
FROM
Ведомость
Занятие 5
Логический оператор LIKE
Назначение оператора LIKE
Логический оператор LIKE применяется для поиска по шаблону, когда точного совпадения не требуется.
С
Фамилия
Телефон
Клемин
475-35-42
Минаев
357-67-98
Васильев
926-267-33-45
Абрамов
373-67-22
Юдин
397-76-90
Лебедев
916-456-35-33
Коваленко
311-54-77
Смирнов
903-255-29-15
Москвин
926-431-72-97
Романов
433-39-45
Для таблицы "Сотрудники", применить
следующие запросы:
Отобрать
строки (записи), где фамилия сотрудников
начинается на "К".
Отобрать
строки, где в номере телефона сотрудника
вторая цифра "7".
Отобрать
строки, где в номере телефона сотрудника
есть "97".
Отобрать
строки, где фамилии оканчиваются на
"ов",
а номер телефона оканчивается на "45".
Запрос 1.
SELECT
Фамилия, Телефон
FROM
Сотрудники
WHERE
Фамилия LIKE
"К*"
Фамилия
Телефон
Клемин
745-35-42
Коваленко
311-54-77
З
Фамилия
Телефон
Клемин
475-35-42
Абрамов
373-67-22
SELECT
Фамилия, Телефон
FROM
Сотрудники
WHERE
Телефон LIKE
"?7*"
З апрос 3.
SELECT
Фамилия, Телефон
FROM
Сотрудники
WHERE
Телефон LIKE
"*97*"
Фамилия
Телефон
Юдин
397-76-90
Москвин
926-431-72-97
З
SELECT
Фамилия, Телефон
FROM
Сотрудники
WHERE
Фамилия LIKE
"*ов"
AND
Телефон
LIKE
"*45"
Фамилия
Телефон
Романов
433-39-45
В приведенных запросах присутствуют некоторые специальные знаки: *,?, есть и другие. Эти специальные знаки называются метасимволами, и используются для задания различного вида шаблонов.
Метасимволы в операторе LIKE
Метасимволы: *, ?, #.
* - на месте этого метасимвола, стоит любое количество, любых символов.
? - на месте этого метасимвола, стоит один, любой символ.
# - на месте этого метасимвола, стоит одна, любая цифра.
Метасимвол []
Метасимвол [] используется для указания набора символов, каждый из которых, должен совпадать с символом, стоящим на месте метасимвола.
[акн] - на месте этого метасимвола, стоит одна из перечисленных букв.
[!акн] - на месте этого метасимвола, не должна стоять ни одна из перечисленных букв.
[а-д] - на месте этого метасимвола, стоит одна буква из указанного диапазона букв.
[358] - на месте этого метасимвола, стоит одна из перечисленных цифр.
[3-7] - на месте этого метасимвола, стоит одна цифра из указанного диапазона цифр.
[!358] - на месте этого метасимвола, не должна стоять ни одна из перечисленных цифр.
Примечание:
Знак ! отрицает те значения, что находятся в квадратных скобках. Конечно, можно написать запрос, где в роли отрицания используется логический оператор NOT, но с символом !, синтаксис выглядит проще.
Следующая таблица содержит примеры использования оператора шаблонов с метасимволами в операторе LIKE.
Шаблон из метасимволов |
Варианты, которые могут быть найдены |
a*a |
aa, aBa, aBBBa |
*ab* |
abc, AABB, Xab |
ab* |
abcdefg, abc |
a?a |
aaa, a3a, aBa |
a#a |
a0a, a1a, a2a |
?[acz]# |
dz4, @c8, Sc7 |
[a-z] |
f, p, j |
[!a-z] |
9, &, % |
[!0-9] |
A, a, &, ~ |
a[!b-m]# |
An9, az0, a99 |
С
Фамилия
Телефон
Клемин
475-35-42
Минаев
357-67-98
Васильев
926-267-33-45
Абрамов
373-67-22
Юдин
397\76\90
Лебедев
916-456-35-33
Коваленко
311\54\77
Смирнов
903-255-29-15
Москвин
926-431-72-97
Романов
926-39-45
Для таблицы "Сотрудники", применить
следующие запросы:
Отобрать
строки, где фамилия сотрудников состоит
из 6
символов.
Отобрать
строки, где номер телефона состоит
из 9
символов и вторая цифра либо "3"
либо "1"
Отобрать
строки, где номер телефона принадлежит
оператору "Мегафон".
Отобрать
строки, где вторыми буквами в фамилии
не
могут
быть "о",
"и",
"а",
"е".
Отобрать
строки, где предпоследняя
цифра телефона либо "3"
либо "1",
а последняя либо "3"
либо "5".
отрудники
Запрос 1.
SELECT
Фамилия, Телефон
FROM
Сотрудники
WHERE
Фамилия LIKE
"??????"
Фамилия
Телефон
Клемин
475-35-42
Минаев
357-67-98
Запрос 2
SELECT
Телефон
FROM
Сотрудники
WHERE
Телефон LIKE
"#[31]#?##?##"
Телефон
311\54\77
433-39-45
Запрос 3
SELECT
Телефон
FROM
Сотрудники
WHERE
Телефон LIKE
"926?###?##?##"
Телефон
926-267-33-45
926-431-72-97
З
Фамилия
Клемин
Абрамов
Юдин
Смирнов
SELECT
Фамилия
FROM
Сотрудники
WHERE
Фамилия LIKE
"?[!оиае]*"
З
Телефон
916-456-35-33
903-255-29-15
SELECT
Телефон
FROM
Сотрудники
WHERE
Телефон LIKE
"*[31][35]"