- •2. Основы sql: стандарты, группы операторов и их назначение.
- •3. Основные принципы работы sql Server: клиент, сервер, буферный кэш, журнал транзакций, службы, аутентификация, авторизация, страницы дисковой памяти.
- •4. Sql ddl: операторы назначение, применение.
- •5. Sql dml: операторы назначение, применение.
- •6. Sql dcl: операторы назначение, применение.
- •7. Sql tcl: операторы назначение, применение.
- •8. Ограничения целостности, констрейнты.
- •9. Оператор select: секции оператора и их применение.
- •10. Операторы delete, update: секции операторов и их применение.
- •11. Группировка в операторе select, применение секции having.
- •Примеры
- •12. Применение group with cube, group with rollup
- •13. Применение compute, compute by
- •14. Sql-команды: union (all, order by), intersect, except.
- •15. Внутреннее соединение таблиц: естественное, inner join, многотабличный запрос.
- •Inner join
- •16. Внешнее соединение таблиц: outher join (left, right, full, cross).
- •17. Подзапросы: (not)in, (not)exists, all, any, some.
- •18. Представления: создание, применение, order by в представлении, with check option, dml-операции c представлениями.
- •19. Агрегатные функции: sum, count, avg.
- •21. Временные таблицы: локальные, глобальные, работа с временными таблицами.
- •23. Процедуры t-sql: параметры, создание, вызов, возврат значения, системные процедуры.
- •24. Функции: типы, параметры, создание, вызов, возврат значения, принципы применения.
- •26. Транзакции: определение, назначение, свойства acid, уровни изоляции, операторы tcl и их применение.
- •27. Индексы: определение, типы, назначение, создание и применение.
- •Синтаксис sql create index
- •Синтаксис sql create unique index
- •Пример create index
- •28. Создание базы данных: системные базы данных, оператор создания базы данных, файловые группы, файлы, журнал транзакций, основные параметры базы данных.
- •29. Секционирование таблиц: определение, назначение, функция секционирования, схема секционирования,ограничения.
- •30. Моментальные снимки базы данных (snapshot): определение, назначение, создание, применение, технология copy-on-write.
14. Sql-команды: union (all, order by), intersect, except.
UNION применяется для объединения результатов двух SQL-запросов в единую таблицу, состоящую из схожих строк. Оба запроса должны возвращать одинаковое число столбцов и совместимые типы данных в соответствующих столбцах.
По умолчанию любые дублирующие записи автоматически скрываются, если не использовано выражение UNION ALL.
SELECT * FROM pupils UNION SELECT * FROM people
SELECT * FROM pupils UNION ALL SELECT * FROM people
Необходимо отметить, что UNION сам по себе не гарантирует порядок строк. Строки из второго запроса могут оказаться в начале, в конце или вообще перемешаться со строками из первого запроса. В случаях, когда требуется определенный порядок, необходимо использовать выражение ORDER BY.
Intersect — пересечение (возвращает все значения, которые содержатся как в первом, так и во втором запросах).
Except — разность (возвращает все уникальные значения одного запроса, которые также не находятся во втором запросе).
SELECT * FROM pupils INTERSECT SELECT * FROM people
SELECT * FROM pupils EXCEPT SELECT * FROM people
15. Внутреннее соединение таблиц: естественное, inner join, многотабличный запрос.
Естественное соединение – соединение, которое строит декартово произведение, а потом строки отбирает по некоторому условию.
Внутреннее соединение — соединение, в котором отображаются только строки, имеющие соответствие в обеих соединенных таблицах.
Естесстваенное соединение:
SELECT users.name, phones.phone FROM users, phones
WHERE users.id = phones.id
Inner join
SELECT users.name, phones.phone
FROM users JOIN phones ON users.id = phones.id
Сложные (многотабличные запросы)
В SQL сложные запросы являются комбинацией простых SQL-запросов.
В SQL сложные запросы получаются из других запросов следующими способами:
вложением SQL-выражения запроса в SQL-выражение другого запроса. Первый из них называют подзапросом, а второй — внешним или основным запросом;
применением к SQL-запросам операторов объединения и соединения наборов записей, возвращаемых запросами. Эти операторы называют теоретико-множественными или реляционными.
Многотабличный запрос:
SELECT topics.title, posts.content
FROM topics, posts
16. Внешнее соединение таблиц: outher join (left, right, full, cross).
Внешние соединения возвращают все строки, удовлетворяющие условиям поиска. Все строки, получаемые из левой таблицы, образуют левое внешнее соединение (LEFT OUTER JOIN), а строки, получаемые из правой таблицы, — правое внешнее соединение (RIGHT OUTER JOIN - Берём все строки правой таблицы и присоединяем в соответствии с условием все строки, которые есть в левой, а те строки, для которых не выполняется условие, заполняем null). Все строки их обеих таблиц возвращаются в полном внешнем соединении.
SELECT * FROM nameone
SELECT * FROM surnameone
SELECT n.name, s.surname FROM nameone n
RIGHT OUTER JOIN surnameone s ON n.id = s.id
SELECT n.name, s.surname FROM nameone n
LEFT OUTER JOIN surnameone s ON n.id = s.id
SELECT n.name, s.surname FROM nameone n
FULL OUTER JOIN surnameone s ON n.id = s.id
Перекрестное соединение выполняет полное декартово произведение двух таблиц. То есть это соответствие каждой строки одной таблицы - каждой строке другой таблицы. Перекрестные соединения используются довольно редко. Никогда не стоит пересекать две большие таблицы, поскольку это задействует очень дорогие операции и получится очень большой результирующий набор.
SELECT * FROM nameone
SELECT * FROM surnameone
SELECT n.name, s.surname FROM nameone n CROSS JOIN surnameone s