- •1 Введение 2
- •2 Выборка информации из базы данных 3
- •3 Команды модификации таблиц 15
- •4 Создание таблиц 17
- •1Введение
- •2Выборка информации из базы данных
- •2.1Базовый синтаксис оператора select
- •2.8.1Полный синтаксис оператора select
- •2.8.2Упорядочивание результатов
- •2.8.3Устранение повторяющихся строк
- •2.8.4Агрегирующие функции
- •2.7Поиск по подстрокам (like)
- •2.8Сортировка данных и другие методы выбора. Группировка данных
- •2.8.5Группировка данных
- •2.9Соединение таблиц и сложный анализ данных
- •2.9.1Соединение
- •2.9.2Внешнее соединение
- •2.9.3Операции над множествами (объединение, пересечение, разность)
- •2.10Структурированные запросы и подзапросы
- •2.10.1Подзапросы в предложении where
- •2.10.1.1Подзапросы, не возвращающие значений или возвращающие несколько значений
- •2.10.1.2Подзапросы, возвращающие единственное значение
- •2.10.1.3Подзапросы, выполняющие проверку на существование
- •2.10.2Подзапросы в предложении from
- •2.10.3Подзапросы в предложении select
- •3.1.3Ввод, удаление, и изменение значений полей
- •3.2Удаление строк из таблиц
- •3.3Изменение значений поля
- •3.4Использование подзапросов с командами модификации
- •4Создание таблиц
- •4.1Команда создания таблицы
- •4.2Создание индекса
- •4.3Удаление индексов
- •4.4 Изменение таблицы после создания
- •4.5Удаление таблиц
- •4.6Ограничение значений данных
- •4.6.1Ограничение таблиц
- •4.6.2Объявление ограничений
- •4.6.2.1Уникальность как ограничение столбца
- •4.6.2.2Уникальность как ограничение таблицы
- •4.6.2.3Ограничение первичных ключей
- •4.6.2.4Проверка значений полей
- •4.6.2.5Установка значений по умолчанию
2.9.2Внешнее соединение
Согласно стандарту SQL-92, левое внешнее соединение (LEFT OUTER JOIN) позволяет включить в результат всю левую (первую) таблицу, правое внешнее соединение (RIGHT OUTER JION) – всю правую (второю) таблицу, а полное внешнее соединение (FULL OUTER JOIN) – все несовпадающие строки обеих таблиц.
Пример:
SELECT Табельный номер, Фамилия, Имя, Отчество, Размер премии FROM СП_СЛ LEFT OUTER JOIN ПР ON СП_СЛ.Табельный номер=ПР.Табельный номер
Список всех служащих с указанием размеров премий, получаемых ими, если служащий не получал ни разу премии, то размер его премии NULL.
2.9.3Операции над множествами (объединение, пересечение, разность)
Оператор UNION объединяет несколько результирующих наборов. По умолчанию в результат оператора UNION включены все строки исходных наборов, кроме повторяющихся. Повторяющиеся в наборах строки представлены в результирующем наборе одним экземпляром
Хотя каждый оператор SELECT может иметь собственное предложение WHERE, весь запрос может использовать только одно предложение ORDER BY. Оно должно располагаться в последнем операторе SELECT и применяться ко всему результату.
Пример:
Вычислить надбавку 15% от Оклада, если оклад меньше 5000 и 10% от Оклада, если оклад от 5000 до 7000.
SELECT Табельный номер, Оклад, 0,15*Оклад AS Надбавка FROM СП_СЛ WHERE Оклад<5000 UNION SELECT Табельный номер, Оклад, 0,1*Оклад AS Надбавка FROM СП_СЛ WHERE Оклад BETWEEN 5000 AND 7000 ORDER BY 1
Оператор INTERSECT возвращает все совпадающие строки исходных наборов
Пример:
Список однофамильцев в двух лабораториях 110 и 100
SELECT ФАМИЛИЯ FROM СП_СЛ WHERE Код лаборатории=’110’ INTERSECT SELECT ФАМИЛИЯ FROM СП_СЛ WHERE Код лаборатории=’100’
Оператор EXCEPT возвращает разность двух наборов, то есть в результат включаются только те строки первого набора, которых нет во втором наборе.
Пример:
Список специальностей различающихся в двух лабораториях 110 и 100
SELECT Код специальности FROM СП_СЛ WHERE Код лаборатории=’110’ EXCEPT SELECT Код специальности FROM СП_СЛ WHERE Код лаборатории=’100’
Целесообразность включения операторов INERTSECT и EXCEPT в реляционную модель долго обсуждалось, однако широкого распространения они так и не получили. Это объясняется тем, что тех же целей можно достичь другими средствами.
2.10Структурированные запросы и подзапросы
Язык SQL позволяет использовать один запрос в качестве вспомогательного при вычислении результатов другого. Запрос, служащий частью более «крупного» запроса, приято называть подзапросом. Степень взаимной вложенности запросов не ограничивается и может быть произвольной.
Подзапрос – дополнительный метод манипуляции с несколькими таблицами. Подзапросы возвращают результаты внутреннего запроса во внешнее предложение и имеют две основные формы: некоррелированную и коррелированную.
Некоррелированная форма реализуется «изнутри наружу», то есть внешний запрос выполняет то или иное действие на основе результатов выполнения внутреннего запроса.
Коррелированную форму подзапроса можно представить как обратное действие: внешний оператор SQL предоставляет значения для внутреннего подзапроса, которые будут использоваться при его выполнении.
Пример:
Список руководителей лабораторий
SELECT DISTINCT Табельный номер, Фамилия, Имя, Отчество FROM СП_СЛ WHERE (Табельный номер IN (SELECT Код руководителя FROM ЛАБ))
SELECT Табельный номер, Фамилия, Имя, Отчество FROM СП_СЛ WHERE EXISTS (SELECT * FROM ЛАБ WHERE Код руководителя=СП_СЛ.Табельный номер)
