SQL-Урок 13. Добавление данных (INSERT INTO)
ВВЕРХ❮ ❯
В предыдущих разделах мы рассматривали работу по получению данных с заранее созданных таблиц. Теперь пора разобрать, каким же образом мы можем создавать/удалять таблицы, добавлять новые записи и удалять старые.
Для этих целей в SQL существуют такие операторы, как:
Начнем знакомство с данной группой операторов из оператора INSERT.
1. Добавление целых строк
Как видно из названия, оператор INSERT используется для вставки (добавления) строк в таблицу базы данных.
Добавление можно осуществить несколькими способами:
Итак, чтобы добавить новую строку в таблицу, нам необходимо указать название таблицы, перечислить названия колонок и указать значение для каждой колонки с помощью конструкции
INSERT INTO Sellers (ID, Address, City, Seller_name, Country) VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре VALUES.
2. Добавление части строк
В предыдущем примере при использовании оператора
INSERT INTO Sellers (ID, City, Seller_name) VALUES ('6', 'Los Angeles', 'Harry Monroe')
В данном примере мы не указали значение для двух столбцов Address и Country . Вы можете исключать некоторые столбцы из оператора INSERT INTO, если это позволяет производить определение таблицы. В этом случае должно соблюдаться одно из условий: этот столбец определен как допускающий значение
3. Добавление отобранных данных
В предыдущей примерах мы вставляли данные в таблицы, прописывая их вручную в запросе. Однако оператор INSERT INTO
Для этого мы можем прописать следующий запрос:
INSERT INTO Sellers (ID, Address, City, Seller_name, Country) SELECT ID, Address, City, Seller_name, Country FROM Sellers_EU
Нужно обратить внимание, чтобы значение внутренних ключей не повторялись (поле ID), в противном случае произойдет ошибка.
Оператор SELECT также может включать предложения WHERE для фильтрации данных.
Также следует отметить, что СУБД не обращает внимания на названия колонок, которые содержатся в операторе SELECT, для нее важно только порядок их расположения.
Поэтому данные в первом указанном столбце, что были выбраны из-за SELECT, будут в любом случае заполнены в первый столбец таблицы
4. Копирование данных из одной таблицы в другую
Часто при работе с базами данных возникает необходимость в создании копий любых таблиц, с целью резервирования или модификации. Чтобы сделать полную копию таблицы в SQL предусмотрен отдельный оператор SELECT INTO.
Например, нам нужно создать копию таблицы Sellers, нужно будет прописать запрос следующим образом:
SELECT * INTO Sellers_new FROM Sellers
В отличие от предыдущей конструкции INSERT INTO … SELECT …
При использовании конструкции SELECT … INTO … FROM … следует учитывать следующее:
Статьи по теме:
НОУ ИНТУИТ | Лекция | Загрузка базы данных
< Дополнительный материал 4 || Лекция 24: 123456789101112
Аннотация: Если предприятие работает достаточно долго, то, наверняка, создалась огромная база данных результатов работы. Возможно даже, что она была создана в отличных от SQL Server системах. Но, решив переходить на SQL Server 2000, вы столкнетесь с проблемой перенесения базы данных из прошлой системы в новую. Понять принципы загрузки базы данных в SQL Server, самостоятельно осуществлять массовое копирование с помощью BCP, обеспечивать целостность данных вы сможете, изучив данный материал.
Ключевые слова: базы данных, BCP, DTS, переходная таблица, операции, производственная система, recursive, файл ошибок, ASC, выходная информация, параметры командной строки, журнал ошибок, FMT, prefix, разделитель полей, чтение файла, базовые таблицы, ACP, OEM, widechar, data transformation, text file, data link, visual foxpro, драйвер odbc, OLE DB, file format, delimiter, file type, qualifier, skip, comma, semicolon, алиас, deselect, sql statement, source database, разбиение таблиц, data mart, stage
intuit.ru/2010/edi»>После создания вашей базы данных и таблиц базы данных вы можете переходить к загрузке ваших данных в эту базу. Имеется несколько методов загрузки данных в базу данных; выбираемый вами метод зависит от типа источника ваших данных, от вида обработки, которая будет выполняться с данными, и от того, куда будут загружаться данные. В этой главе мы рассмотрим следующие методы загрузки в базу данных:- Использование программы Bulk Copy Program (BCP). BCP – это внешняя программа, поставляемая вместе с Microsoft SQL Server 2000 для загрузки файлов данных в базу данных. BCP можно также использовать для копирования данных из какой-либо таблицы SQL Server в файл данных.
- Использование оператора BULK INSERT. Оператор Transact-SQL (T-SQL) BULK INSERT позволяет вам копировать большие объемы данных из файла данных в таблицу SQL Server в рамках системы SQL Server. Поскольку этот оператор является оператором SQL (выполняется из ISQL, OSQL или анализатора запросов Query Analyzer), то весь процесс выполняется как поток SQL Server.
- Использование служб преобразования данных Data Transformation Services (DTS). DTS – это набор инструментальных средств, поставляемых вместе с SQL Server, которые намного упрощают задачу копирования данных в SQL Server и из SQL Server. В набор DTS включен мастер для импорта данных и мастер для экспорта данных.
Каждый из этих методов обладает различными возможностями и характеристиками. Вы обязательно найдете хотя бы один метод, отвечающий вашим требованиям.
Для вас могут оказаться полезными следующие дополнительные операции:
- Оператор SELECT…INTO. Этот оператор используется для копирования данных из одной таблицы в другую.
- Переходные таблицы.Переходные таблицы – это временные таблицы, которые обычно используются для преобразования данных внутри базы данных. Вы можете использовать эти таблицы, чтобы облегчить процесс загрузки и модифицировать данные во время загрузки.
Производительность операций загрузки
В этом разделе мы рассмотрим три параметра конфигурирования, которые обычно используются для повышения производительности операций загрузки. Два из этих трех параметров влияют на журнальное протоколирование во время операций массового копирования и третий параметр влияет на блокировку. Массовое копирование – это операция, при которой данные копируются большими порциями; копирование данных большими порциями является наиболее эффективным способом для воспроизведения данных.
Параметры журнального протоколирования
SQL Server использует достаточно сложный механизм протоколирования, чтобы исключить потери данных в случае отказа системы. Журнальное протоколирование имеет важное значение для целостности данных в системе, но оно может существенно увеличивать нагрузку на систему. Вы можете снижать эту нагрузку за счет уменьшения количества протоколируемых данных во время массовых загрузок.
Примечание.. После отказа системы SQL Server восстановит базу данных. Для всех транзакций, которые не были фиксированы на момент отказа, будет выполнен откат (отмена). Все транзакции, которые были фиксированы на момент отказа, будут повторно выполнены (восстановлены). Откат и повторное выполнение транзакций возвратят систему в состояние, в котором она находилась перед отказом. (О резервном копировании и восстановлении см. «Резервное копирование Microsoft SQL Server» и «Восстановление и воспроизведение базы данных» .)По умолчанию все операции вставки в базу данных полностью протоколируются, что позволяет выполнить восстановление и откат транзакций в случае отказа системы. Отключая полное протоколирование массового копирования (которое выполняется с помощью программы BCP, оператора BULK INSERT или оператора SELECT…INTO ), вы можете снизить количество протоколируемых данных, но при этом будут поддерживаться только операции отката. Это повысит производительность резервного копирования, но потребует повторного запуска всего процесса загрузки в базу данных в случае отказа системы, поскольку не будет выполняться журнальное протоколирование, которое обычно используется для восстановления базы данных. Этот вариант относится к переходным таблицам, только если вы загружаете эти таблицы с помощью описанных выше методов массового копирования.
Полное протоколирование этих операций массового копирования отключается при выполнении всех следующих условий:
Еще один параметр базы данных – trunc. log on chkpt – отключает сохранение журнальных записей, когда для этого параметра задано значение TRUE. В этом случае происходит усечение журнала транзакций каждый раз, как встречается контрольная точка. Это повышает производительность массового копирования, но означает, что вы не получите ни повторного выполнения, ни отката в случае отказа системы.
Внимание. Если вы активизируете параметр trunc. log on chkpt (задав для него значение TRUE ), то вам следует делать это, только если вы первоначально загрузили данные в базу данных. Полное отключение протоколирования влияет на всю базу данных и может сделать систему невосстанавливаемой. Таким образом, этот параметр никогда не следует использовать в производственной системе при обычных операциях, когда восстановление важно для системы. Если вы все-таки задали значение TRUE для параметра trunc. log on chkpt, не забудьте отключить его, когда закончите операцию массовой загрузки.Дальше >>
< Дополнительный материал 4 || Лекция 24: 123456789101112
Оператор SQL INSERT SELECT — обучение на примере
Оператор INSERT обычно используется для вставки строки в таблицу с использованием заданных значений. Существует вторая форма INSERT, которая вставляет результат оператора SELECT в таблицу, известную как INSERT SELECT.
Как следует из названия, он состоит из оператора INSERT и оператора SELECT. Этот оператор особенно полезен, когда вам нужно вставить одну или несколько строк из одной таблицы в другую.
Вставка строк таким образом не влияет ни на какие существующие строки ни в исходной, ни в целевой таблице.
Образец таблицы
Чтобы помочь вам лучше понять примеры и следовать руководству, мы собираемся использовать следующие образцы таблиц.
Следующая таблица является частью «Системы управления персоналом», которая содержит основную информацию о штатных сотрудниках .
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 | 9003 2
2 | Ева | 24 | Чикаго | Разработчик | 32000 |
3 | Макс | 26 9 0021 | Нью-Йорк | Разработчик | 29000 |
4 | Ким | 25 | Чикаго | Менеджер | 55000 |
Вторая таблица содержит основную информацию о стажерах .
5 | Джо | 23 | Нью-Йорк | Разработчик | 9000 |
6 | Сэм | 27 | 900 20 ЧикагоРазработчик | 10000 |
Вставить все строки из одной таблицы в другую
Вставить для всех строк из одной таблицы в другую с помощью INSERT SELECT вы должны, как минимум, указать две части информации — имя исходной таблицы и имя целевой таблицы. Просто убедитесь, что столбцы и их типы данных в исходной и целевой таблицах совпадают, хотя нет необходимости в совпадении имен столбцов.
Вот основной синтаксис INSERT SELECT.
ВСТАВИТЬ В целевую_таблицу ВЫБИРАТЬ * ИЗ исходной_таблицы;
Предположим, вы хотите объединить список стажеров из таблицы «Стажеры» в таблицу «Сотрудники». Вы можете сделать следующее:
ВСТАВИТЬ В СОТРУДНИКИ ВЫБИРАТЬ * ОТ Интернов;
Содержимое таблицы «Сотрудники» после вставки:
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 |
2 | Ева | 24 | Чикаго | Разработчик | 32000 |
3 | Макс. | 26 | Нью-Йорк | Разработчик | 29000 |
4 900 21 | Ким | 25 | Чикаго | Менеджер | 55000 |
5 | Джо | 23 9 0021 | Нью-Йорк | Разработчик | 9000 |
6 | Сэм | 27 | Чикаго | Разработчик | 10000 |
Этот пример импортирует все данные из «Стажеров» в «Сотрудников». Вместо того, чтобы перечислять ЗНАЧЕНИЯ, которые нужно вставить, оператор SELECT извлекает их из «стажеров».
Осторожно:
Хотя этот синтаксис прост, он совсем небезопасен, и его обычно следует избегать; Поскольку это сильно зависит от порядка, в котором столбцы определены как в исходной, так и в целевой таблицах.
Несмотря на то, что порядок двух столбцов сейчас совпадает, нет гарантии, что столбцы будут в том же порядке, когда один из них будет перестроен в следующий раз.
Более безопасный и рекомендуемый способ использования инструкции INSERT SELECT — явное указание имен столбцов. Просто убедитесь, что каждый столбец в операторе SELECT соответствует столбцу, указанному в операторе INSERT.
ВСТАВИТЬ В целевую_таблицу (столбец1, столбец2,...) ВЫБЕРИТЕ столбец1, столбец2,... ИЗ исходной_таблицы;
Следующий пример работает точно так же, как и предыдущая инструкция INSERT SELECT, но на этот раз имена столбцов указываются явно.
ВСТАВИТЬ В СОТРУДНИКИ (ID, имя, возраст, город, должность, зарплата) ВЫБЕРИТЕ ID, имя, возраст, город, работу, зарплату ОТ Интернов;
Содержимое таблицы «Сотрудники» после вставки:
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 |
2 | Ева | 24 | Чикаго | Разработчик | 32000 |
3 900 21 | Макс | 26 | Нью-Йорк | Разработчик | 29000 |
4 | Ким | 25 | Чикаго | Менеджер | 55000 |
5 | Джо | 23 | Нью-Йорк | Разработчик | 9000 |
6 | Сэм | 27 | Чикаго | Разработчик | 10000 |
В этом примере указаны одинаковые имена столбцов в операторах INSERT и SELECT для ясности. Однако нет необходимости сопоставлять имена столбцов. На самом деле СУБД учитывает положение столбцов в SELECT независимо от их имен. Таким образом, первый столбец в SELECT используется для заполнения первого столбца в операторе INSERT и так далее.
Основное преимущество этого синтаксиса заключается в том, что при явном указании имен столбцов вы можете располагать их в любом порядке. Следующий оператор INSERT аналогичен предыдущему, но задает список столбцов в другом порядке.
ВСТАВЬТЕ В СОТРУДНИКИ (Город, Имя, Должность, Возраст, Зарплата, ID) ВЫБЕРИТЕ город, имя, работу, возраст, зарплату, ID ОТ Интернов;
Содержимое таблицы «Сотрудники» после вставки:
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 |
2 | Ева | 24 | 9 0020 ЧикагоРазработчик | 32000 | |
3 | Макс. | 26 | Нью-Йорк | Разработчик | 29000 |
4 | Ким | 25 | Чикаго | Менеджер | 55000 9002 1 |
5 | Джо | 23 | Нью-Йорк | Разработчик | 9000 |
6 | Сэм | 27 | Чикаго 90 021 | Разработчик | 10000 |
Вставить выбранные строки
Оператор SELECT, встроенный в оператор INSERT ничем не отличается от оператора SELECT, который вы используете для извлечения данных, поэтому он может включать предложение WHERE. И это предложение WHERE фильтрует данные, которые нужно скопировать.
ВСТАВИТЬ В целевую_таблицу (столбец1, столбец2,...) ВЫБЕРИТЕ столбец1, столбец2,... ИЗ исходной_таблицы ГДЕ условие;
Следующий запрос вставляет одну строку из таблицы «Стажеры» в таблицу «Сотрудники».
ВСТАВИТЬ В СОТРУДНИКИ (ID, имя, возраст, город, должность, зарплата) ВЫБЕРИТЕ ID, имя, возраст, город, работу, зарплату ОТ СТАЖИРОВ ГДЕ ID = 6;
Содержимое таблицы «Сотрудники» после вставки:
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 |
2 | Ева | 24 | Чикаго | Разработчик | 32000 |
3 | Макс. | 26 | 900 20 Нью-ЙоркРазработчик | 29000 | |
4 | Ким | 25 | Чикаго | Менеджер | 55000 |
6 | Сэм | 27 | Чикаго | Разработчик | 10000 |
Вставка неполных строк
Используя приведенный выше синтаксис, вы можете копировать только некоторые столбцы. СУБД будет вставлять NULL или значение по умолчанию в столбцы, которые не копируются.
Для демонстрации давайте импортируем только столбцы «ID», «Имя», «Возраст» и «Работа» из таблицы «Стажеры» в таблицу «Сотрудники».
ВСТАВИТЬ В СОТРУДНИКИ (ID, имя, возраст, должность) ВЫБЕРИТЕ ID, имя, возраст, работу ОТ Интернов;
Содержимое таблицы «Сотрудники» после вставки:
1 | Боб | 28 | Нью-Йорк | Менеджер | 60000 |
2 | 900 20 Ева24 | Чикаго | Разработчик | 32000 | |
3 | Макс | 26 | Нью-Йорк | Разработчик | 29000 |
4 | Ким | 25 | Чикаго | 900 20 Менеджер55000 | |
5 | Джо | 23 | NULL | Разработчик | NULL |
Сэм | 27 | NULL | Разработчик | NULL |
Как видно из приведенного выше примера, столбцы «Город» и «Зарплата» вставляются со значениями NULL.
Внимание!
Если вы планируете пропустить столбец, вам необходимо убедиться, что для этого столбца выполняется одно из следующих условий:
- В столбце разрешены значения NULL.
- Значение по умолчанию для столбца указано в определении таблицы.
Если вы опустите столбец, который не допускает значений NULL и не имеет значения по умолчанию, то инструкция INSERT завершается ошибкой и генерируется ошибка.
Оператор SQL INSERT INTO — Темы масштабирования
Обзор
Оператор SQL INSERT INTO — это команда, которая используется для вставки данных в таблицы. Использование вставки в таблицу SQL, мы можем вставлять новые одиночные или множественные записи в таблицу реляционных баз данных. Мы также можем скопировать данные из одной таблицы в другую таблицу , используя оператор INSERT INTO SELECT. Для использования инструкции INSERT INTO SELECT типы данных исходной и целевой таблиц должны быть одинаковыми.
Введение
Оператор SQL INSERT INTO — это SQL-запрос или команда, используемая для вставки данных в таблицы. Используя вставку в таблицу SQL, мы можем вставить новые одиночные или множественные записи в таблицу реляционных баз данных (базы данных, такие как ORACLE, MySQL, MS-Access, IBM DB2 и т. д.).
Примечание:
- Строка таблицы базы данных также известна как запись или кортеж .
- Столбец таблицы базы данных также известен как атрибут .
Для вставки данных в таблицу у нас есть два способа:
- Первый — с помощью команды SQL вставки в таблицу.
- Мы также можем вставлять новые записи в таблицу, используя вставку SQL в оператор select. Мы узнаем об обоих способах позже в этой статье.
Прежде чем изучать вставку в таблицу SQL, давайте сначала кратко ознакомимся с SQL и управлением базой данных. Итак, SQL или язык структурированных запросов используется для манипулирования и взаимодействия с данными, хранящимися в виде таблиц в базах данных. Чтобы манипулировать данными, нам сначала нужно вставить данные в таблицы.
INSERT — это команда DML (язык манипулирования данными) , используемая в SQL и связанных с SQL реляционных базах данных. Чтобы вставить данные в таблицу SQL, нам нужен оператор SQL INSERT INTO. Давайте узнаем о вставке в таблицу SQL подробнее.
Вставка данных без использования оператора SELECT
Как мы видели, у нас есть два способа вставки записей, первый вариант, т. е. вставка в таблицу SQL, может выполняться двумя разными способами, а именно — путем указания столбца имена столбцов с помощью инструкции INSERT INTO, а во-вторых, не указывая имена столбцов с помощью инструкции INSERT INTO. Давайте изучим синтаксис обоих способов.
1. INSERT INTO путем указания имен столбцов
Мы можем вставить новые записи в таблицу базы данных, указав имена определенных столбцов. Указав имена столбцов, мы получаем гибкость при вставке значений, поскольку мы можем изменить порядок столбцов и значений из фактического порядка столбцов, присутствующих в таблице базы данных.
Синтаксис:
2. INSERT INTO без указания имен столбцов
Мы можем напрямую вставлять новые записи или значения в таблицу базы данных (без упоминания имен столбцов). Синтаксис геттера меньше, когда мы не указываем имена столбцов (предыдущий способ). Но один из недостатков, связанных с текущим способом, заключается в том, что мы не получаем гибкости, мы не можем изменить порядок значений из фактического порядка столбцов, присутствующих в таблице базы данных.
Синтаксис:
Давайте обсудим несколько примеров, чтобы лучше понять тему.
Примеры
Теперь мы рассмотрим сценарии различных баз данных и вставим новые записи, используя вставку в таблицу SQL. Давайте обсудим различные способы вставки с примерами.
Вставить значения во все столбцы
Предположим, у нас есть база данных жителей города. У нас есть три столбца, а именно: имя гражданина, возраст и число граждан Aadhar. Мы хотим вставить новые записи в таблицу граждан. Как мы видели, для вставки значений во все столбцы у нас есть два способа:
Указав имена столбцов
Мы можем вставить новые записи во все столбцы таблицы Citizen базы данных , указав имена конкретных столбцов .
Пример:
Без указания имен столбцов
Мы также можем вставить новые записи во все столбцы таблицы Citizen базы данных без упоминания конкретных имен столбцов .
Пример:
Выход:
Aadhar_No | Имя | Возраст |
---|---|---|
123456 | Том 9002 1 | 21 |
Примечание Порядок столбцов в операторе вставки должен быть таким же, как и таблицы, присутствующей в базе данных.
Вставка данных только в указанные столбцы
Мы можем вставить новые записи в указанные столбцы таблицы Citizen базы данных, указав имена конкретных столбцов.
Предположим, у нас есть база данных учеников школы. У нас есть четыре столбца в таблице студентов: имя, возраст, секция и номер списка. Но мы хотим сохранить только имя, номер списка и возраст ученика в таблице учеников. Итак, мы должны использовать предложение INSERT INTO с конкретными именами столбцов.
Вывод:
Roll_number | Имя | Возраст |
---|---|---|
12 | Том | 15 |
Примечание: Поскольку мы указали имена столбцов, порядок столбцов в операторе вставки не обязательно должен совпадать с порядком таблицы в базе данных.
Вставка нескольких записей
До сих пор мы видели вставку одной записи, но мы также можем вставлять несколько записей в таблицу. Давайте возьмем пример, чтобы лучше визуализировать вставку.
Допустим, у нас есть база данных стран мира. Таблица стран состоит из трех столбцов: название страны, код страны и континент (на котором расположена страна). Итак, вставим в таблицу стран записи разных стран.
1. Указав имена столбцов таблицы:
2. Без указания имен столбцов таблицы:
Вывод:
Название | Код | Континент |
---|---|---|
Индия | IND | Азия |
Франция | FRN | Европа |
Япония | Япония | Азия |
Бразилия | BRZ | Африка |
Мы можем скопировать данные из одной таблицы в другую, используя оператор INSERT INTO SELECT.
Примечание:
- Для использования инструкции INSERT INTO SELECT типы данных исходной и целевой таблиц должны быть одинаковыми.
- Исходные данные исходной таблицы и существующие записи целевых таблиц не затрагиваются.
Как и в случае с другим оператором INSERT INTO, у нас есть два способа копирования данных в другую таблицу.
1. Без указания имен столбцов таблицы:
Мы можем скопировать все столбцы одной таблицы в другую таблицу просто не указывая имена столбцов.
СИНТАКСИС:
2. Указав имена столбцов таблицы:
Мы можем скопировать определенные столбцы одной таблицы в другую таблицу, указав имена необходимых столбцов.
Синтаксис:
Примечание: Предложение WHERE является необязательным. Мы можем использовать предложение WHERE, если хотим, чтобы из исходной таблицы в целевую таблицу или выходные данные были скопированы только определенные условные записи.
Возьмем пример для визуализации предложения INSERT INTO SELECT.
Предположим, у нас есть база данных сотрудников компании. Таблица сотрудников состоит из четырех столбцов, а именно идентификатора сотрудника, имени, страны и зарплаты. Мы хотим скопировать данные таблицы сотрудников в другую таблицу, а именно в companyData.
1. Без указания имен столбцов таблицы:
2. С указанием имен столбцов таблицы:
Заключение
- INSERT — это DML (язык обработки данных) команда , используемая в SQL и связанных с SQL реляционных базах данных. Чтобы вставить данные в таблицу SQL, нам нужен оператор SQL INSERT INTO.
- Используя вставку в таблицу SQL, мы можем вставлять новые одиночные или множественные записи в таблицу реляционных баз данных.
- Мы можем вставлять записи, указывая имена столбцов с помощью инструкции INSERT INTO и не указывая имена столбцов с помощью инструкции INSERT INTO.
- Мы можем скопировать данные из одной таблицы в другую, используя оператор INSERT INTO SELECT.
- Для использования инструкции INSERT INTO SELECT типы данных исходной и целевой таблиц должны быть одинаковыми.
- Исходные данные исходной таблицы и существующие записи целевых таблиц не затрагиваются.