Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы и банки данных.doc
Скачиваний:
10
Добавлен:
12.11.2019
Размер:
745.98 Кб
Скачать

Тема 9.

1. Запросы обновления таблиц.

2. Создание, модификация и уничтожение таблиц. Ограничение на множество допустимых значений данных. Значение по умолчанию.

3. Создание и уничтожение индексов. Поддержка ссылочной целостности.

1. Запросы обновления таблиц.

Обновление таблиц осуществляется путём использования трёх команд SQL: INSERT – вставить, UPDATE – изменить, DELETE – удалить. Эти команды называются командами обновления данных. В простейшем варианте команда INSERT имеет следующий вид:

INSERT INTO имя_таблицы [(список_имени_полей)]

VALUES (список значений);

Если список имён полей не задан, то значения перечисляются в последовательности столбцов таблицы.

Пример 1:

INSERT INTO студент

VALUES (“005”, “C-5”, NULL);

Пример 1:

INSERT INTO оценка

VALUES (“002”, “001”, 13/01/11, 5);

По стандарту SQL вводимые значения не могут быть выражениями, хотя некоторые системы, в том числе MS Acces это допускают:

INSERT INTO оценка

VALUES (“002”, “001”, 13/01/11, 2+3);

При указании списка имён полей их порядок произволен. Это удобно при первичном заполнении таблиц из напечатанного отчёта. Можно сформировать запрос с указанием последовательности полей, как и в печатной форме. Список значений должен указываться в порядке списка имён полей. Если имя поля опущено, то автоматически вводится значения по умолчанию, определённые при создании таблицы (это будет рассмотрено далее).

По команде UPDATE можно изменить некоторые или все значения в существующей строке.

UPDATE имя-таблицы

SET поле = значение, [поле = значение, …]

WHERE условие;

В качестве значений могут использоваться константы и выражения от значений текущей записи:

Пример:

Изменить дату экзамена с 11.01.11 на 12.01.11 у преподавателя с кодом 001:

UPDATE оценка

SET odate = 12/01/11

WHERE opnum = “001” AND

odate = 11/01/11;

Исключение строк из таблицы осуществляется по следующей команде:

DELETE FROM имя_таблицы

WHERE условие;

Если предложение WHERE опущено, удаляются все записи таблицы, иначе – записи, удовлетворяющие условию.

Пример:

Удалить из таблицы Оценка записи студента с кодом 003:

DELETE FROM оценка

WHERE osnum = “003”;

В запросах обновления таблиц могут использоваться подзапросы. Рассмотренная выше команда INSERT позволяла добавлять одну запись в таблицу. Использование подзапросов позволяет добавлять множество записей с помощью одной команды INSERT. В команде INSERT можно применить любую форму подзапроса выборки данных, чтобы извлечь данные из одной таблицы и поместить в другую.

Пример:

Данные о неудовлетворительных оценках студентов поместить в таблицу Неуд:

opnum

osnum

odate

ocen

003

003

16/01/11

2

INSERT INTO НЕУД

SELECT * FROM оценка

WHERE ocen = 2;

Пример:

Поместить в таблицу Средний балл, состоящую из столбцов snum, avg, данные о средних баллах студентов.

snum

avg

001

5

002

4

003

3


INSERT INTO средбалл (snum, avg)

SELECT snum, AVG (ocen) FROM оценка

GROUP BY osnum;

В приведённых примерах таблицы Неуд и Средний балл должны быть предварительно созданы. Способ создания таблиц и одновременного их заполнения мы рассмотрим позже.

В команде UPDATE подзапросы могут использоваться в условиях отбора обновляемых записей.

Пример:

Передать всех дипломников преподавателя П1 преподавателю с кодом 002.

UPDATE студент

SET spdp = “002”

WHERE spdp =

(SELECT pnum FROM Преподаватель WHERE pname = “П-1”);