16.10.2023

SQL запрос INSERT INTO — наполнить базу данных информацией. SQL INSERT INTO SELECT, заявление Примеры sql запроса INSERT INTO в базе данных MySQL


Мы научились создавать базу данных и таблицы в эти базы данных, но таблицы получились “пустые”. И вот в этой статье я хочу Вас научить, как вносить данные в эти таблицы и поможет нам в этом оператор SQL под названием “INSERT”. Приступим:

INSERT - оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую.

Оператор SQL INSERT с указанием столбцов имеет следующий синтаксис:

INSERT INTO ([, ... ]) values (,...);

Так же, значения могут быть записаны и без указания столбцов:

INSERT INTO values (,...);

Запись значений может производиться и с помощью оператора SQL SELECT (оператор SELECT мы будем изучать немного позже):

INSERT INTO SELECT Имя столбца,... FROM название таблицы

Используя оператор SQL SELECT можно вставить более одной записи. В случае, если если для каких-либо полей таблицы не указаны значения, они будут заменены значением по умолчанию null.

Пример работы оператора

Имеется таблица “Planets”. С помощью оператора SQL INSERT нужно добавить запись, присвоив полям таблицы следующие значения - ID: 4; PlanetName: Venus; Radius: 6051; SunSeason: 243; OpeningYear: 1610; HavingRings: No; Opener: Galileo Galilei;

INSERT INTO Planets (ID, PlanetName, Radius, SunSeason, OpeningYear, HavingRings, Opener) VALUES (4, "Venus", 6051, 243, 160, "No", "Galileo Galilei");

После выполнения команды таблица Planets будет выглядеть так (как видите добавилась новая строка и это очень просто):



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

INSERT INTO Planets VALUES (4, "Venus", 6051, 243, 160, "No", "Galileo Galilei");

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

Вот и подошёл мой небольшой урок по оператору INSERT в SQL. Надеюсь Вам всё понятно, если будут вопросы пишите и я обязательно отвечу.

Эта инструкция добавляет одну или несколько записей в таблицу (выполняет запрос на добавление).

Синтаксис

Запрос на добавление нескольких записей:

INSERT INTO конечный_объект [(поле1 [, поле2 [, ...]])]
SELECT [источник .]поле1 [, поле2 [, ...]
FROM выражение_таблицы

Запрос на добавление одной записи:

INSERT INTO конечный_объект [(поле1 [, поле2 [, ...]])]
VALUES (поле1 [, поле2 [, ...])

Инструкция INSERT INTO состоит из следующих элементов:

Часть

Описание

конечный_объект

Имя таблицы или запроса, куда добавляются записи.

поле1 , поле2

После аргумента конечный_объект - имена полей, в которые добавляются данные; после аргумента источник - имена полей, из которых извлекаются данные.

внешняя_база_данных

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

источник

Имя таблицы или запроса, откуда копируются записи.

выражение_таблицы

Одно или несколько имен таблиц, из которых требуется получить записи. Этот аргумент может представлять собой имя отдельной таблицы, результирующее выражение, составленное с использованием операций INNER JOIN, LEFT JOIN или RIGHT JOIN, или сохраненный запрос.

значение1 , значение2

Значения, которые будут добавлены в определенные поля новой записи. Каждое значение вставляется в поле, соответствующее его положению в списке: значение1 добавляется в поле1 новой записи, значение2 - в поле2 и т. д. Необходимо разделять значения запятой и заключать текстовые поля в кавычки (" ").

Замечания

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

Инструкцией INSERT INTO можно также воспользоваться для добавления набора записей из другой таблицы или запроса с помощью предложения SELECT... FROM, как показано выше (см. синтаксис запроса на добавление нескольких записей). В этом случае предложение SELECT задает поля для добавления в указанный конечный_объект .

Источник или конечный_объект может быть таблицей или запросом. Если задан запрос, ядро СУБД Microsoft Access добавляет записи ко всем таблицам, которые он возвращает.

Использование инструкции INSERT INTO не является обязательным. Если она указана, она должна предшествовать инструкции SELECT.

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

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

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

Чтобы создать таблицу, используйте инструкцию SELECT... INTO для получения запроса на создание таблицы.

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

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

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

What is INSERT INTO?

The main goal of database systems is to store data in the tables. The data is usually supplied by application programs that run on top of the database. Towards that end, SQL has the INSERT command that is used to store data into a table. The INSERT command creates a new row in the table to store data.

Basic syntax

Let"s look at the basic syntax of the SQL INSERT command shown below.

INSERT INTO `table_name`(column_1,column_2,...) VALUES (value_1,value_2,...);

  • INSERT INTO `table_name` is the command that tells MySQL server to add new row into a table named `table_name`.
  • (column_1,column_2,...) specifies the columns to be updated in the new row
  • VALUES (value_1,value_2,...) specifies the values to be added into the new row

When supplying the data values to be inserted into the new table, the following should be considered while dealing with different data types.

  • String data types - all the string values should be enclosed in single quotes.
  • Numeric data types - all numeric values should be supplied directly without enclosing them in single or double quotes.
  • Date data types - enclose date values in single quotes in the format "YYYY-MM-DD".

Example:

Suppose that we have the following list of new library members that need to be added into the database.

Full names Date of Birth gender Physical address Postal address Contact number Email Address
Leonard Hofstadter Male Woodcrest 0845738767
Sheldon Cooper Male Woodcrest 0976736763
Rajesh Koothrappali Male Fairview 0938867763
Leslie Winkle 14/02/1984 Male 0987636553
Howard Wolowitz 24/08/1981 Male South Park P.O. Box 4563 0987786553

Lets" INSERT data one by one. We will start with Leonard Hofstadter. We will treat the contact number as a numeric data type and not enclose the number in single quotes.

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Leonard Hofstadter","Male","Woodcrest",0845738767);

Executing the above script drops the 0 from Leonard"s contact number. This is because the value will be treated as a numeric value and the zero (0) at the beginning is dropped since it"s not significant.

In order to avoid such problems, the value must be enclosed in single quotes as shown below -

INSERT INTO `members` (`full_names`,`gender`,`physical_address`,`contact_number`) VALUES ("Sheldon Cooper","Male","Woodcrest", "0976736763");

In the above case , zero(0) will not be dropped

Changing the order of the columns has no effect on the INSERT query as long as the correct values have been mapped to the correct columns.

The query shown below demonstrates the above point.

INSERT INTO `members` (`contact_number`,`gender`,`full_names`,`physical_address`)VALUES ("0938867763","Male","Rajesh Koothrappali","Woodcrest");

The above queries skipped the date of birth column, by default MySQL will insert NULL values in columns that are skipped in the INSERT query.

Let"s now insert the record for Leslie which has the date of birth supplied. The date value should be enclosed in single quotes using the format "YYYY-MM-DD".

INSERT INTO `members` (`full_names`,`date_of_birth`,`gender`,`physical_address`,`contact_number`) VALUES ("Leslie Winkle","1984-02-14","Male","Woodcrest", "0987636553");

All of the above queries specified the columns and mapped them to values in the insert statement.If we are supplying values for ALL the columns in the table, then we can omit the columns from the insert query.

INSERT INTO `members` VALUES (9,"Howard Wolowitz","Male","1981-08-24","SouthPark","P.O. Box 4563", "0987786553", "lwolowitzemail.me");

Let"s now use the SELECT statement to view all the rows in the members table.SELECT * FROM `members`;

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter Male NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Male 14-02-1984 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Male 24-08-1981 SouthPark P.O. Box 4563 987786553 This email address is being protected from spambots. You need JavaScript enabled to view it.

Notice the contact number for Leonard Hofstadter has dropped the zero (0) from the contact number. The other contact numbers have not dropped the zero (0) at the beginning.

Inserting into a Table from another Table

The INSERT command can also be used to insert data into a table from another table. The basic syntax is as shown below.

INSERT INTO table_1 SELECT * FROM table_2;

Let"s now look at a practical example, we will create a dummy table for movie categories for demonstration purposes. We will call the new categories table categories_archive. The script shown below creates the table.

CREATE TABLE `categories_archive` (`category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`))

Execute the above script to create the table.

Let"s now insert all the rows from the categories table into the categories archive table. The script shown below helps us to achieve that.

INSERT INTO `categories_archive` SELECT * FROM `categories`;

Executing the above script inserts all the rows from the categories table into the categories archive table. Note the table structures will have to be the same for the script to work. A more robust script is one that maps the column names in the insert table to the ones in the table containing the data .

The query shown below demonstrates its usage.

INSERT INTO `categories_archive`(category_id,category_name,remarks) SELECT category_id,category_name,remarks FROM `categories`;

Executing the SELECT query

SELECT * FROM `categories_archive`

gives the following results shown below.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL
10 Cartoons NULL

Summary

  • The INSERT command is used to add new data into a table
  • The date and string values should be enclosed in single quotes.
  • The numeric values do not need to be enclosed in quotes.
  • The INSERT command can also be used to insert data from one table into another.

Инструкция SQL INSERT INTO и INSERT SELECT используются для вставки новых строк в таблицу. Существует два способа использования инструкций:

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

Синтаксис :

INSERT INTO имя_таблицы VALUES (значение1, значение2, значение3,...); имя_таблицы: имя таблицы. значение1, значение2,.. : значения первого столбца, второго столбца,... для новой записи

  1. Имена столбцов и значения : При втором методе указываются имена столбцов и значения строк для вставки:

Синтаксис :

INSERT INTO имя_таблицы (столбец1, столбец2, столбец3,..) VALUES (значение1, значение2, значение3,...); имя_таблицы: имя таблицы. столбец1: имя первого столбцы, второго столбца... значение1, значение2,.. : значения первого столбца, второго столбца,... для новой записи

Запросы :

Способ 1 (вставка только значений ):

INSERT INTO Student VALUES ("5","HARSH","WEST BENGAL","8759770477","19");

Результат :

После использования INSERT INTO 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
5 HARSH WEST BENGAL 8759770477 19

Способ 2 (вставка значений только в указанные столбцы ):

INSERT INTO Student (ROLL_NO, NAME, Age) VALUES ("5","PRATIK","19");

Результат :

Таблица 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
5 PRATIK null null 19

Обратите внимание, что для столбцов, значения для которых не указаны, задается null .

Использование 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 для копирования данных только из выбранных столбцов второй таблицы и инструкцию MySQL INSERT INTO SELECT для их вставки в первую таблицу.

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

Синтаксис :

Таблица 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 . После применения SQL INSERT INTO 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
  • Выбор определенных строк для вставки :

Результат :

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

Кроме инструкции SELECT, которая была рассмотрена ранее, язык манипуляции данными DML (Data Manipulation Language) содержит три другие инструкции: INSERT, UPDATE и DELETE. Подобно инструкции SELECT эти три инструкции оперируют либо таблицами, либо представлениями. В этой статье рассматривается инструкция INSERT, а две другие инструкции рассматриваются в следующей статье.

Инструкция INSERT вставляет строки (или части строк) в таблицу. Существует две разные формы этой инструкции:

INSERT tab_name [(col_list)] DEFAULT VALUES | VALUES ({ DEFAULT | NULL | expression } [ ,...n]) INSERT INTO tab_name | view_name [(col_list)] {select_statement | execute_statement} Соглашения по синтаксису

Первая форма инструкции позволяет вставить в таблицу одну строку (или часть ее). А вторая форма инструкции INSERT позволяет вставить в таблицу результирующий набор инструкции SELECT или хранимой процедуры, выполняемой посредством инструкции EXECUTE. Хранимая процедура должна возвращать данные для вставки в таблицу. Применяемая с инструкцией INSERT инструкция SELECT может выбирать значения из другой или той же самой таблицы, в которую вставляются данные, при условии совместимости типов данных соответствующих столбцов.

Для обеих форм тип данных каждого вставляемого значения должен быть совместимым с типом данных соответствующего столбца таблицы. Все строковые и временные данные должны быть заключены в кавычки; численные значения заключать в кавычки не требуется.

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

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

Параметр DEFAULT VALUES вставляет значения по умолчанию для всех столбцов. В столбцы с типом данных TIMESTAMP или свойством IDENTITY по умолчанию вставляются значения, автоматически создаваемые системой. Для столбцов других типов данных вставляется соответствующее ненулевое значение по умолчанию, если таково имеется, или NULL в противном случае. Если для столбца значения NULL не разрешены и для него не определено значение по умолчанию, выполнение инструкции INSERT завершается ошибкой и выводится соответствующее сообщение.

В примере ниже показана вставка строк в таблицу Employee базы данных SampleDb, демонстрируя использование инструкции INSERT для вставки небольшого объема данных в базу данных:

USE SampleDb; INSERT INTO Employee VALUES (34990, "Андрей", "Батонов", "d1"); INSERT INTO Employee VALUES (38640, "Алексей", "Васин", "d3");

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

USE SampleDb; INSERT INTO Employee VALUES (34991, "Андрей", "Батонов", NULL);

Чтобы вставить значения в некоторые (но не во все) столбцы таблицы, обычно необходимо явно указать эти столбцы. Не указанные столбцы должны или разрешать значения NULL, или для них должно быть определено значение по умолчанию.

USE SampleDb; INSERT INTO Employee(Id, FirstName, LastName) VALUES (34992, "Андрей", "Батонов");

Предыдущие два примера равнозначны. В таблице Employee единственным столбцом, разрешающим значения NULL, является столбец DepartmentNumber, а для всех прочих столбцов это значение было запрещено предложением NOT NULL в инструкции CREATE TABLE.

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

USE SampleDb; INSERT INTO Employee(DepartamentNumber, LastName, Id, FirstName) VALUES ("d1", "Батонов", 34993, "Андрей");

Вставка нескольких строк

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

Создаваемая в примере выше новая таблица MoscowDepartment имеет те же столбцы, что и существующая таблица Department, за исключением отсутствующего столбца Location. Подзапрос в инструкции INSERT выбирает в таблице Department все строки, для которых значение столбца Location равно "Москва", которые затем вставляются в созданную в начале запроса новую таблицу.

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

USE SampleDb; CREATE TABLE ManagerTeam (EmpId INT NOT NULL, ProjectNumber CHAR (4) NOT NULL, EnterDate DATE); INSERT INTO ManagerTeam (EmpId, ProjectNumber, EnterDate) SELECT EmpId, ProjectNumber, EnterDate FROM Works_on WHERE Job = "Менеджер";

Перед вставкой строк с помощью инструкции INSERT таблицы MoscowDepartment и ManagerTeam (в примерах выше) были пустыми. Если же таблица уже существовала и содержала строки с данными, то к ней были бы добавлены новые строки.


© 2024
maccase.ru - Android. Бренды. Железо. Новости