Синтаксис insert sql: INSERT | SQL | SQL-tutorial.ru
Содержание
Команда INSERT — вставка записей в базу данных
Команда INSERT вставляет записи в базу данных.
Можно вставить или одну запись, или сразу несколько.
См. также команды
SELECT,
UPDATE,
DELETE,
которые отвечают за получение, редактирование и удаление записей.
См. также команду
SELECT INTO,
которая копирует данные из одной таблицы в другую.
Синтаксис
Первый синтаксис:
INSERT INTO имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3...
Второй синтаксис:
INSERT INTO имя_таблицы (поле1, поле2...) VALUES (значение1, значение2...)
Одновременно много записей:
INSERT INTO имя_таблицы (поле1, поле2...) VALUES (значение1, значение2...), (значение1, значение2...)..."
Примеры
Все примеры будут по этой таблице workers, если не сказано иное:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
Пример
Добавим с помощью первого синтаксиса
нового работника Васю с возрастом 23 и зарплатой 500:
INSERT INTO workers SET name='Вася', age=23, salary=500
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
Пример
Добавим с помощью второго синтаксиса
нового работника Васю с возрастом 23 и зарплатой 500:
INSERT INTO workers (name, age, salary) VALUES ('Вася', 23, 500)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
Пример
Добавим одновременно
нового работника Васю с возрастом 23 и зарплатой 500
и работника Колю с возрастом 30 и зарплатой 1000:
INSERT INTO workers (name, age, salary) VALUES ('Вася', 23, 500), ('Коля', 30, 1000)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 500 |
4 | Коля | 30 | 1000 |
Пример
Давайте добавим
нового работника Васю с возрастом 23, но не указав ему зарплату.
Вместо нее вставится значение по умолчанию:
INSERT INTO workers (name, age) VALUES ('Вася', 23)
Таблица workers станет выглядеть так:
id айди | name имя | age возраст | salary зарплата |
---|---|---|---|
1 | Дима | 23 | 400 |
2 | Петя | 25 | 500 |
3 | Вася | 23 | 0 |
← Предыдущая страница
Следующая страница →
Использование оператора SELECT в команде INSERT
Использование оператора SELECT в команде
INSERT
Оператор
SELECT в команде INSERT позволяет взять данные из одной или нескольких
таблиц и
вставить их в другую таблицу. Если вы вставляете значения только для
части
столбцов, определить значения для других столбцов можно будет позднее с
помощью
оператора UPDATE.
Если
вы вставляете строки из одной таблицы в другую, эти таблицы должны
иметь
совместимую структуру, т. е. соответствующие столбцы должны иметь
одинаковый
тип, или же система должна уметь автоматически выполнять нужное
преобразование.
Если
столбцы в обеих таблицах совместимы по типам и определены в одинаковом
порядке
в соответствующих операторах CREATE TABLE, перечислять их в команде
INSERT
необязательно.
Пример
Предположим,
что в таблице sale_arhiiv содержатся строки с информацией о продажах в
том же
формате, что и в таблице tbl_sale.
Для
добавления в таблицу sale_arhiiv строк из таблицы tbl_sale, содержащих
данные о проджах за 2004 год
в можно
воспользоваться следующей командой:
SQL:
INSERT INTO sale_arhiiv
SELECT sale_id, client_id, prod_id, amount, saledate
FROM tbl_sale
WHERE YEAR(saledate)=2004
или
INSERT INTO sale_arhiiv
SELECT *
FROM tbl_sale
WHERE YEAR(saledate)=2004
Если
столбцы в двух таблицах (таблица, в которую вы вставляете данные, и
таблица, из
которой вы берете данные) определены в разном порядке в соответствующих
операторах CREATE TABLE, для установления соответствия между ними можно
воспользоваться предложениями INSERT или SELECT.
Пример
Например,
предположим, что в операторе CREATE TABLE для таблицы tbl_sale
столбцы определены в следующем порядке — sale_id, client_id,
prod_id, amount, saledate, a
для
таблицы sale_arviiv — sale_id, prod_id, client_id saledate и
amount. Тогда установить соответствие
между ними можно с помощью оператора INSERT. Для этого столбцы
таблицы sale_arhiiv нужно
перечислить в предложении INSERT:
SQL:
INSERT INTO sale_arhiiv
(sale_id, client_id, prod_id, amount, saledate)
SELECT *
FROM tbl_sale
WHERE YEAR(saledate)=2004
Такой же результат можно
получить, перечислив в нужном порядке столбцы таблицы tbl_sale в
предложении
SELECT:
SQL:
INSERT INTO sale_arhiiv
SELECT sale_id,prod_id,
client_id,
saledate
amount
FROM tbl_sale
WHERE YEAR(saledate)=2004
Одним
из преимуществ использования оператора SELECT в команде INSERT является
возможность включения в него различных выражений (expression)
— строк символов,
математических формул и функций, позволяющих манипулировать
вставляемыми
данными.
Кроме того, с помощью оператора SELECT можно добавлять данные как во
все сразу, так и в отдельные столбцы, по аналогии с предложением VALUE.
Для этого
нужно просто задать имена столбцов, в которые вы хотите добавить данные
в предложении INSERT
Пример
Ниже приводится пример предложения SELECT, в котором над
столбцом выполняются математические действия.
Предположим, что описываемая нами компания купила продукцию у другой
фармацевттической компании. Причем, по счастливой случайности, для
описания продукции эта компания
использовала таблицу tbl_prod с той же структурой, что и таблица
tbl_product. Однако при покупке стоимость продукции была увеличена на
10%. Кроме того, данные будут добавлены во все поля таблицы
tbl_product, кроме поля tbl_group. Оператор, увеличивающий значения
стоимости товаров вставляющий строки из таблицы tbl_prod в таблицу
tbl_product, имеет следующий вид:
SQL:
INSERT INTO tbl_product(prod_id, pr_name,price)
SELECT prod_id, name, price * 1. 1 FROM tbl_prod
« Previous | Next »
Лучший способ заполнения таблиц базы данных [обновлено]
Таблицы являются основой любой системы баз данных и могут хранить более 30 типов данных. Таблицы обеспечивают систематический способ хранения данных для организации вашей базы данных. Команда вставки SQL является неотъемлемой частью SQL, и если пользователи не выполняют ее должным образом, невозможно сохранить данные в таблицах базы данных.
Что такое вставка SQL?
Команда «INSERT INTO» является частью языка манипулирования данными (DML), подъязыка SQL, который позволяет изменять и извлекать информацию из объектов базы данных. Эта команда позволяет sus вставлять строки в таблицы.
С помощью этой команды вы можете вставлять значения во все столбцы или выбранные столбцы таблицы. Эту вставку можно выполнить в существующей таблице или в таблице, которую вы создаете с помощью команды «CREATE TABLE».
Давайте разберемся с синтаксисом команды вставки SQL.
Синтаксис команды SQL Insert INTO
Существует два синтаксиса для команды «INSERT INTO». Первый синтаксис выглядит следующим образом:
- Оператор «INSERT INTO» сообщает системе базы данных, что вы хотите вставить строки в таблицу, указанную в параметре table_name
- Укажите столбцы таблицы, в которые вы хотите вставить значения, заключенные во внутренние скобки. Используйте запятые для разделения столбцов
- Оператор «VALUES» сообщает системе базы данных, что вставляемые значения указываются
- Затем соответствующие значения каждого столбца указываются в том же порядке, что и столбцы в квадратных скобках, с использованием запятых для разделения этих значений
Если вы хотите вставить значения во все столбцы таблицы, нет необходимости указывать столбцы в команде. Для этой цели можно использовать следующий синтаксис:
- Здесь важно убедиться, что все указанные значения находятся в правильном порядке, соответствующем их соответствующим столбцам в таблице
Вставляемые значения должны быть типами данных, которые соответствуют тому, что было определено в соответствующих столбцах во время создания таблицы.
Давайте попробуем заполнить всю таблицу, используя эти концепции.
Вставка значений во все столбцы таблицы
- Первое, что мы сделаем, это создадим собственную таблицу с помощью команды «CREATE TABLE»
Мы создадим таблицу с именем «Сотрудник», используя следующий запрос:
Как видите, «EmployeeID» — это первичный ключ, а «Имя» имеет определенное для него ОГРАНИЧЕНИЕ NULL, поэтому ни один из этих атрибутов нельзя оставлять пустым во время вставки. Кроме того, «EmployeeID» не может иметь одинаковое значение для нескольких строк.
«Имя» и «Город» будут содержать типы данных строковых символов, поэтому при вставке значения будут заключены в одинарные кавычки. В противном случае значения не будут приняты.
- Давайте вставим значения в нашу таблицу, используя следующий запрос:
Если какое-либо из правил не соблюдается, система отобразит сообщение об ошибке, поясняющее, в чем проблема. Например, если мы попытаемся вставить другую запись со столбцом «EmployeeID» как одну, это приведет к следующему:
- Давайте вставим больше допустимых значений в нашу таблицу «Сотрудник»
- Чтобы увидеть нашу таблицу, мы будем использовать следующий запрос:
ВЫБЕРИТЕ * ОТ Сотрудника; |
Это приведет к следующему:
Иногда у нас нет информации обо всех атрибутах, и мы хотим вставить значения только для нескольких столбцов. Давайте посмотрим, как этого можно достичь.
Вставка значений в определенные столбцы
В нашей таблице «Сотрудник» EmployeeID является первичным ключом, а «Имя» имеет ОГРАНИЧЕНИЕ NULL, поэтому нам нужно ввести явные значения для каждой строки столбца. Столбцы «Город» и «Зарплата» могут содержать значения NULL.
- Например, если у вас есть информация только об идентификаторе и имени определенного сотрудника, вы можете использовать следующий запрос для вставки этих значений:
Когда мы не вставляем точное значение для атрибута NULL CONSTRAINT, такого как «Имя», мы видим следующую ошибку:
Как видно из этого сообщения об ошибке, мы должны вводить явные значения для каждой записи в этих столбцах с ограничениями.
- Добавим в нашу таблицу дополнительные строки, используя следующий запрос:
- Чтобы просмотреть таблицу, воспользуемся командой SELECT.
Если вы не введете явное значение ни для одной из записей в столбце без ограничений, они будут представлены как значения NULL, поскольку значение по умолчанию для любого столбца без ограничений — «NULL».
Иногда нам требуется скопировать значения одной таблицы в другую таблицу. Давайте посмотрим, как это можно сделать.
Заполнение таблицы с помощью другой таблицы
Вы можете заполнить таблицу, используя другую таблицу с помощью команды «INSERT INTO SELECT». Синтаксис этой команды следующий:
ВСТАВИТЬ В целевую_таблицу (столбец_1, столбец_2,… столбец_n) ВЫБРАТЬ столбец_1, столбец_2,… столбец_n ИЗ исходной_таблицы ГДЕ [условие]; |
- Параметр destination_table указывает таблицу, в которую мы хотим вставить значения, а параметр source_table указывает таблицу, из которой вставляются значения
- Здесь нам нужно убедиться, что мы копируем только типы данных из столбцов, которые поступают из одной и той же исходной и целевой таблиц
- Столбцы с первичным ключом или ограничениями NOT NULL в исходной таблице также должны присутствовать в целевой таблице и быть скопированы
- Эта команда содержит необязательное условие WHERE
Из исходной таблицы можно указать условие, по которому следует выбирать строки в параметре «условие» этого предложения. Если его нет в запросе, все строки столбцов вставляются в целевую таблицу.
Например, если мы хотим вставить значения из нашей таблицы «Сотрудник» в таблицу «Зарплата», которая имеет только три столбца (ID сотрудника, имя и зарплата), мы будем использовать следующий запрос:
Чтобы просмотреть нашу таблицу «Зарплата», мы будем использовать команду SELECT следующим образом:
Это показывает, что все значения из указанных столбцов таблицы Employee были вставлены в таблицу Salary.
Вы также можете вставлять записи из всех столбцов таблицы в другую таблицу. Синтаксис этой команды следующий:
ВСТАВИТЬ В таблицу_назначения ВЫБРАТЬ * ИЗ исходной_таблицы ГДЕ [условие]; |
Например, если мы дублируем нашу таблицу Employee и называем ее «EmployeeCopy», и эта копия включает те же столбцы из оригинала, мы можем использовать следующий запрос, чтобы вставить значения всех столбцов из исходной таблицы в таблицу. новая таблица:.
ВСТАВИТЬ В EmployeeCopy ВЫБЕРИТЕ * ОТ Сотрудника; |
Чтобы просмотреть нашу новую таблицу, мы будем использовать команду SELECT.
Теперь, когда мы знаем разные способы вставки строк в таблицу, давайте посмотрим, как эти строки удалять.
Удаление строк из таблицы
Иногда нам нужно удалить некоторые (или все) строки из таблицы. Это можно сделать с помощью команды «УДАЛИТЬ», которая является частью языка манипулирования данными. Синтаксис этой команды следующий:
УДАЛИТЬ ИЗ table_name ГДЕ [условие]; |
Эта команда использует предложение WHERE. Вы можете указать условие, согласно которому строки должны быть удалены в параметре «условие» этого предложения. Если этого нет в запросе, все строки таблицы будут удалены.
Например, если мы хотим удалить все записи о сотрудниках с зарплатой меньше или равной 25000 из нашей таблицы «Сотрудники», мы будем использовать следующий запрос:
В результате получится следующая таблица:
Как видно, две строки были удалены.
Если мы хотим удалить все строки из таблицы, мы будем использовать следующий запрос:
УДАЛИТЬ ОТ Сотрудника; |
Все строки из этой таблицы удаляются, но таблицу можно использовать для вставки новых строк.
Получите опыт работы с новейшими инструментами и методами бизнес-аналитики с помощью магистерской программы бизнес-аналитика. Зарегистрируйтесь сейчас!
Следующие шаги
В заключение, очень важно вставлять правильные типы значений в столбцы, так как это данные, с которыми вы собираетесь работать. Любые ошибки при вставке потенциально могут привести к некоторым ошибкам.
Теперь, когда вы знаете, как заполнять таблицы, следующим шагом в вашем путешествии по SQL будет запрос данных для извлечения полезной информации. Если вам понравилась эта статья и вы хотите пройти сертификацию, ознакомьтесь с магистерской программой бизнес-аналитика Simplilearn, в которой очень подробно рассматривается SQL.
У вас есть к нам вопросы? Оставьте комментарий, и наши специалисты ответят на него за вас.
sql — Вставить в … значения ( SELECT … FROM … )
Оба ответа, которые я вижу, отлично работают в Informix, и в основном являются стандартным SQL. То есть запись:
INSERT INTO target_table[()] SELECT ... FROM ...;
отлично работает с Informix и, как я ожидал, со всеми СУБД. (Когда-то 5 или более лет назад это было то, что MySQL не всегда поддерживал; теперь у него есть достойная поддержка такого стандартного синтаксиса SQL, и, насколько мне известно, он будет нормально работать с этой нотацией.) Список столбцов является необязательным, но указывает целевые столбцы в последовательности, поэтому первый столбец результата SELECT попадет в первый столбец в списке и т. д. При отсутствии списка столбцов первый столбец результата SELECT входит в список. первый столбец целевой таблицы.
Между системами может различаться нотация, используемая для идентификации таблиц в разных базах данных — стандарт ничего не говорит об операциях между базами данных (не говоря уже о межСУБД). В Informix вы можете использовать следующую нотацию для идентификации таблицы:
[dbase[@server]:][owner.]table
То есть вы можете указать базу данных, дополнительно указав сервер, на котором размещена эта база данных, если она не находится на текущем сервере, за которым следует необязательный владелец, точка и, наконец, фактическое имя таблицы. Стандарт SQL использует термин схема для того, что Informix называет владельцем. Таким образом, в Informix любая из следующих нотаций может идентифицировать таблицу:
таблица "владелец".таблица база данных: таблица база данных: владелец. таблица dbase@сервер: таблица dbase@сервер:владелец.таблица
Владелец вообще не нуждается в цитировании; однако, если вы используете кавычки, вам нужно правильно написать имя владельца — оно становится чувствительным к регистру. То есть:
кто-то.таблица "кто-то".таблица SOMEONE.table
все идентифицируют одну и ту же таблицу. С Informix есть небольшая сложность с базами данных MODE ANSI, где имена владельцев обычно преобразуются в верхний регистр (informix является исключением).