VALUES (список значений)
Если в команде список имен столбцов опущен, то будут последовательно заполнены все столбцы в том порядке, в котором они были указаны в команде CREATE TABLE.
Например:
INSERT INTO subjects VALUES (5, ‘Базы данных’)
INSERT INTO students (cod_st, name_st, born) VALUES (3, ‘Петров’,’12.03.1990’)
Во второй команде столбец phone (телефон) таблицы students можно оставить незаполненным, т.к. на него не наложено ограничение NOT NULL.
Рассмотрим, при каких ситуациях данные команды могут привести к ошибке. В случае вставки нового предмета таких ситуаций две – уже есть предмет либо с кодом 5, либо с названием Базы данных (оба столбца предполагают проверку уникальности). Во втором случае на уникальность будет проверен только один столбец cod_st.
Команда
INSERT INTO subjects(cod_st, cod_sub, mark) VALUES (3, 5, 1)
в нашей демонстрационной базе данных не имеет никаких шансов выполниться, поскольку на столбец mark наложено ограничение
CHECK (mark BETWEEN 2 AND 5)
Исправим оценку:
INSERT INTO subjects(cod_st, cod_sub, mark) VALUES (3, 5, 4)
Мы уже знаем, что предмет с кодом 5 существует, как и студент с кодом 3, значит, ограничения внешнего ключа не нарушены. Однако может случиться последняя из возможных исключительных ситуаций – нарушение уникальности составного первичного ключа таблицы mark (студент с кодом 3 уже имеет оценку по предмету с кодом 5). В случае, если уникальность не нарушена, новая строка благополучно добавится в таблицу marks.
Вариант 2 – вставка множества строк на основе запроса по другим таблицам
Команда имет вид:
INSERT INTO имя таблицы [(список столбцов)]
SELECT … (запрос на выборку из других таблиц)
Например:
INSERT INTO marks (cod_st, cod_sub)
SELECT students.cod_st, subject.cod_sub
FROM students, subject WHERE cod_sub=5
В данном примере в таблицу оценок будут добавлены все студенты, а в качестве предмета будет помещен предмет с кодом 5 (команда SELECT будет подробно рассмотрена в следующих лекциях). Теперь преподавателю этого предмета достаточно только проставить оценки в уже созданных строках.
При выполнении команды ограничения проверяются для каждой вставляемой строки и в случае их нарушения хотя бы для одной из строк все данные не будут добавлены. Например, если кто-либо из студентов уже имеет оценку по предмету с кодом 5, автоматически выполнится команда ROLLBACK - откат.
Команда не выполнилась бы и в том случае, если бы на столбец mark было наложено ограничение NOT NULL.
Дата добавления: 2015-08-26; просмотров: 1250;