
- •Язык запросов 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)
Включение литералов в результат запроса
Во фразе SELECT кроме имен столбцов и выражений с ними можно указывать константы (и константные выражения). Это приведет к тому, что в результирующей таблице будет создан столбец с одинаковыми значениями во всех строках. Такой константой может быть любой литерал, в том числе и символьный. Покажем это на примере.
Запрос.Вывести ставки преподавателей, оформив результат предложениями на русском языке.
SELECT 'Преподаватель', Name, 'имеет ставку', Salary
FROM TEACHER;
ПРЕПОДАВАТЕЛЬ |
NAME |
ИМЕЕТСТАВКУ |
SALARY |
Преподаватель |
Сидоров |
имеет ставку |
1070 |
Преподаватель |
Рамишевский |
имеет ставку |
830 |
Преподаватель |
Хоренко |
имеет ставку |
670 |
В результирующей таблице данные выводятся в четырех столбцах. Однако, используя выражения над столбцами и константами, можно те же данные вывести в виде одного столбца, как это показано в следующем примере.
Запрос.Вывести зарплату преподавателей, оформив результат предложениями на русском языке без лишних пробелов.
SELECT 'Преподаватель ' || Name || ' имеет ставку ' || Salary
as“Сведения о зарплате”
FROMTEACHER;
или (MySQL)
SELECTCONCAT('Преподаватель ',Name, ' имеет ставку ',Salary)
as“Сведения о зарплате”
FROMTEACHER;
Сведения о зарплате |
Преподаватель Сидоров имеет ставку 1070 |
Преподаватель Рамишевский имеет ставку 830 |
Преподаватель Хоренко имеет ставку 670 |
Фраза SELECTобладает ограниченными возможностями форматирования результирующих данных. Обычно в таких случаях в дополнение к базовым средствам СУБД используются сервисные программы, в частности так называемые генераторы отчетов. Они, как правило, обладают широкими возможностями визуального представления результатов запросов.
Вывод результатов в файл
Если необходимо вывести результаты запроса в файл в MySQL можно использовать фразу INTO OUTFILE. Ее синтаксис:
SELECT список_выбора
INTO OUTFILE имя_файла
Например:
Запрос. Вывести имена преподавателей и ставки в текстовый файл.
SELECT Преподаватель, Salary
INTO OUTFILE “d:/salary.txt”
FROM TEACHER;
Фраза from
Синтаксис фразы from
Как мы уже отмечали, фраза FROM нужна для указания используемых в запросе таблиц. Синтаксис этой фразы следующий:
FROM
{имя_таблицы | (подзапрос)} [алиас][,
{имя_таблицы | (подзапрос)} [алиас]]...
В запросе могут использоваться несколько таблиц. В этом случае во фразе FROM приводятся их имена, перечисленные через запятую. Например:
FROM FACULTY. DEPARTMENT. SGROUP
Синонимы таблиц
Имена таблиц, как и столбцов, можно переопределить, например, чтобы для ссылок на таблицу использовать короткий (вплоть до одной буквы) синоним (его называют еще алиасом таблицы). Имя таблицы и ее синоним разделяются пробелом:
FROMFACULTYF.DEPARTMENTD.SGROUPG
FROM FACULTY F. DEPARTMENT D. SGROUP G
В случае использования для имени таблицы синонима уточнять столбцы следует только указанным синонимом, например:
F.Name, F.Building, F.Fund, D.Head, D.Fund, G.Year, G.Quantity
В следующем примере слева приведен правильный запрос, а справа – нет:
SELECT f.Name, f.Fund FROM FACULTY f |
|
В случае, когда в списке FROM одна и та же таблица указана более одного раза, переопределение имени этой таблицы синонимом является обязательным, и синонимы должны различаться. Например:
FROM TEACHER Tl. TEACHER T2
Теперь к первой копии таблицы можно обращаться с помощью синонима Т1, а ко второй — синонима Т2. Правила именования синонима таблицы те же, что и для имени таблицы, принятые в той или иной СУБД.