- •Язык запросов sql
- •Введение в sql(0-0)
- •Аннотация к лекции
- •Краткая история развития sql
- •Возможности языка
- •Основы sql
- •Типы данных sql
- •Литералы
- •Операторы и выражения
- •Именование объектов
- •Комментарии
- •Итоги лекции
- •Простейшие запросы (0-0)
- •Аннотация к лекции
- •О предложении select
- •Основные фразы – select и from
- •Фраза select
- •Синтаксис фразы select
- •Указание выводимых столбцов
- •Исключение повторяющихся строк
- •Использование вычисляемых выражений
- •Переопределение имен результирующих столбцов
- •Включение литералов в результат запроса
- •Вывод результатов в файл
- •Фраза from
- •Синтаксис фразы from
- •Синонимы таблиц
- •Запрос в качестве имени таблицы
- •Итоги лекции
- •Отбор строк по условию (0-0)
- •Аннотация к лекции
- •Простейшие условия
- •Операторы сравнения
- •Логические операторы
- •Использование выражений над столбцами
- •Специальные операторы
- •Проверка на принадлежность множеству
- •Проверка на принадлежность диапазону значений
- •Проверка на соответствие шаблону
- •Проверка на неопределенное значение
- •Итоги лекции
- •Многотабличные запросы (0-0)
- •Аннотация к лекции
- •Декартово произведение таблиц
- •Условие соединения
- •Соединение таблиц по равенству
- •Соединение таблиц по неравенству
- •Самосоединение таблицы
- •Внешнее соединение таблиц
- •Соединение с использованием фразы from
- •Итоги лекции
- •Использование функций (0)
- •Аннотация к лекции
- •Агрегатные функции
- •Однострочныефункции
- •Строковые функции
- •Числовые функции
- •Временные функции
- •Функции преобразования
- •Итогилекции(урока)
- •Группировка и сортировка (0)
- •Аннотация к лекции
- •Запросы с группировкой строк
- •Понятие группировки строк
- •Группировка по одному столбцу
- •Группировка по нескольким столбцам
- •Использование выражений
- •Условиеотборагрупп
- •Сортировка строк
- •Сортировка по столбцу или выражению
- •Сортировка по нескольким столбцам или выражениям
- •Итоги лекции
- •Множественные операции над таблицами (0-0)
- •Аннотация к лекции
- •Множественные операции в стандарте sql
- •Объединение таблиц
- •Пересечение таблиц
- •Разность таблиц
- •Дополнительные аспекты использования множественных операций
- •Множественные операции и группировка
- •Множественные операции и сортировка
- •Итоги лекции
- •Определение таблиц и представлений (0-0)
- •Аннотация к лекции
- •Создание таблицы
- •Изменениетаблицы
- •Возможности изменения таблиц
- •Добавление столбца
- •Изменение определения столбца
- •Удаление столбца
- •Переименование таблицы
- •Удаление таблицы
- •Определение индексов
- •Представления
- •Итоги лекции
- •Манипулирование данными (0-0)
- •Аннотация к лекции
- •Добавление новых строк
- •Варианты добавления строк
- •Вставка отдельных строк
- •Использование запроса при вставке строк
- •Вставка значений по умолчанию
- •Обновление существующих данных
- •Удаление существующих строк
- •Импорт и экспорт данных
- •Итоги лекции
- •Определение ограничений целостности, ключей, задание прав доступа к данным (0-18)
- •Аннотация к лекции
- •Виды ограничений целостности
- •Ограничение на отсутствие значения
- •Ограничениеуникальности
- •Ограничение первичного ключа
- •Ограничение ссылочной целостности
- •Изменение ограничений целостности
- •Итоги лекции
- •Программирование бд (19)
Исключение повторяющихся строк
Когда вы выводите все столбцы таблицы, то можете быть уверены, что выводимые строки будут уникальны — таблица не может содержать повторяющихся строк. Однако если выводятся не все столбцы, повторяющиеся строки могут образоваться. Например, нас интересует список должностей в вузе.
Запрос.Вывести значения столбцаPostтаблицыTEACHER.
SELECT Post
FROM TEACHER;
POST |
профессор |
доцент |
преподаватель |
ассистент |
ассистент |
преподаватель |
доцент |
профессор |
преподаватель |
профессор |
В результате будут выведены все строки таблицы. SQLсам по себе не исключает повторяющиеся строки при формировании результирующей таблицы. Для того чтобы указать необходимость такого исключения, следует воспользоваться ключевым словомDISTINCT.
Запрос.Вывести уникальные значения столбцаPostтаблицыTEACHER.
SELECT DISTINCT Post
FROM TEACHER;
POST |
профессор |
доцент |
преподаватель |
ассистент |
Использование вычисляемых выражений
Фраза SELECTможет содержать не только перечень столбцов таблицы или символ *, но и выражения. Выражения базируются на именах столбцов и могут быть любыми допустимыми в языке выражениями соответствующих типов. Приведем пример.
Запрос.Вывести фамилии преподавателей, их ставки, надбавки, сумму ставки с надбавкой и процент надбавки относительно ставки.
SELECT
Name,
Salary,
Rise,
Salary + Rise,
Rise * 100 / Salary
FROM TEACHER;
NAME |
SALARY |
RISE |
SALARY+RISE |
RISE*100/SALARY |
Сидоров |
1070 |
470 |
1540 |
43.93 |
Рамишевский |
830 |
370 |
1200 |
44.58 |
Хоренко |
670 |
230 |
900 |
34.33 |
Вибровский |
570 |
170 |
740 |
29.82 |
Воропаев |
570 |
150 |
720 |
26.32 |
Кузинцев |
630 |
270 |
900 |
42.86 |
Завратинский |
770 |
341 |
1111 |
44.29 |
Козлутин |
530 |
220 |
750 |
41.51 |
Лекарь |
890 |
440 |
1330 |
49.44 |
Переопределение имен результирующих столбцов
Столбцы результирующей таблицы будут иметь те имена, которые указаны во фразе SELECT. Однако имена столбцов в таблицах базы данных могут быть сжатыми, а подчас представлять собой сокращение – в этом случае их использование в выводе может существенно понизить наглядность.
С другой стороны имена столбцов, указанные во фразе SELECT, используются также для ссылки на них в других фразах (например, GROUP BY, HAVING, ORDER BY) и запросах. Если результирующий столбец является вычисляющим выражением (например, Rise * 100 / Salary), сослаться на него не получится.
В этом случае можно использовать возможность переопределения имени столбца в результирующей таблице, для чего необходимо после имени столбца исходной таблицы или выражения указать ключевое слово AS и затем новое имя столбца.
Запрос. Вывести фамилии преподавателей, их ставки, надбавки, сумму ставки с надбавкой и процент надбавки относительно ставки под новыми именами.
SELECT
Name as Имя,
Salary as Ставка,
Rise as Надбавка,
Salary + Rise as “Ставка с надбавкой”,
Rise * 100 / Salary as “Процент надбавки”
FROM TEACHER;
Имя |
Ставка |
Надбавка |
Ставка с надбавкой |
Процент надбавки |
Сидоров |
1070 |
470 |
1540 |
43.93 |
Рамишевский |
830 |
370 |
1200 |
44.58 |
Хоренко |
670 |
230 |
900 |
34.33 |
Вибровский |
570 |
170 |
740 |
29.82 |
Воропаев |
570 |
150 |
720 |
26.32 |
Кузинцев |
630 |
270 |
900 |
42.86 |
Завратинский |
770 |
341 |
1111 |
44.29 |
Козлутин |
530 |
220 |
750 |
41.51 |
Лекарь |
890 |
440 |
1330 |
49.44 |