Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по курсу «Базы данных». Введение в MS SQL Server и T-SQL. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
8. ВЫБОРКА ДАННЫХ ИЗ ТАБЛИЦ С ПОМОЩЬЮ КОМАНДЫ SELECT
1. На панели инструментов найти и щелкнуть на кнопку .
2. Вывести данные по кафедрам, предметам и институ-
там, используя соответствующее заполнение:
SELECT * FROM название_таблицы;
3. Вывести почты и телефоны преподавателей, используя
соответствующее заполнение:
SELECT название_столбца1, название_столбца2,…
FROM название_таблицы;
4. Вывести данные по кафедрам и отсортировать название
кафедр от А до Я, используя соответствующее заполнение:
SELECT * FROM название_таблицы
ORDER BY название_столбца_сортировки;
5. Вывести данные по студентам и отсортировать фами-
лии студентов от Я до А, используя соответствующее запол­нение:
SELECT * FROM название_таблицы
ORDER BY название_столбца_сортировки DESC;
31
9. ФИЛЬТРАЦИЯ ДАННЫХ
С ПОМОЩЬЮ КОМАНДЫ WHERE
Для фильтрации в команде SELECT применяется опера-
тор WHERE. После этого оператора ставится условие, кото­рому должна соответствовать строка:
WHERE условие
Если условие истинно, то строка попадает в результирую­щую выборку. В качестве условия можно использовать опе­рации сравнения. Эти операции сравнивают два выражения. В T-SQL можно применять следующие операции сравнения (табл. 4).
Таблица 4
Операции сравнения
Операция Наименование
Сравнение на равенство
=
для сравнения на равенство используется один знак равно)
<> Сравнение на неравенство
< Меньше чем
> Больше чем !< Не меньше чем !> Не больше чем
<= Меньше чем или равно >= Больше чем или равно
(в отличие от си-подобных языков в T-SQL
Логические операторы. Для объединения нескольких ус-
ловий в одно могут использоваться логические операторы. В T-SQL имеются следующие логические операторы.
AND: операция логического И. Она объединяет два выра-
жения:
выражение1 AND выражение2
Только если оба этих выражения одновременно истин-
ны, то и общее условие команды AND также будет истинно. То есть если и первое условие истинно, и второе.
32
OR: операция логического ИЛИ. Она также объединяет
два выражения:
выражение1 OR выражение2
Если хотя бы одно из этих выражений истинно, то общее
условие команды OR также будет истинно. То есть если или первое условие истинно, или второе.
NOT: операция логического отрицания. Если выражение
в этой операции ложно, то общее условие истинно.
NOT выражение
Если эти операторы встречаются в одном выражении, то
сначала выполняется NOT, потом AND и в конце OR.
Операторы фильтрации. Оператор IN. Оператор IN позволяет определить набор
значений, которые должны иметь столбцы:
WHERE выражение [NOT] IN (выражение)
Выражение в скобках после IN определяет набор значе-
ний. Этот набор может вычисляться динамически на основа­нии, например, еще одного запроса, либо это могут быть кон­стантные значения.
Оператор BETWEEN. Оператор BETWEEN определяет
диапазон значений с помощью начального и конечного зна­чения, которому должно соответствовать выражение:
WHERE выражение [NOT] BETWEEN начальное_значение
AND конечное_значение
Если надо, наоборот, выбрать те строки, которые не попа-
дают в данный диапазон, то применяется оператор NOT.
Оператор LIKE:
Оператор LIKE принимает шаблон строки, которому
должно соответствовать выражение.
WHERE выражение [NOT] LIKE шаблон_строки
Для определения шаблона может применяться ряд спе-
циальных символов подстановки:
33
%: соответствует любой подстроке, которая может иметь любое количество символов, при этом подстрока может и не содержать ни одного символа;
_: соответствует любому одиночному символу;
[ ]: соответствует одному символу, который указан в ква­дратных скобках;
[ - ]: соответствует одному символу из определенного диа­пазона;
[ ^ ]: соответствует одному символу, который не указан после символа ^.
Выведем следующие данные, используя соответствующее заполнение:
SELECT * FROM название_таблицы WHERE условие;
– данные по преподавателю Сутулин; – данные по преподавателям, чей стаж работы более
15 лет;
– список базовых кафедр; – данные по студентам с номером телефона на цифру 5; – предметы, в названии которых содержится «систем».
34
10. ГРУППИРОВКА ДАННЫХ
С ПОМОЩЬЮ КОМАНД GROUP BY
И HAVING
Для группировки данных применяются команды GROUP BY и HAVING, для использования которых применяется
следующий формальный синтаксис:
SELECT название_столбца1, название_столбца2, …
FROM название_таблицы
[WHERE условие_фильтрации_строк]
[GROUP BY столбцы_для_группировки]
[HAVING условие_фильтрации_групп]
[ORDER BY столбцы_для_сортировки]
GROUP BY. Оператор GROUP BY определяет, как строки будут группироваться. При группировке данных использу­ются агрегатные функции (табл. 5).
Таблица 5
Агрегатные функции
Функция Описание
COUNT(*)
COUNT(<имя поля>)
SUM(<имя поля>)
AVG(<имя поля>)
MIN(<имя поля>)
MAX(<имя поля>)
Возвращает количество строк источника
записей
Возвращает количество значений
в указанном столбце
Возвращает сумму значений
в указанном столбце
Возвращает среднее значение
в указанном столбце
Возвращает минимальное значение
в указанном столбце
Возвращает максимальное значение
в указанном столбце
35
HAVING. HAVING определяет, какие группы будут включены в выходной результат, то есть выполняет филь­трацию групп.
Применение HAVING во многом аналогично применению WHERE. Только если WHERE применяется к фильтрации строк, то HAVING используется для фильтрации групп.
36
11. НЕЯВНОЕ СОЕДИНЕНИЕ ТАБЛИЦ С ПОМОЩЬЮ КОМАНДЫ WHERE
Выполнить запрос на соединение таблиц с использовани-
ем команды WHERE.
1. Вывести данные по названиям институтов, номерам групп и старостам, названиям ученых степеней и ФИО сту­дентов, используя соединения таблиц и соответствующее за­полнение, представленное ниже, при условии, что:
– сортировка осуществляется последовательно по алфа-
виту;
– ФИО студентов будут выводится в одном столбце.
SELECT название_таблицы1.название_столбца1_
таблицы1 ’название столбца’,
название_таблицы2.название_столбца1_таблицы2
’название столбца’, …
FROM название_таблицы1, название_таблицы2, …
WHERE
название_таблицы1.название_столбца(по которому
объединяем) = название_таблицы. название_столбца
(по которому объединяем)
AND название_таблицы2.название_столбца(по которому
объединяем) = название_таблицы. название_столбца
(по которому объединяем)
AND…
ORDER BY
1 ASC/DESC (сортировка)
2 ASC (сортировка)…;
2. Выдать ФИО студента, его институт и группу, степень получаемого образования, а также статус студента в группе, используя соединения таблиц и соответствующее заполне­ние, представленное ниже, при условиях, что:
37
• его фамилия начинается на букву от А до О (используя
LIKE);
• степень получаемого образования «Бакалавриат» или
«Магистратура» (Ученая степень. Код ученой степени либо 1, либо 2, используя BETWEEN);
• сначала «Староста», затем «Студент(ка)», используя
CASE;
• сортировка осуществляется последовательно по: – институту в алфавитном порядке; – степени получаемого образования (сначала «Бакалав-
риат», затем «Магистратура»); – группе в алфавитном порядке; – ФИО в алфавитном порядке.
SELECT название_таблицы1.название_столбца1_
таблицы1 ’название столбца’,
название_таблицы2.название_столбца1_таблицы2
’название столбца’,…
CASE
WHEN название_таблицы.название_столбца = условие
THEN ‘значение’
ELSE ‘возвращаемое значение’
END ‘название столбца’
FROM название_таблицы1, название_таблицы2,…
WHERE
название_таблицы1.название_столбца(по которому
объединяем) = название_таблицы. название_столбца(по
которому объединяем)
AND название_таблицы2.название_столбца(по которому
объединяем) = название_таблицы. название_столбца(по
которому объединяем)
AND…
ORDER BY
1 ASC/DESC (сортировка)
2 ASC (сортировка)…;
38
12. СОЕДИНЕНИЕ ТАБЛИЦ С ПОМОЩЬЮ КОМАНД INNER JOIN И LEFT / RIGHT / FULL OUTER JOIN
LEFT
левой таблицы с нулевым совпадением на правой таблице.
RIGHT JOIN = INNER JOIN + Непревзойденные данные
правой таблицы с нулевым совпадением на левой таблице.
FULL OUTER JOIN = INNER JOIN + Непревзойденные
данные в правой и левой таблицах с нулевыми совпадениями.
Выполнить запрос на внутреннее соединение таблиц с ис-
пользованием команды INNER JOIN.
Для явного соединения данных из двух таблиц применя-
ется оператор JOIN. Общий формальный синтаксис приме­нения оператора INNER JOIN:
После оператора JOIN идет название второй таблицы, из которой надо добавить данные в выборку. Перед JOIN мо­жет использоваться необязательное ключевое слово INNER. Его наличие или отсутствие ни на что не влияет. Затем после ключевого слова ON указывается условие соединения. Это условие устанавливает, как две таблицы будут сравнивать­ся. В большинстве случаев для соединения применяется пер­вичный ключ главной таблицы и внешний ключ зависимой таблицы.
Задание.
Необходимо выдать ФИО студента, его институт и груп­пу, степень получаемого образования, а также статус студен-
JOIN = INNER JOIN + Непревзойденные данные
SELECT название_таблицы1.название_столбца1_
таблицы1 ’название столбца’,
название_таблицы2.название_столбца1_таблицы2
’название столбца’,…
FROM название_таблицы1
[INNER] JOIN название_таблицы2 ON условие1,
[INNER] JOIN имя_таблицы3 ON условие2,…
39
та в группе, используя соединения таблиц и соответствую­щее заполнение, представленное ниже ниже, при условиях, что:
• объединение таблиц происходит с помощью команды
INNER JOIN, где фамилия стдента(ки) начинается на бук­ву от А до О (используя LIKE), степень получаемого образо­вания «Бакалавриат» или «Магистратура» (Ученая степень. Код ученой степени либо 1, либо 2);
• сначала «Староста», затем «Студент(ка)», используя
оператор CASE;
• сортировка осуществляется последовательно по: – институту в алфавитном порядке; – степени получаемого образования (сначала «Бакалав-
риат», затем «Магистратура»); – группе в алфавитном порядке; – статусу в группе; – ФИО в алфавитном порядке.
SELECT название_таблицы1.название_столбца1_
таблицы1 ’название столбца’,
название_таблицы2.название_столбца1_таблицы2
’название столбца’,…
CASE
WHEN название_таблицы.название_столбца = условие
THEN ‘значение’
ELSE ‘возвращаемое значение’
END ‘название столбца’
FROM название_таблицы1
INNER JOIN название_таблицы2 ON название_таблицы1.
название_столбца1 = название_таблицы2.название_
столбца1,
INNER JOIN название_таблицы3 ON название_таблицы2.
название_столбца3 = название_таблицы3.название_
столбца3, …
WHERE
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]