
- •1. Основные понятия реляционной модели данных.
- •2. Отношения, атрибуты, кортежи отношения.
- •3. Внешние ключи. Целостность внешних ключей.
- •4. Теоретико-множественные операторы. Декартово произведение.
- •5. Теоретико-множественные операторы. Объединение. Пересечение.
- •6. Теоретико-множественные операторы. Вычитание. Декартово произведение.
- •7. Специальные реляционные операторы. Выборка. Проекция. Деление.
- •8. Специальные реляционные операторы. Соединение (общая операция соединения, тэта-соединение, экви-соединение, естественное соединение).
- •9. Псевдонимы таблиц (в запросах на sql).
- •10. Синтаксис оператора выбора select. Применение агрегатных функций и вложенных запросов в операторе выбора. Синтаксис оператора select
- •11. Соединения. Внутреннее соединение (inner join). Перекрестное соединение (cross join). Полное внешнее соединение (full join).
- •12. Левое (left [outer] join) и правое (right [outer] join) внешние соединения. Объединение результатов нескольких запросов (операция union).
9. Псевдонимы таблиц (в запросах на sql).
Синтаксис команды для объединения таблицы с собой, тот же что и для объединения многочисленных таблиц, в одном экземпляре. Когда вы объединяете таблицу с собой, все повторяемые имена столбца, заполняются префиксами имени таблицы. Чтобы ссылаться к этим столбцам внутри запроса, вы должны иметь два различных имени для этой таблицы. Вы можете сделать это с помощью определения временных имен называемых - .переменными диапазона, переменными корреляции или просто - псевдонимами Вы определяете их в предложении FROM запроса. Это очень просто: вы набираете им таблицы, оставляете пробел, и затем набираете псевдоним для нее.
SELECT * FROM table1 as a, table2 as b
WHERE a.field_name = b.field_name
10. Синтаксис оператора выбора select. Применение агрегатных функций и вложенных запросов в операторе выбора. Синтаксис оператора select
SELECT column_list
FROM table_name
[WHERE условие]
[GROUP BY условие]
[HAVING условие]
[ORDER BY условие]
SELECT Ключевое слово, которое сообщает базе данных о том, что оператор является запросом. Все запросы начинаются с этого слова, за ним следует пробел.
Column_list Список столбцов таблицы, которые выбираются запросом. Столбцы, не указанные в операторе, не будут включены в результат. Если необходимо вывести данные всех столбцов, можно использовать сокращенную запись. Звездочка (*) означает полный список столбцов.
FROM table_name Ключевое слово, которое должно присутствовать в каждом запросе. После него через пробел указывается имя таблицы, являющейся источником данных.
Код в скобках является не обязательным в операторе SELECT. Он необходим для более точного определения запроса.
Основные ключевые слова, относящиеся к запросу SELECT:
WHERE — используется для определения, какие строки должны быть выбраны или включены в GROUP BY.
GROUP BY — используется для объединения строк с общими значениями в элементы меньшего набора строк.
HAVING — используется для определения, какие строки после GROUP BY должны быть выбраны.
ORDER BY — используется для определения, какие столбцы используются для сортировки результирующего набора данных.
В SQL добавлены дополнительные функции, которые позволяют вычислять обобщенные групповые значения. Для применения агрегатных функций предполагается предварительная операция группировки. В чем состоит суть операции группировки? При группировке все множество кортежей отношения разбивается на группы, в которых собираются кортежи, имеющие одинаковые значения атрибутов, которые заданы в списке группировки.
Функция |
Результат |
COUNT |
Количество строк или непустых значений полей, которые выбрал запрос |
SUM |
Сумма всех выбранных значений данного поля |
AVG |
Среднеарифметическое значение всех выбранных значений данного поля |
MIN |
Наименьшее из всех выбранных значений данного поля |
MAX |
Наибольшее из всех выбранных значений данного поля |
Агрегатные функции используются подобно именам полей в операторе SELECT, но с одним исключением: они берут имя поля как аргумент. С функциями SUM и AVG могут использоваться только числовые поля. С функциями COUNT, MAX и MIN могут использоваться как числовые, так и символьные поля. При использовании с символьными полями MAX и MIN будут транслировать их в эквивалент ASCII кода и обрабатывать в алфавитном порядке. Некоторые СУБД позволяют использовать вложенные агрегаты, но это является отклонением от стандарта ANSI со всеми вытекающими отсюда последствиями.
С помощью SQL можно вкладывать запросы внутрь друг друга. Обычно внутренний запрос генерирует значение, которое проверяется в предикате внешнего запроса (в предложении WHERE или HAVING ), определяющего, верно оно или нет. Совместно с подзапросом можно использовать предикат EXISTS, который возвращает истину, если вывод подзапроса не пуст.
В сочетании с другими возможностями оператора выбора, такими как группировка, подзапрос представляет собой мощное средство для достижения нужного-результата. В части FROM оператора SELECT допустимо применять синонимы к именам таблицы, если при формировании запроса нам требуется более чем один экземпляр некоторого отношения. Синонимы задаются с использованием ключевого слова AS, которое может быть вообще опущено. Поэтому часть FROM может выглядеть следующим образом:
FROM R1 AS A, R1 AS B
или
FROM R1 A, R1 B;
оба выражения эквивалентны и рассматриваются как применения оператора SELECT к двум экземплярам таблицы R1.
Выбрать студентов, у которых оценка по экзамену не меньше, чем хотя бы одна оценка по сданным им лабораторным работам по данной дисциплины:
Select R1.ФИО
From R1
Where R1.Оценка >= ANY (Select R4.Оценка
From R4
Where R1.Дисциплина = R4. Дисциплина AND R1.ФИО = R4.ФИО)