История развития баз данных. Основные понятия и определения. Архитектура базы данных. Физическая и логическая независимость, страница 20

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

WHEREopnum = “001” AND

odate = 11/01/11;

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

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

WHERE условие;

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

Пример:

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

DELETE FROM оценка

WHERE osnum = “003”;

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

Пример:

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

INSERT INTO НЕУД

SELECT * FROM оценка

WHERE ocen = 2;

opnum

osnum

odate

ocen

003

003

16/01/11

2

Пример:

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

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

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

GROUP BY osnum;

snum

avg

001

5

002

4

003

3

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

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

Пример:

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

UPDATE студент

SET spdp = “002”

WHERE spdp =

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

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

В теории практики баз данных всегда различают 2 понятия: язык манипулирования данными (ЯМД) и язык описания данных (ЯОД). К ЯМД относятся рассмотренные выше команды SQL, а к ЯОД относятся команды создания таблиц и связей между ними. Речь идёт не только об описании состава и формата полей, но и о значении по умолчанию и ограничении на множество допустимых значений. Всё это определяется не на уровне конкретных записей, а как свойство определяемых таблиц данных и совокупностей таблиц.

Создание таблиц может быть выполнено командой языка ЯМД на основе данных из уже существующих таблиц. Это типичная форма хранения промежуточных данных. Формат это команды имеет следующий вид:

SELECT список_полей INTO новая_таблица FROM источник;

Здесь список_полей – это имена полей исходных таблиц, из которых будет состоять новая таблица; новая_таблица – имя создаваемой таблицы; источник – таблица или подзапрос.

Пример:

Создать таблицу средний балл с данными о средних баллах студентов.

SELECTsnum, avgINTO новая_таблица FROM источник;

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

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

GROUP BY osnum;