Добавление данных — команда insert. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Добавление данных — команда insert.



Рассмотрим некоторые возможности заполнения таблиц. Данные в таблицу могут быть внесены различными способами:

с помощью команды INSERT. Используя команду INSERT, можно добавить как одну строку, так и, множество строк;

с помощью команды SELECT INTO. В; этом случае на основе результата выборки, возвращаемого запросом, автоматически создается новая таблица.

Рассмотрим процесс внесения данных в таблицу с помощью команды INSERT.Как уже было сказано, эта команда может быть использована для вставки как одной, так и множества строк.

Вставка одной строки

В простейшем случае вставка данных с помощью команды INSERTпредполагает использование конструкции INSERTVALUES:

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

VALUES (<список_ значений>)

С помощью этой команды можно добавить только одну строку. Аргумент <имя_ таблицы> идентифицирует имя таблицы, в которую необходимо вставить строку данных. Необязательный параметр <список_ столбцов> задает имена столбцов, в которые будет производиться добавление данных.

Рассмотрим процесс добавления данных в таблицу «Сводная_ ведомость». Каждая строка этой таблицы содержит результат сдачи экзамена по отдельной дисциплине отдельным студентом. Если студент, ID_ Студенткоторого равен 10, сдал экзамен по дисциплине со значением 3 в столбце ID_ Дисциплина. на оценку «пять», то команда добавления этих данных в таблицу «Сводная_ ведомостью выглядит следующим образом:

INSERT Сводная_ ведомость

VALUES (10, 3, 5)

Для назначения произвольного порядка и состава столбцов в этом случае можно использовать следующую, команду:

INSERT INTO Сводная_ ведомость

(ID_ дисциплина, ID_ Студент)

VALUES (3, 10)

Если для столбца Оценка определено значение по умолчанию или разрешено хранение значений NULL, то значение для этого столбца можно вообще не указывать.

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

Вставка результата запроса

Приведем упрощенный синтаксис команды INSERT:

INSERT [ INTO]

<имя_ таблицы>

{ [ (<список_ колонок>) ]

{VALUES

({ DEFAULT /NULL / <выражение> } [,..., n])

<результирующая_ таблица>

}

}

DEFAULT VALUES

Рассмотрим назначение каждого из аргументов.

INTO — дополнительное ключевое слово, которое может быть использовано между словом INSERT и именем таблицы для обозначения того, что следующий параметр является именем таблицы, в которую будут вставлены данные;

<имя_ таблицы> — имя таблицы, в которую необходимо вставить данные;

<список_ столбцов> — содержит список столбцов, в которые будет производиться вставка данных. Если он опущен, то данные будут вставляться последовательно во все столбцы, начиная с первого. Значения для столбцов указываются после ключевого слова VALUES. Для каждого столбца должно быть задано выражение, имеющее соответствующий тип данных. Если список столбцов не указан, то количество значений VALUES должно соответствовать количеству столбцов таблицы. Если же список столбцов явно задан, то это определяет порядок значений VALUES. Можно не указывать явно значения для столбцов, если для них определено значение по умолчанию или разрешено хранение значений NULL.

VALUES ((DEFAULT / NULL / <выражение>) [,..., п]) — определяет набор данных, которые будут вставлены в таблицу. Количество аргументов VALUES определяется количеством столбцов в таблице или количеством столбцов в списке. Для каждого столбца таблицы можно указать один из трех возможных вариантов:

DEFAULT — будет вставлено значение по умолчанию, определенное для столбца. Если для столбца разрешено хранение значений NULL, а значение по умолчанию не определено, то в столбец будет вставлено значение NULL.

NULL — в столбец будет вставлено значение NULL. Естественно, вставка таких значений будет успешной, если для столбца была разрешена возможность хранения значений NULL. Следует помнить, что для столбцов, входящих в первичный ключ, возможность хранения значений NULL не предусмотрена.

<выражение> — задает значение, которое будет вставлено в столбец таблицы. Этот параметр должен иметь тот же тип данных, что и столбец, а также удовлетворять ограничениям целостности, определенным для соответствующего столбца.

<результирующая_ таблица> — этот параметр подразумевает указание запроса SELECT, с помощью которого будет формироваться набор данных, вставляемых в таблицу. Количество столбцов, порядок их перечисления и их типы данных должны соответствовать столбцам, указанным в списке <список_ столбцов>. Если последний отсутствует, то запрос должен возвращать значения для всех столбцов таблицы.

DEFAULT VALUES — при указании этого параметра строка будет содержать только значения по умолчанию. Если для столбца не установлено значение по умолчанию, но разрешено хранение значений NULL,то в столбец будет вставлено значение NULL.Если же для столбца не разрешено хранение значений NULL, нет значения по умолчанию и в команде INSERT не указано значение для вставки, то будет выдано сообщение об ошибке и выполнение команды прервется.

Более сложный случай вставки данных предполагает использование конструкции INSERT INTO...SELECT:

INSERT INTO <имя_ таблицы> SELECT' <выражение_ запроса>

Аргумент <имя таблицы> содержит имя таблицы, в которую будут вставляться выбранные данные. Таблица должна иметь соответствующую структуру и быть предварительно создана.

<Выражение_ запроса> определяет тело запроса SELECT, с помощью которого производится выборка данных из одной или нескольких таблиц. Например, для выборки данных из таблицы «Студенты» обо всех студентах, поступивших в ВУЗ в 2000 г., и сохранения их в таблице «Студент 2000» можно использовать такую последовательность инструкций:

CREATE TABLE Студент_ 2000

(ID _Студент_ 2000 INTEGER NOT NULL,

Фамилия CHAR (30) NOT NUL

Имя СНАR (15) NOT NULL,

Отчество CHAR (20) NOT NULL

Адрес CHAR (30)

Телефон CHAR (8),

PRIMARY KEY (ID_ Студент_ 2000))

INSERT INTO Студент_ 2000

SELECT ID_ Студент Фамилия, Имя, отчество, Адрес, Телефон

FROM Студенты

WHERE Год_ поступления = 2000

После выполнения этой последовательности команд инициируем запрос на отбор строк из новой таблицы:

SELECT TOP 5 Фамилия, Имя, Отчество

FROM Студент_ 2000

Будет выдан результат, показанный на рис. 7.35.

Приведенный пример иллюстрирует вставку строк данных в таблицу на основе результата выполнения запроса, обращающегося к одной таблице. Более сложные запросы могут обращаться к множеству таблиц одной или нескольких баз данных.

В качестве еще одного примера рассмотрим помещение в новую таблицу «Преподаватель-дисциплина» информации о том, какой преподаватель какую дисциплину ведет.

Для этого мы будем работать с тремя таблицами: «Кадровый_ состав», «Учебный_ план» и «Дисциплины». В первой таблице содержится список преподавателей, тогда как в третьей — список дисциплин. С помощью таблицы «Учебный план» устанавливается связь «многие ко многим» между таблицами «Кадровый_ состав» и «Дисциплины».

Прежде чем приступать к вставке данных, необходимо создать таблицу, которая будет содержать интересующие нас данные. Помимо столбцов для хранения информации об имени и фамилии преподавателя и названии дисциплины, предусмотрим столбцы для хранения идентификационных номеров преподавателей и дисциплин:

CREATE TABLE Преподаватель_ дисциплина

(ID_ Дисциплина INTEGER НОТ NULL

ID_ Преподаватель INTEGER NOT NULL

Наименование CHAR (20) NОТ NULL,

Фамилия СНАR (30) NOT NULL,

Имя CHAR (15) NOT NULL

Отчество CHAR (20) NOT NULL,

Должность. CHAR (20) NOT NULL

Теперь вставим в созданную таблицу нужные нам данные, выполнив для этого следующий запрос:

INSERT INTO Преподаватель_ дисциплина

SELECT ПХЗТТИСТ Дисциплины. ID_ Дисциплина,

Кадровый_ состав. ID_ Преподаватель, Наименование,

Фамилия, Имя,. Отчество, Должность

FROM Кадровый_ состав, Учебный_ план, Дисциплины

WHERE Кадровый_ состав. ID_ Преподаватель =

Учебный_ план. ID_ Преподаватель

АND Дисциплины ID_ Дисциплина. Учебный_ план. ID_дисциплина

В результате в таблицу будет вставлено 54 строки.

SELEST TOP 4 *

FROM Преподаватель_ дисциплина

Результат запроса по новой таблице показан на рис. 7.36.



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 279; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.62.45 (0.014 с.)