
In ( x1, x2, x3, …) – равен любому элементу из списка
Предикат вхождения в множество IN (множество) истинен тогда, когда сравниваемое значение входит в множество заданных значений. При этом множество значений может быть задано простым перечислением. Одновременно существует противоположный предикат NOT IN (множество), который истинен тогда, когда сравниваемое значение не входит в заданное множество.
Between (X1, X2) – значение между X1 и X2
Предикат истинен, когда сравниваемое значение попадает в заданный диапазон, включая границы диапазона. Одновременно в стандарте задан и противоположный предикат Not Between A and B, который истинен тогда, когда сравниваемое значение не попадает в заданный интервал, включая его границы.
Like (“XXX”) – символьное значение включает указанную последовательность
Предикат LIKE требует задания шаблона, с которым сравнивается заданное значение, предикат истинен, если сравниваемое значение соответствует шаблону, и ложен в противном случае. Предикат NOT LIKE имеет противоположный смысл.
Is Null – заданное поле не определено
Поиск неопределенных значений IS NULL (не определено)
ПРИМЕРЫ:
SELECT * From Сотрудники Where Подразделение = ‘Кафедра ТОИ’
SELECT Фамилия, имя, отчество From Сотрудники Where Подразделение = ‘Кафедра ТОИ’ AND Должность = ‘Профессор’
Получить сведения о студентах, получивших оценки только 4 и 5.
SELECT USP.SNUM, USP.UDATE, USP.MARK, STUDENTS.SFAM
FROM USP, STUDENTS
WHERE USP.SNUM=STUDENTS.SNUM AND (USP.MARK) IN (4,5)
Показать список студентов, которые получают стипендию в диапазоне 1500-2500 рублей.
SELECT STUDENTS.SNUM, STUDENTS.SFAM, STUDENTS.STIP
FROM STUDENTS
WHERE STUDENTS.STIP BETWEEN 1500 AND 2000
Показать списки студентов с отчеством, начинающимся на «Ни*».
SELECT SNUM, SFAM, SNAME, SFATH
FROM STUDENTS
WHERE STUDENTS.SFATH LIKE "Ни*"
(5) Order by - порядок вывода найденных записей (ASC/DESC – возрастание или убывание, по умолчанию по убыванию)
В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении.
Например, если первым полем списка будет указана Фамилия, а вторым Номер группы, то в результирующем отношении сначала будут собраны в алфавитном порядке студенты, и если найдутся однофамильцы, то они будут расположены в порядке возрастания групп.
SELECT Фамилия, имя, отчество, должность From Сотрудники Order by Фамилия
SELECT TOP 3 Название, Руководитель FROM Отделы Order by Численность
SELECT Фамилия, должность FROM Сотрудники Where Год рождения>1970 Order by Дата рождения
Агрегирование данных – SUM, MAX, MIN, AVG, COUNT
ПРИМЕРЫ:
SELECT SUM(Зарплата) AS Суммарная зарплата From Сотрудники
SELECT AVG(DATA() – Дата_рождения) AS Средний_возраст From Сотрудники
SELECT COUNT(*) AS Общее_число_сотрудников FROM Сотрудники
SELECT MAX(ВЫПЛАТЫ) AS Максимальный_доход_сотрудника From Сотрудники
SELECT MIN(Дата_рождения), MAX(Дата_рождения) From Сотрудники WHERE Должность = ‘Профессор’
(6) GROUP – объединение повторяющихся значений в группы (необязательное поле).
GROUP BY [таблица.]столбец [,[таблица.]столбец]...
GROUP BY инициирует перекомпоновку формируемой таблицы по группам, каждая из которых имеет одинаковое значение в столбцах, включенных в перечень GROUP BY. Далее к этим группам применяются агрегирующие функции, указанные в SELECT, что приводит к замене всех значений группы на единственное значение (сумма, количество и т.п.).
Например, сведения о выплатах сотрудникам кафедры ТОИ
SELECT Фамилия, имя, отчество, Count(*), MAX(Сумма), MIN(Сумма), SUM(Сумма) From Список выплат Where Подразделение = ‘Кафедра ТОИ’ GROUP BY Фамилия, имя, отчество (или GROUP BY Табельный номер)
(7) Having – наложение дополнительных условий на уже выбранные (вычисленные) данные (внутри Group By) (необязательное поле)
С помощью фразы HAVING (синтаксис которой почти не отличается от синтаксиса фразы WHERE)исключают из результата группы, не удовлетворяющие заданным условиям.
ПРИМЕРЫ:
SELECT Фамилия, имя, отчество, Count(*), MAX(Сумма), MIN(Сумма), SUM(Сумма) From Список выплат Where Подразделение = ‘Кафедра ТОИ’ GROUP BY Фамилия, имя, отчество (или GROUP BY Табельный номер) Having COUNT(*) > 10