
- •Язык запросов 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)
Использование запроса при вставке строк
Вы можете вставлять не только явно задаваемые значения, но и те, которые образуются в результате вычисления запроса к существующей базе данных. Запрос может формировать множество строк, и все они вставляются при выполнении одной команды INSERT. Синтаксис этого варианта предложения следующий:
INSERT INTO имя_таблицы [(имя__столбца[, имя_столбца]...)]
(запрос);
Вставка значений по умолчанию
Стандарт SQL допускает вставку целой строки, содержащей только значения по умолчанию, определенные для столбцов таблицы. Делается это с использованием следующего формата команды INSERT:
INSERT INTO имя_таблицы DEFAULT VALUES
Обновление существующих данных
Целью предложения обновления является изменение значений отдельных столбцов всех или удовлетворяющих указанному условию строк таблицы. Упрощенный синтаксис предложения следующий:
UPDATE имя_таблицы
SET имя_столбца = выражение[, имя_столбца = выражение]...
[WHERE условие];
Его элементы означают следующее:
имя_таблицы – имя обновляемой таблицы;
имястолбца – имя обновляемого столбца;
выражение – допустимое в SQLвыражение соответствующего типа, значение которого присваивается обновляемому столбцу;
условие – допустимое в SQLвыражение условия, которое используется для отбора обновляемых строк.
По одному предложению UPDATEобновлению подвергаются строки только одной базовой таблицы.
Как видно из определения синтаксиса команды UPDATE, фраза WHERE является необязательной. При ее отсутствии все строки таблицы подвергаются обновлению согласно фразе SET. Например, для установки всем группам рейтинга 0 следует записать следующее выражение:
UPDATE SGROUP
SET Rating = 0;
---
5 строк обновлено.
Во фразе SETможно одновременно изменять значения нескольких столбцов таблицы. Например, в следующем примере всем преподавателям увеличивается
ставка на 12 % и надбавка на 7 %:
UPDATE TEACHER
SET Salary = Salary + Salary * 0.12. Rise = Rise + Rise * 0.08;
---
15 строк обновлено.
Во фразе SETв правой части оператора присваивания может использоваться любое допустимое вSQLвыражение того же типа, что и столбец, имя которого приведено слева от оператора присваивания. Если в этом выражении используется имя столбца целевой таблицы, для вычисления выражения применяется значение этого столбца в текущей строке, которое было перед обновлением.
Обновление по условию использует фразу WHERE. В этом случае обновляются столбцы только тех строк таблицы, на которых выполняется условие фразыWHERE. Рассмотрим несколько примеров.
Запрос.Увеличить всем ассистентам зарплату и надбавку на 10 %:
UPDATE TEACHER
SET Salary = Salary * 1.1, Rise = Rise * 1.1
WHERE LOWER(Post) = 'ассистент';
---
4 строк обновлено.
Запрос.Установить, что деканат факультета математики переместился в корпус 7.
UPDATE FACULTY
SET Building = 7
WHERE LOWER(Name) = 'математика';
---
1 строка обновлена.
Удаление существующих строк
Удалять строки из таблицы можно с помощью предложения DELETE. Оно удаляет только строки целиком, а не индивидуальные значения столбцов. Синтаксис команды следующий:
DELETE FROM имя_таблицы [[AS] синоним]
[WHERE условие];
При использовании предложения DELETE вы прежде всего обнаружите, что предупреждающая подсказка, как правило, не выдается. Обычно, когда пользователь удаляет какой-либо объект операционной среды, он получает сообщение типа «Вы уверены (Д/Н)?». В системах, поддерживающих SQL, строки удаляются без такого сообщения. Поэтому будьте внимательны.
В зависимости от применения фразы WHERE предложение DELETE позволяет удалить отдельную строку, несколько или все строки таблицы. Строки могут быть и не удалены. При использовании предложения DELETE помните о следующем:
нельзя удалить значение отдельного столбца (используйте для этого предложение UPDATE);
как и предложения INSERT и UPDATE, удаление строк может нарушить ограничения целостности;
сама таблица не удаляется (используйте для этого предложение DROP TABLE).
Чтобы удалить все содержимое таблицы, не нужно использовать фразу WHERE. Помните, что вы удаляете не саму таблицу, а только все ее строки.
Запрос.Удалить содержимое таблицLECTURE.
DELETE FROM LECTURE;
---
22 строк удалено.
Обычно нужно удалять только некоторые строки из таблицы. Чтобы определить, какие строки будут удалены, нужно использовать условие во фразе WHERE. Приведем несколько примеров.
Запрос.Из таблицы LECTURE удалить те строки, которые имеют отношение к занятиям, проводящимся в субботу и воскресенье.
DELETE FROM LECTURE
WHERE LOWER(Day) = 'суб' OR LOWER(Day) = 'вос';
---
0 строк удалено.
Запрос.Удалить аудиторию с первичным ключом 120.
DELETE FROM ROOM
WHERE RomPK = 120;
Здесь RomPK — первичный ключ в таблице ROOM.