- •Практика по созданию бд.
- •Часть 2. Язык sql
- •Простейшая инструкция select для одной таблицы
- •Простейшая инструкция select для нескольких таблиц. Inner join
- •Полная инструкция select. Предложения
- •Предложение order by (Сортировка)
- •Предикаты Top n, distinct
- •Занятие 3. Инструкция select
- •Фильтрация. Операторы or, and, in, is null.
- •Фильтрация. Логический оператор like
- •Условным оператором iif
- •Запрос с параметром
Фильтрация. Логический оператор like
Назначение оператора LIKE
Логический оператор LIKE применяется для поиска по шаблону, когда точного совпадения не требуется.
Метасимволы в операторе LIKE *, ?, #, []
* - на месте этого метасимвола, стоит любое количество, любых символов или их отсутствие
? - на месте этого метасимвола, стоит один, любой символ.
# - на месте этого метасимвола, стоит одна, любая цифра.
[] - Метасимвол [] используется для указания набора символов, каждый из которых, должен совпадать с символом, стоящим на месте метасимвола.
[акн] - на месте этого метасимвола, стоит одна из перечисленных букв.
[!акн] - на месте этого метасимвола, не должна стоять ни одна из перечисленных букв.
[а-д] - на месте этого метасимвола, стоит одна буква из указанного диапазона букв.
[358] - на месте этого метасимвола, стоит одна из перечисленных цифр.
[3-7] - на месте этого метасимвола, стоит одна цифра из указанного диапазона цифр.
[!358] - на месте этого метасимвола, не должна стоять ни одна из перечисленных цифр.
SELECT Фамилия,
Серия, [Номер Паспорта] FROM
Студенты WHERE
Фамилия LIKE
“К*”
WHERE Фамилия LIKE “К??????” (Киташов Комаров Карелин…)
WHERE Фамилия LIKE “*си*” (Сидоренко Васильев … )
WHERE Адрес LIKE “*Кравченко*” (г. Москва ул. Кравченко д.4 кв.375)
WHERE [Номер Паспорта] LIKE “#####7” (647467 897657 334507…)
WHERE [Номер Паспорта] LIKE “*7” (647467 897657 334507…)
WHERE [Номер Паспорта] LIKE “#####[38]” (964648 757653 231808…)
WHERE [Номер Паспорта] LIKE “###38#” (646389 576386 318380…)
Что делает данный запрос?
SELECT
Фамилия,
Серия, [Номер
Паспорта] FROM
Студенты Вар.1
WHERE Серия
NOT LIKE
“####”
OR
[Номер
Паспорта]
NOT
LIKE
“######” Вар.2
WHERE NOT
(Серия
LIKE
“####”
AND
[Номер
Паспорта]
LIKE
“######”)
Фамилия
Серия
Номер
Паспорта
КИЙКО
4534
65734
ДЯЧКИН
370
527649
ЛИСИЧКИН
9567
64Ж395
ГРЕБЕНЩИКОВ
57Р2
810,45
Условным оператором iif
Синтаксис:
IIF (Условие, если истина, если ложь)
IIF (Условие, если истина, IIF (Условие, если истина, если ложь))
IIF (Условие, если истина, IIF (Условие, если истина, IIF(….))…)
Ведомость
ID_С
Оценка
ID_Д
1
3
1
1
2
2
1
5
3
2
4
1
2
5
2
2
4
3
3
2
2
3
5
3
4
4
1
…
…
…
10
2
1
10
3
2
10
4
3
Дисциплины
ID
Дисциплина
1
Информатика
2
Линейка
3
Иностранный
Студенты
Фамилия
Дата
Пол
Группа
ID
Васильева
23.11.1998
Ж
103
1
Тюрин
13.09.1997
М
103
2
Паневкина
11.01.1998
Ж
101
3
Пахомов
15.12.1997
М
101
4
Маркова
17.07.1998
Ж
5
Большаков
29.12.1997
М
103
6
Глубоков
10.02.1996
М
101
7
Брызгалов
01.03.1996
М
102
8
Максимов
07.05.1998
М
102
9
Асеева
11.07.1997
Ж
101
10
SELECT Фамилия,
Дисциплина, Оценка FROM
(Студенты INNER
JOIN
Ведомость ON
Студенты.ID
= Ведомость.ID_C)
INNER
JOIN
Дисциплины ON
Ведомость.ID_Д
= Дисциплины.ID WHERE
Группа = 101 AND
Пол = ”Ж”
Фамилия
Дисциплина
Оценка
Паневкина
Линейка
2
Паневкина
Иностранный
3
………..
……………………….
…………
Асеева
Информатика
2
Асеева
Линейка
3
Асеева
Иностранный
4
SELECT Фамилия,
Дисциплина, IIF
(Оценка=5, “отлично”,
IIF
(Оценка=4, “хорошо”,
IIF
(Оценка=3, “удов”, “неуд”))) аs
Результат FROM
(Студенты INNER
JOIN
Ведомость ON
Студенты.ID
= Ведомость.ID_C)
INNER
JOIN
Дисциплины ON
Ведомость.ID_Д
= Дисциплины.ID
WHERE Группа = 101 AND
Пол = “Ж”
Фамилия
Дисциплина
Результат
Паневкина
Линейка
неуд
Паневкина
Иностранный
удов
………….
…………………
……………
Асеева
Информатика
неуд
Асеева
Линейка
удов
Асеева
Иностранный
хорошо
SELECT Фамилия,
Пол, Оценка FROM
Студенты INNER
JOIN
Ведомость ON
Студенты.ID
= Ведомость.ID_C WHERE
(Оценка = 5 AND
Пол = “Ж”) OR
(Оценка = 2 AND
Пол = “М”)
SELECT Фамилия,
Пол, Оценка FROM
Студенты INNER
JOIN
Ведомость ON
Студенты.ID
= Ведомость.ID_C WHERE
Оценка = IIF
(Пол = Ж”, 5, 2)
