Популярные услуги

Добавление данных

2021-03-09СтудИзба

15. Добавление данных

Другим часто используемым оператором SQL является оператор INSERT. Этот оператор используется для ввода (добавления) строк в таблицу базы данных. Добавление можно осуществлять несколькими способами:

· добавить одну полную строку;

· добавить часть одной строки;

· добавить результаты запроса.

Для использования оператора INSERT могут потребоваться особые права на доступ в СУБД со структурой клиент-сервер.

Для Access необходимо:

1. Установить доверие базе данных (на сеанс). Для этого:

Предупреждение системы безопасности Параметры… Включить это содержание - включить

Рекомендуемые материалы

2. Для отмены запросов на подтверждение установить:

Офис Параметры Access Дополнительно Подтверждение запрос на изменение - снять включение.

3. Запрос можно сохранить, а затем выполнять.

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

15.1.  Добавление полных строк

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

Пример. В таблицу Клиентов надо добавить сведения о клиенте.

INSERT INTO Customers

VALUES (‘1000000006’,

    ‘Toy Land’,

    ‘123 Any Street’,

    ‘New York’,

    ‘NY’,

    ‘11111’,

    ‘USA’,

    NULL,

    NULL);

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

Ключевое слово INTO в некоторых реализациях является не обязательным. Однако хорошим тоном считается указание этого ключевого слова всегда, этим обеспечивается переносимость кода между СУБД.

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

Безопасный, но более громоздкий способ записи оператора INSERT таков.

 INSERT INTO Customers(cust_id,

      cust_name,

      cust_address,

      cust_city,

      cust_state,

      cust_ZIP,

      cust_country,

      cust_contact,

      cust_email)

VALUES (‘1000000006’,

      ‘Toy Land’

      ‘123 Any Street’,

      ‘New York’,

      ‘NY’,

      ‘11111’,

      ‘USA’,

      NULL,

      NULL);

Здесь имена столбцов явно указаны в круглых скобках, следующих после имени таблицы. Когда строка вводится в таблицу, СУБД устанавливает соответствие каждого предмета в списке столбцов с соответствующим значением в списке VALUES. Первое значение в списке соответствует первому указанному имени столбца, второе значение соответствует имени второго столбца и т.д.

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

Следующий пример заполняет все столбцы строки, как и в предыдущем примере, но делает это в другом порядке.

 INSERT INTO Customers(cust_id,

      cust_contact,

      cust_email,

      cust_name,

      cust_address,

      cust_city,

      cust_state,

      cust_ZIP,

      cust_country)

VALUES (‘1000000006’,

      NULL,

      NULL,

      ‘Toy Land’

      ‘123 Any Street’,

      ‘New York’,

      ‘NY’,

      ‘11111’,

      ‘USA’);

15.2.  Добавление части строки

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

Рассмотрим следующий пример.

INSERT INTO Customers(cust_id,

      cust_name,

      cust_address,

      cust_city,

      cust_state,

      cust_ZIP,

      cust_country)

VALUES (‘1000000006’,

      ‘Toy Land’

      ‘123 Any Street’,

      ‘New York’,

      ‘NY’,

      ‘11111’,

      ‘USA’);

В примере значения не предполагаются для двух столбцов cust_contact и cust_email.

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

· этот столбец определен как допускающий значение NULL (отсутствие какого-либо значения);

· в определении таблицы указано значение по умолчанию. Это означает, что, если не указано никакое значение, будет использовано значение по умолчанию.

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

15.3.  Добавление выбранных данных

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

Эта форма известна как оператор INSERT SELECT и данный оператор выполняет то же самое, что делают операторы INSERT и SELECT.

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

Данные будут импортироваться из таблицы CustNew. Поэтому сначала создается и наполняется таблица CustNew. Формат таблицы должен быть таким же, как и таблица Customers. При заполнении необходимо следить, чтобы не были использованы значения cust_id, которые уже есть в таблице Customers. 

      cust_id                  1000000007               1000000009               1000000008

      cust_name            Toy Land                    Village Toys               Fun4All

      cust_address         456 Any Street           829 Riverside Drive   123 Any Street

      cust_city               New York                  Chicago                      New York

      cust_state             NN                             IL                               NY

      cust_ZIP               77777                          99999                          22222

      cust_country         USA                           USA                           USA

      cust_contact         Jim Smith                   Jim Jones                    NULL

      cust_email             NULL                        jjones@fun4all.com   NULL

INSERT INTO Customers(cust_id,

  cust_contact,

  cust_email,

  cust_name,

  cust_address,

  cust_city,

  cust_state,

  cust_ZIP,

  cust_country)

SELECT cust_id,

  cust_contact,

  cust_email,

  cust_name,

  cust_address,

  cust_city,

  cust_state,

  cust_ZIP,

  cust_country

FROM CustNew;

В этом примере для импорта всех данных из таблицы CustNew в таблицу Customers используется оператор INSERT SELECT. Вместо того, чтобы перечислять значения, которые должны быть добавлены, оператор SELECT выбирает их из таблицы CustNew. Каждый столбец в операторе SELECT соответствует столбцу в списке указанных столбцов. Добавлены будут все данные таблицы CustNew.

Следует иметь в виду, что СУБД не обращает внимания на имена столбцов, возвращаемых оператором SELECT. Используется положение столбца, так что первый столбец в SELECT, независимо от имени, будет использован для заполнения первого указанного столбца таблицы.

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

15.4.  Копирование данных из одной таблицы в другую

Это – другая форма добавления данных, при которой оператор INSERT не применяется. Чтобы скопировать содержимое какой-то таблицы в новую таблицу, которая создается в процессе выполнения оператора, можно использовать оператор SELECT INTO.

В отличие от оператора INSERT SELECT, который данные добавляет в уже существующую таблицу, SELECT INTO копирует данные в новую таблицу, а в ряде СУБД может переписать таблицу, если такая уже существует.

Отличие между операторами: SELECT INTO экспортирует данные, INSERT SELECT – импортирует.

Пример. Применение оператора SELECT INTO.

SELECT *

INTO CustCopy

FROM Customers;

Этот оператор SELECT создает новую таблицу с именем CUSTCopy и копирует в нее все содержимое таблицы Customers. Чтобы скопировать только часит стобцов, следует явно указать имена столбцов, а не использовать *.

В СУБД MySQL и Oracle используется иной синтаксис.

CREATE NABLE CustCopy AS

"Лекция 1" - тут тоже много полезного для Вас.

SELECT *

FROM Customers;

При использовании оператора SELECT INTO слкдует учитывать:

· можно использовать любые опции и предложения оператора SELECT, включая WHERE и GROUP BY;

· для добавления данных из нескольких таблиц можно использовать объединение;

· данные можно добавлять только в одну таблицу независимо от того, из скольких таблиц они были извлечены.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее