
- •1 Введение 2
- •2 Выборка информации из базы данных 3
- •3 Команды модификации таблиц 15
- •4 Создание таблиц 17
- •1Введение
- •2Выборка информации из базы данных
- •2.1Базовый синтаксис оператора select
- •2.7Поиск по подстрокам (like)
- •2.8Сортировка данных и другие методы выбора. Группировка данных
- •2.8.1Полный синтаксис оператора select
- •2.8.2Упорядочивание результатов
- •2.8.3Устранение повторяющихся строк
- •2.8.4Агрегирующие функции
- •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.10.3Подзапросы в предложении select
Допускается использование подзапросов, возвращающих единственное значение, в качестве элементов списка выбора.
Пример:
Список сотрудников, имеющих детей, с указанием количества детей.
SELECT Табельный номер, (SELECT COUNT(*) FROM Дети WHERE СП_СЛ.Табельный номер=Табельный номер GROUP BY Табельный номер) AS Количество детей FROM СП_СЛ
Однако более эффективным будет следующий запрос, возвращающий аналогичный результат.
SELECT Табельный номер, Количество детей FROM СП_СЛ, (SELECT COUNT(*) AS Количество детей FROM Дети GROUP BY Табельный номер) S WHERE СП_СЛ.Табельный номер=S.Табельный номер
3Команды модификации таблиц
Значения могут быть помещены и удалены из полей, тремя командами языка DML (Data Manipulation Language) (Язык Манипулирования Данными):
INSERT (ВСТАВИТЬ), UPDATE (МОДИФИЦИРОВАТЬ), DELETE (УДАЛИТЬ).
3.1Ввод значений
Все строки в SQL вводятся с использованием команды модификации INSERT. В самой простой форме, INSERT использует следующий синтаксис:
INSERT INTO <table name> [(<поле1>, <поле2>,…)] VALUES (<значение1>, <значение2>…)
В VALUES могут быть использованы только конкретные значения, а не выражения.
3.1.1Вставка пустых указателей (null)
Пустое значение (NULL), вводится точно также как и обычное значение.
Так как значение NULL - это специальный маркер, а не просто символьное значение, он не включается в одиночные кавычки.
3.1.2Именование столбца для вставки
Возможность указывать столбцы в INSERT позволяет вставлять имена в любом порядке. Столбцы таблицы могут отсутствовать. Это значит, что эти строки автоматически установлены в значение – по умолчанию. По умолчанию может быть введено или значение NULL или другое значение определяемое как – по умолчанию. Если ограничение запрещает использование значения NULL в данном столбце, и этот столбец не установлен как по умолчанию, этот столбец должен быть обеспечен соответствующим значением.
Пример:
INSERT INTO СП_СЛ (Табельный номер, Фамилия, Имя, Отчество, Пол, Телефон) VALUES (‘С145’, ‘Иванов’, ‘Дмитрий’, ‘Петрович’, ‘М’, NULL)
3.1.3Ввод, удаление, и изменение значений полей
3.2Удаление строк из таблиц
DELETE –удаление строки из таблицы.
Она может удалять только введенные строки, а не индивидуальные значения полей.
DELETE FROM <имя_таблицы> [WHERE <условие>]
Пример:
DELETE FROM ПР WHERE Табельный номер=’C145’
3.3Изменение значений поля
UPDATE – изменение данных в конкретных полях, в уже существующих строках таблицы.
UPDATE <имя таблицы> SET <имя столбца1=выражение1 [, имя столбца2=выражение2, …]> [WHERE <условие>]
В качестве выражения может быть как конкретное значение, так и выражение.
Предложение SET может вводить пустые NULL значения (поле=NULL).
Пример:
Увеличить зарплату всем мужчинам, имеющим оклад меньше 5000
UPDATE СП_СЛ SET Оклад=Оклад*1,15 WHERE Оклад< 5000 AND Пол=’М’
3.4Использование подзапросов с командами модификации
Подзапросы могут быть вложены в операторы UPDATE, DELETE, INSERT так же, как и в операторы SELECT.
INSERT INTO <имя таблицы> [(поле1, поле2, …)] SELECT <список столбцов> FROM <имя таблицы> WHERE <условие>
Одним из преимуществ использование подзапроса в команде INSERT является возможность включения в него различных выражений – строк символов, математических формул и функций. НЕ ВСТАВЛЯЙТЕ ДУБЛИКАТЫ СТРОК
Пример:
Изменить оклады на 10% всем руководителям лабораторий.
UPDATE СП_СЛ SET Оклад=Оклад*1,1 WHERE Табельный номер IN (SELECT Код руководителя FROM ЛАБ)
Удалить все записи о премиях уволенных сотрудников (нет в таблице СП_СЛ).
DELETE FROM ПР WHERE NOT EXISTS (SELECT * FROM СП_СЛ WHERE СП_СЛ.Табельный номер=ПР.Табельный номер)
Назначить премии сотрудникам, имеющим детей, в размере 10% от оклада приказом номер 03/123 от 25.11.2005.
INSERT INTO ПР (Табельный номер, Размер премии, Номер приказа, Дата приказа) SELECT Табельный номер, 0,1*Оклад, ‘03/123’, {25/11/2005} FROM СП_СЛ WHERE Табельный номер IN (SELECT DISTINCT Табельный номер FROM Дети)