Sql for beginners (part 8) : the insert statement

Использование SELECT в инструкции INSERT INTO

Можно использовать инструкцию MySQL INSERT SELECT для копирования строк из одной таблицы и их вставки в другую.

Использование этого оператора аналогично использованию INSERT INTO. Разница в том, что оператор SELECT применяется для выборки данных из другой таблицы. Ниже приведены различные способы использования INSERT INTO SELECT:

Вставка всех столбцов таблицы: можно скопировать все данные таблицы и вставить их в другую таблицу.

Синтаксис:

INSERT INTO первая_таблица SELECT * FROM вторая_таблица;

первая_таблица: имя первой таблицы.
вторая_таблица: имя второй таблицы.

Мы использовали инструкцию SELECT для копирования данных из одной таблицы и инструкцию INSERT INTO для их вставки в другую.

Вставка отдельных столбцов таблицы. Можно скопировать только те столбцы таблицы, которые необходимо вставить в другую таблицу.

Синтаксис:

INSERT INTO первая_таблица(имена_столбцов1) SELECT имена_столбцов2 FROM вторая_таблица;

первая_таблица: имя первой таблицы.
вторая_таблица: имя второй таблицы.
имена_столбцов1: имена столбцов, разделенные запятой(,) для таблицы 1.
имена_столбцов2: имена столбцов, разделенные запятой(,) для таблицы 2.

Мы использовали инструкцию SELECT для копирования данных только из выбранных столбцов второй таблицы и инструкцию  INSERT INTO MySQL SELECT для их вставки в первую таблицу.

Копирование определенных строк из таблицы. Можно скопировать определенные строки из таблицы для последующей вставки в другую таблицу с помощью условия WHERE с оператором SELECT. В этом случае нужно использовать соответствующее условие в WHERE.

Синтаксис:

INSERT INTO таблица1 SELECT * FROM таблица2 WHERE условие; 

таблица1: имя первой таблицы.
таблица2: имя второй таблицы.
условие: условие для выбора строк.

Таблица 2: LateralStudent

ROLL_NO NAME ADDRESS PHONE Age
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Запросы:

Способ 1 (вставка всех строк и столбцов):

INSERT INTO Student SELECT * FROM LateralStudent;

Результат:

Этот запрос вставит все данные таблицы LateralStudent в таблицу Student. После применения INSERT INTO SQL SELECT таблица Student будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Способ 2 (вставка отдельных столбцов):

INSERT INTO Student(ROLL_NO,NAME,Age) SELECT ROLL_NO, NAME, Age FROM LateralStudent;

Результат:

Этот запрос вставит данные из столбцов ROLL_NO, NAME и Age таблицы LateralStudent в таблицу Student. Для остальных столбцов таблицы Student будет задано значение null. После применения SQL INSERT SELECT таблица будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK Null null 18
8 NIRAJ Null null 19
9 SOMESH Null null 20

Выбор определенных строк для вставки:

INSERT INTO Student SELECT * FROM LateralStudent WHERE Age = 18;

Результат:

Этот запрос выберет только первую строку из таблицы LateralStudent для вставки в таблицу Student. После применения INSERT SELECT таблица будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18

Пожалуйста, оставляйте ваши мнения по текущей теме статьи. За комментарии, дизлайки, подписки, лайки, отклики огромное вам спасибо!

Пожалуйста, оставляйте ваши комментарии по текущей теме материала. Мы крайне благодарны вам за ваши комментарии, отклики, подписки, дизлайки, лайки!

Пожалуйста, оставьте ваши мнения по текущей теме материала. За комментарии, подписки, дизлайки, лайки, отклики низкий вам поклон!

Вадим Дворниковавтор-переводчик статьи «SQL INSERT INTO Statement»

PREPARE, EXECUTE, и DEALLOCATE PREPARE Операторы

Синтаксис SQL для готовых операторов основан на трех SQL-операторах:

  • готовит оператор к выполнению (см. Раздел
    13.5.1,» Синтаксис»).

  • выполняет готовый оператор (см. Раздел
    13.5.2,» Синтаксис»).

  • опубликовывает готовое заявление (см. Раздел
    13.5.3,» Синтаксис»).

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

Первый пример показывает, как создать готовый оператор при использовании строкового литерала, чтобы предоставить
текст оператора:

mysql> mysql> mysql> mysql> +------------+| hypotenuse |+------------+|          5 |+------------+mysql> 

Второй пример подобен, но предоставляет текст оператора как пользовательская переменная:

mysql> mysql> mysql> mysql> mysql> +------------+| hypotenuse |+------------+|         10 |+------------+mysql> 

Вот дополнительный пример, который демонстрирует, как выбрать таблицу, на которой можно выполнить запрос во
времени выполнения, храня имя таблицы как пользовательская переменная:

mysql> mysql> mysql> mysql> mysql> mysql> mysql> +----+| a  |+----+|  4 ||  8 || 11 || 32 || 80 |+----+mysql> 

Готовый оператор является определенным для сеанса, в котором он создавался. Если Вы завершаете сеанс, не
освобождая ранее готовый оператор, сервер освобождает это автоматически.

Готовый оператор является также глобальной переменной к сеансу. Если Вы создаете готовый оператор в пределах
сохраненной подпрограммы, это не освобождается, когда сохраненная подпрограмма заканчивается.

Чтобы принять меры против слишком многих готовых операторов, создаваемых одновременно, установите
системная переменная. Чтобы предотвратить использование готовых операторов, установите значение в 0.

Демо база данных

В этом руководстве мы будем использовать образец базы данных RUNOOB.

Вот данные, выбранные из таблицы «Сайты»:

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
 | 2 | Taobao | https://www.taobao.com/ | 13 | CN |
 | 3 | Учебное пособие для новичков | http://www.runoob.com/ | 4689 | CN |
 | 4 | Weibo | http://weibo.com/ | 20 | CN |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Ниже приведены данные приложения «приложения»:

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
 | 2 | Приложение Weibo | http://weibo.com/ | CN |
 | 3 | Приложение Taobao | https://www.taobao.com/ | CN |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)

ORDER BY

При выводе данных их можно не только фильтровать с помощью WHERE, но и сортировать по возрастанию или убыванию с помощью оператора ORDER BY.

sqlite> SELECT url, title, theme 
   ...> FROM pages
   ...> ORDER BY url ASC;
amount-information|Amount of Information|1
binary|Binary System|2
information|What is Information|1
logic-low|Lows of Logic Algebra|3
octal|Octal System|2

sqlite> SELECT url, title FROM pages
   ...> WHERE theme == 1
   ...> ORDER BY url DESC;
information|What is Information
amount-information|Amount of Information

ASC – сортировка от меньшего значения к большему. DESC – сортировка от большего значения к меньшему.

COMMIT and ROLLBACK

All Data Manipulation Language (DML) changes are done as part of a transaction. They are not permanent until they are confirmed using the statement. Once committed, the only way you can revert a change is to issue a new DML statement to alter the data. Several statements can be grouped together to form a single transaction.

Data Definition Language (DDL) commands perform an implicit commit, which also confirms all outstanding DML changes in the current session.

If you decide you don’t want to keep some uncommitted changes, you can throw them away using using the statement. Many of the examples in this article will issue statements after the test, to revert the data to its original state.

Some tools and programming languages default to auto-commit, so they automatically issue a statement after every DML statement they process. Don’t let this fool you into thinking this is default behaviour. It is not.

SQL Server stored procedure insert into temp table

In this section, you will learn how you can insert a row into a SQL server temp table using a stored procedure. We will discuss this with an example.

Firstly, let us create a temp table in sql server.

  • Now create a stored procedure that will insert a record in the temp table.
  • The procedure has two input parameters.

Let us execute the stored procedure with some input values:

Row Inserted in the temp table

You can see in the output that the row is inserted.

Important Note: Execute the stored procedure in the same query window in which you have created the temp table if you are using SQL Server Management Studio. Executing the stored procedure in another window will throw an error and the row will not be inserted into the table.

Insert Data Only in Specified Columns

It is also possible to only insert data in specific columns.

The following SQL statement will insert a new record, but only insert data in the «CustomerName»,
«City», and «Country» columns (CustomerID will
be updated automatically):

Example

INSERT INTO Customers (CustomerName, City, Country)
VALUES (‘Cardinal’, ‘Stavanger’, ‘Norway’);

The selection from the «Customers» table will now look like this:

CustomerID CustomerName ContactName Address City PostalCode Country
89 White Clover Markets Karl Jablonski 305 — 14th Ave. S. Suite 3B Seattle 98128 USA
90 Wilman Kala Matti Karttunen Keskuskatu 45 Helsinki 21240 Finland
91 Wolski Zbyszek ul. Filtrowa 68 Walla 01-012 Poland
92 Cardinal null null  Stavanger null Norway

❮ Previous
Next ❯

Insert Multiple Rows in One Statement

Our examples so far have shown the ability to insert a single value with a statement. What if you wanted to insert multiple values?

You could write separate statements:

This can get a bit “wordy” and repetitive. Also, if you’re inserting hundreds or thousands of rows, it can take a bit of time as each statement is processed individually.

Fortunately, there is a better way.

You can insert multiple records with a single SQL INSERT statement.

The way to do this is different with each database vendor. Let’s take a look.

Oracle: Insert Multiple Records

What if you had a few records you wanted to insert?

You could run several different INSERT statements. But, there’s another way to do it.

You can insert several records at once, with a single statement, using the INSERT ALL keyword.

Why would you want to do this? Generally, running a single statement is better for performance than many statements. It can also be easier to write, especially if there are many records to insert.

So, how do you do this?

Let’s see an example.

This will insert three records in a single statement. You can, of course, have many more than three records.

You need to have the SELECT * FROM dual at the end, because the INSERT ALL expects a SELECT statement., and using the DUAL dummy table will allow you to insert many values manually in one statement.

SQL Server Insert Multiple Rows

Inserting multiple records in a single statement is easier in SQL Server as it requires fewer words. It’s the same as MySQL and PostgreSQL.

You can separate each row with a comma outside the brackets.

For example:

There are a few things to notice here.

The column names are only specified once, after the table name, which is the same as if you were inserting a single record.

Several rows are mentioned after the VALUES keyword, and they are separated by a comma.

Running this statement will cause all three rows to be inserted into the table at once.

Also, you can only INSERT up to 1,000 rows in a single statement. Any more than that and you can either run a second statement or change your approach to loading data.

MySQL Insert Multiple Rows

The way to insert multiple rows is the same as SQL Server and PostgreSQL, where you specify the column names once and separate each row in the VALUES clause with a comma.

For example:

There are a few things to notice here.

The column names are only specified once, after the table name, which is the same as if you were inserting a single record.

Several rows are mentioned after the VALUES keyword, and they are separated by a comma.

Running this statement will cause all three rows to be inserted into the table at once.

What’s the maximum number of rows you can insert in one statement in MySQL? There is no defined limit like SQL Server. However, if the size of the statement is bigger than the property of “max_allowed_packet”, then you’ll get an error.

PostgreSQL Insert Multiple Rows

The way to insert multiple rows is the same as SQL Server and MySQL, where you specify the column names once and separate each row in the VALUES clause with a comma.

For example:

There are a few things to notice here.

The column names are only specified once, after the table name, which is the same as if you were inserting a single record.

Several rows are mentioned after the VALUES keyword, and they are separated by a comma.

Running this statement will cause all three rows to be inserted into the table at once.

Команда SELECT

  Команда SELECT — наиболее часто употребляемая команда из всех восьми. Она используется для выборки данных из базы данных.

Её синтаксис:

SELECT Поля FROM Таблицы ;

Необязательные аргументы заключены в [].

  Предикат — одно из четырёх слов ALL, DISTINCT, DISTINCTROW, TOP. Если предикат не указан, то устанавливается ALL. Предикат ALL позволяет отобрать все записи. При использовании предиката DISTINCT, записи, которые содержат повторяющиеся значения в выбранных в запросе полях, исключаются. Предикат DISTINCTROW исключает из выборки записи, если повторяется вся запись, а не одно из полей. Предикат TOP позволяет отобрать определённое количество записей.

  Поля — имена одного или нескольких полей, выборка которых производится. Для выборки всех полей вместо имен полей можно поставить звёздочку .

Таблицы — имена одной или нескольких таблиц, из которых производится выборка.

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

Минимальный синтаксис запроса на выборку выглядит так:

SELECT поле FROM Таблица;

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

Предложение WHERE позволяет установить критерии отбора записей. Например:

SELECT * FROM Orders WHERE ID=5;

В этом запросе происходит выборка всех полей таблицы Orders. Выбираются только те записи, значения поля ID которых равно 5.

Вместо знака равно можно также использовать знаки больше и меньше .

SELECT * FROM Buyers WHERE Age>30;

В этом запросе выбираются все записи из таблицы Buyers, в которых значение поля Age больше 30.

  Также возможно использование предложения WHERE вместе с операторами BETWEEN, IN и LIKE.

Оператор BETWEEN позволяет отобрать записи, значение определённого поля которых находится в заданном диапазоне. Например:

SELECT * FROM Orders WHERE ID BETWEEN 10 AND 20;

  Здесь выбираются все записи, значение поля ID которых находится между 10 и 20.

Оператор IN позволяет отобрать записи, значение поля которых соответствует одному из значений, указанных в скобках.

SELECT * FROM Orders WHERE ID IN ( 10, 12, 30, 45 );

Таблица
Символ Значение
Подчёркивание Замещает один любой символ
Процент Замещает последовательность любого числа символов

Например:

SELECT * FROM Orders WHERE Name LIKE ‘Ва_я%’

  Здесь выбираются все записи, поле Name которых соответствует маске Ва_я%

Обраатите внимание, что значения текстового типа в SQL-запросах указываются в кавычках

  Предложение GROUP BY позволяет объединять поля в запросе. Предложение ORDER BY позволяет упорядочивать выбираемые записи. При использовании совместно с предложением ключевого слова ASC можно определить возрастающий порядок, а используя DESC, определяется убывающий порядок.

SELECT * FROM Orders ORDER BY Name ASC;

  Также можно упорядочивать записи по нескольким полям. Сначала записи упорядочиваются по первому полю, если в нём есть записи, имеющие одинаковые значения, то они упорядочиваются по следующему указанному в предложении ORDER BY полю и т.д. Имена полей пишутся через запятую .

WHERE

Условие WHERE используется не только с оператором SELECT, также с UPDATE и DELETE. С помощью WHERE определяются строки, которые будут выбраны, обновлены или удалены. По сути это фильтр.

После ключевого слова WHERE записывается логическое выражение, которое может быть как простым (содержащим операторы = или ==, >, <, >=, <=, !=, BETWEEN), так и сложным (AND, OR, NOT, IN, NOT IN). Примеры:

sqlite> SELECT * FROM pages 
   ...> WHERE _id == 3;

sqlite> SELECT * FROM pages WHERE
   ...> theme == 2 AND num == 100;

sqlite> SELECT * FROM pages WHERE
   ...> theme <= 2;

Примеры с BETWEEN и IN:

sqlite> SELECT _id, title
   ...> FROM pages WHERE
   ...> _id BETWEEN 2 AND 8;
3|Amount of Information
4|Binary System
5|Octal System
6|Lows of Logic Algebra

sqlite> SELECT _id, title
   ...> FROM pages WHERE
   ...> _id IN (1,2);
1|What is Information

sqlite> SELECT _id, title
   ...> FROM pages WHERE
   ...> _id NOT IN (1,3);
4|Binary System
5|Octal System
6|Lows of Logic Algebra

MySQL INSERT examples

Let’s create a new table named for practicing the statement.

1) MySQL – simple example

The following statement inserts a new row into the table:

MySQL returns the following message:

It means that one row has been inserted into the table successfully.

This query returns data from the table:

Here is the output:

In this example, we specified the values for only and columns. For other columns, MySQL uses the default values.

The column is an  column. It means that MySQL generates a sequential integer whenever a row is inserted into the table.

The , , and columns use as the default value, therefore, MySQL uses to insert into these columns if you don’t specify their values in the statement.

2) MySQL – Inserting rows using default value example

If you want to insert a default value into a column, you have two ways:

  • Ignore both the column name and value in the statement.
  • Specify the column name in the clause and use the keyword in the clause.

The following example demonstrates the second way:

In this example, we specified the column and the   keyword.

Because the default value for the column is 3 as declared in the table definition:

MySQL uses the number 3 to insert into the column.

The following statement returns the contents of the table after the insert:

3) MySQL – Inserting dates into the table example

To insert a literal date value into a column, you use the following format:

In this format:

  • represents a four-digit year e.g., 2018.
  • represents a two-digit month e.g., 01, 02, and 12.
  • represents a two-digit day e.g., 01, 02, 30.

The following statement inserts a new row to the table with the start and due date values:

The following picture shows the contents of the table after the insert:

It is possible to use expressions in the clause. For example, the following statement adds a new task using the current date for start date and due date columns:

In this example, we used the function as the values for the and columns. Note that the function is a date function that returns the current system date.

Here are the contents of the table after insert:

4) MySQL – Inserting multiple rows example

The following statement inserts three rows into the table:

In this example, each row data is specified as a list of values in the clause.

MySQL returns the following message:

It means that the three rows have been inserted successfully with no duplicates or warnings.

The table has the following data:

In this tutorial, you have learned how to use the MySQL statement to add one or more rows into a table.

Добавление целых строк

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

  • — добавить одну полную строку
  • — добавить часть строки
  • — добавить результаты запроса.

Итак, чтобы добавить новую строку в таблицу, нам необходимо указать название таблицы, перечислить названия колонок и указать значение для каждой колонки с помощью конструкции INSERT INTO название_таблицы (поле1, поле2 … ) VALUES (значение1, значение2 …). Рассмотрим на примере.

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) VALUES (‘6’, ‘1st Street’, ‘Los Angeles’, ‘Harry Monroe’, ‘USA’)

Также можно изменять порядок указания названий колонок, однако одновременно нужно менять и порядок значений в параметре VALUES.

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

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

INSERT INTO Sellers (ID, City, Seller_name) VALUES (‘6’, ‘Los Angeles’, ‘Harry Monroe’)

В данном примере мы не указали значение для двух столбцов Address и Country . Вы можете исключать некоторые столбцы из оператора INSERT INTO, если это позволяет производить определение таблицы. В этом случае должно соблюдаться одно из условий: этот столбец определен как допускающий значение NULL (отсутствие какого-либо значения) или в определение таблицы указанное значение по умолчанию. Это означает, что, если не указано никакое значение, будет использовано значение по умолчанию. Если вы пропускаете столбец таблицы, которая не допускает появления в своих строках значений NULL и не имеет значения, определенного для использования по умолчанию, СУБД выдаст сообщение об ошибке, и это строка не будет добавлена.

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

В предыдущей примерах мы вставляли данные в таблицы, прописывая их вручную в запросе. Однако оператор INSERT INTO позволяет автоматизировать этот процесс, если мы хотим вставлять данные из другой таблицы. Для этого в SQL существует такая кострукция как INSERT INTO … SELECT … . Данная конструкция позволяет одновременно выбирать данные из одной таблицы, и вставить их в другую. Предположим мы имеем еще одну таблицу Sellers_EU с перечнем продавцов нашего товара в Европе и нам нужно их добавить в общую таблицу Sellers. Структура этих таблиц одинакова (то же количество колонок и те же их названия), однако другие данные. Для этого мы можем прописать следующий запрос:

INSERT INTO Sellers (ID, Address, City, Seller_name, Country) SELECT ID, Address, City, Seller_name, Country FROM Sellers_EU

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

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

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

Часто при работе с базами данных возникает необходимость в создании копий любых таблиц, с целью резервирования или модификации. Чтобы сделать полную копию таблицы в SQL предусмотрен отдельный оператор SELECT INTO. Например, нам нужно создать копию таблицы Sellers, нужно будет прописать запрос следующим образом:

SELECT * INTO Sellers_new FROM Sellers

В отличие от предыдущей конструкции INSERT INTO … SELECT … , когда данные добавляются в существующую таблицу, конструкция SELECT … INTO … FROM … копирует данные в новую таблицу. Также можно сказать, что первая конструкция импортирует данные, а вторая — экспортирует. При использовании конструкции SELECT … INTO … FROM … следует учитывать следующее:

  • — можно использовать любые предложения в операторе SELECT, такие как GROUP BY и HAVING
  • — для добавления данных из нескольких таблиц можно использовать объединение
  • — данные возможно добавить только одну таблицу, независимо от того, из скольких таблиц они были взяты.

Example — Using INSERT Statement to Insert Multiple Records

By placing a SELECT statement within the INSERT statement, you can perform multiples inserts quickly. Let’s look at an example of how to do this.

In this example, we have a table called employees with the following data:

employee_number last_name first_name salary dept_id
1001 Smith John 62000 500
1002 Anderson Jane 57500 500
1003 Everest Brad 71000 501
1004 Horvath Jack 42000 501

And a table called customers with the following data:

customer_id last_name first_name favorite_website
4000 Jackson Joe techonthenet.com
5000 Smith Jane digminecraft.com
6000 Ferguson Samantha bigactivities.com
7000 Reynolds Allen checkyourmath.com
8000 Anderson Paige NULL
9000 Johnson Derek techonthenet.com

Now, let’s insert some of the employee information into the customers table:

Try It

INSERT INTO customers
(customer_id, last_name, first_name)
SELECT employee_number AS customer_id, last_name, first_name
FROM employees
WHERE employee_number 
  
TIP: With this type of INSERT, some databases require you to alias the column names in the SELECT to match the column names of the table you are inserting into. As you can see in the example above, we have aliased the first column in the SELECT statement to customer_id.
  

There will be 2 records inserted. Select the data from the customers table again:

SELECT * FROM customers;

These are the results that you should see:

customer_id last_name first_name favorite_website
4000 Jackson Joe techonthenet.com
5000 Smith Jane digminecraft.com
6000 Ferguson Samantha bigactivities.com
7000 Reynolds Allen checkyourmath.com
8000 Anderson Paige NULL
9000 Johnson Derek techonthenet.com
1001 Smith John NULL
1002 Anderson Jane NULL

In this example, the last 2 records in the customers table have been inserted using data from the employees table.

With this type of insert, you may wish to check for the number of rows being inserted. You can determine the number of rows that will be inserted by running a COUNT(*) on the SELECT statement before performing the insert. For example:

Try It

SELECT COUNT(*)
FROM employees
WHERE employee_number 
  

This will return number of records that will be inserted when you execute the INSERT statement.

Исходные данные

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

Примечание! Все примеры будут выполнены в Microsoft SQL Server 2016 Express.

   
   CREATE TABLE TestTable(
          IDENTITY(1,1) NOT NULL,
         (100) NOT NULL,
          NOT NULL
   )

Наша тестовая таблица, будет содержать перечень товаров с ценой.

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

   
   CREATE PROCEDURE TestProcedure
   AS
   BEGIN
        SELECT ProductName, Price
        FROM TestTable
   END

Для примера она у нас будет возвращать данные из только что созданной таблицы TestTable.

Примечание!

Как Вы понимаете, чтение данного материала подразумевает наличные определенных знаний по языку T-SQL, поэтому если Вам что-то непонятно, рекомендую ознакомиться со следующими материалами:

  • Справочник по Transact-SQL;
  • Основы программирования на T-SQL;
  • SQL код – самоучитель по SQL для начинающих программистов;
  • Видеокурсы по T-SQL.

Access insert into пример

При помощи этой инструкции, лежащей в основе запросов на добавление (Append Query), можно добавить одну или множество записей в указанную таблицу. Эта инструкция по функциональности является разновидностью описанной выше инструкции SELECT . INTO. Отличие состоит в том, что информация добавляется в уже существующую таблицу, затирая хранящиеся там данные, но не нарушая при этом ее структуру. Синтаксис для добавления группы записей в таблицу следующий:

INSERT INTO назначение ])] SELECT поле_1 FROM выражение

Вариант синтаксиса для добавления одной записи:

INSERT INTO назначение ])] VALUES (значение_1)

Описание используемых параметров: назначение. Имя таблицы, в которую добавляются записи. поле_1, поле_2, . . Имена полей, в которые добавляются данные (если они следуют за аргументом назначение) или из которых выбираются данные (если они следуют за аргументом источник). ВнешняяБазаДанных. В конструкции IN можно указать полный путь и имя файла внешней базы данных. Вы можете выбрать информацию из таблиц внешней базы данных (предложение FROM) и вставить итоговую выборку в таблицу внешней базы данных (предложение INSERT INTO). если вы хотите вставить одну запись, можно воспользоваться синтаксисом, содержащим предложение VALUES. Вслед за этим предложением (в круглых скобках) следуют значения, присваиваемые полям, перечисленным после параметра назначение. Значения присваиваются в порядке следования полей. То есть первому полю соответствует первое значение, и т.д. Количество и порядок следования значений в предложении VALUES должны в точности соответствовать количеству и порядку следования полей, перечисленных после параметра назначение.

Примеры

Приведенный в этом примере SQL-оператор иллюстрирует синтаксис для добавления в таблицу одной записи. Этот синтаксис используется практически во всех СУБД, поддерживающих SQL. В данном примере в таблицу Доставка добавляется одна запись, состоящая из двух полей: Название и Телефон. Значения для этих полей перечислены через запятую в конструкции VALUES. Таким образом, после выполнения запроса в таблицу Доставка будет добавлена новая запись, содержащая в поле Название значение Аэрофлот, а в поле Телефон — значение (095) 211-9988. Кроме того, поле КодДоставки автоматически получит очередное значение счетчика, поскольку имеет тип Счетчик (AutoNumber).

Если ввести текст рассматриваемого оператора в запрос, открытый в режиме SQL, a затем переключиться в режим конструктора (Design View), то Microsoft Access автоматически распознает тип запроса и изменит строку оператора в соответствии с принятым для стандартных запросов на добавление (Append Query) стилем:

INSERT INTO Доставка ( Название, Телефон ) SELECT «Аэрофлот » AS Выражение1, «(095) 211-9988» AS Выражение2;

SQL-оператор, приведенный в этом примере, отбирает информацию из внешнего файла базы данных и добавляет полученную выборку в таблицу открытой (текущей) базы данных. В приведенном примере выбирается информация из таблиц Заказы и Заказано, которые расположены во внешнем файле базы данных DataBase1.mdb (в папке C:Moи Документы). Эти таблицы связаны между собой по полям КодЗаказа (связь задана в конструкции WHERE). Итоговая выборка после группировки, вычисления значений поля Стоимость заказа и сортировки по убыванию по этому же полю, добавляется в таблицу Временная. Таблица Временная должна существовать в целевой базе данных к моменту выполнения запроса. Кроме того, к моменту выполнения запроса в таблице Временная должны существовать поля с именами КодКлиента и Стоимость заказа (именно эти имена полей перечислены в конструкции INTO после имени целевой таблицы). Естественно, эти поля должны соответствовать по типу добавляемым данным. Если хотя бы одно из перечисленных условий не выполняется, записи в таблицу добавлены не будут.

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

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: