Использование оператора 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 »
SQL INSERT INTO SELECT, заявление
❮ Предыдущая Следующая Глава ❯
С помощью SQL можно скопировать информацию из одной таблицы в другую.
INSERT INTO SELECT, заявление копирует данные из одной таблицы и вставляет его в существующую таблицу.
Заявление SQL INSERT INTO SELECT,
INSERT INTO SELECT, оператор выбирает данные из одной таблицы и вставляет его в существующую таблицу. Любые существующие строки в целевой таблице не изменяются.
SQL INSERT INTO SELECT, Синтаксис
Мы можем скопировать все столбцы из одной таблицы в другую, существующую таблицу:
INSERT INTO table2
SELECT * FROM table1;
Или же мы можем скопировать только те столбцы, которые мы хотим в другую, существующую таблицу:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
Демо-версия базы данных
В этом уроке мы будем использовать хорошо известную базу данных Борей.
Ниже приводится подборка из «Customers» таблицы:
Пользовательский ИД | Имя Клиента | Контактное лицо | Адрес | город | Почтовый индекс | Страна |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
И выбор из «Suppliers» таблицы:
SupplierID | Наименование поставщика | Контактное лицо | Адрес | город | Почтовый индекс | Страна | Телефон |
---|---|---|---|---|---|---|---|
1 | Экзотические Liquid | Шарлотта Купер | 49 Гилберта St. | Londona | EC1 4SD | Великобритания | |
2 | Новый Орлеан Cajun наслаждений | Shelley Берк | PO Box 78934 | Жители Нового Орлеана | 70117 | США | (100) 555-4822 |
3 | Homestead Бабушка Келли | Regina Мерфи | 707 Oxford Rd. | Ann Arbor | 48104 | США | (313) 555-5735 |
SQL INSERT INTO SELECT, Примеры
Копирование только несколько столбцов из «Suppliers» Into «Customers» :
пример
INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers;
Попробуй сам «
Копирование только немецких поставщиков в «Customers» :
пример
INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers
WHERE Country=’Germany’;
Попробуй сам «
❮ Предыдущая Следующая Глава ❯
Как использовать инструкцию SQL SELECT
Поиск
При работе с базами данных одной из общих функций является создание запроса, посредством которого программист или администратор базы данных должен выбрать некоторые данные из таблицы в базе данных. В SQL (язык структурных запросов) это достигается с помощью SQL Оператор SELECT . И это тема сегодняшнего урока по программированию баз данных.
Прочитано: Лучшие сертификаты для администраторов баз данных
Оператор SQL SELECT
В SQL программисты могут извлекать данные из таблицы с помощью оператора SQL SELECT . Синтаксис оператора SELECT можно увидеть в следующем примере кода:
/* Синтаксис оператора SQL SELECT */ ВЫБЕРИТЕ столбецA ИЗ таблица_пример;
В приведенном выше примере SQL мы идентифицируем, что хотим
Как вернуть несколько столбцов в таблице с помощью SQL SELECT
Но что, если мы хотим вернуть более одного столбца в нашей таблице? Предположим, у нас есть два столбца в table_example : столбец A хранит имен и столбец B хранит фамилий . Если бы мы хотели получить оба этих столбца, мы могли бы просто изменить наш предыдущий пример кода, чтобы отразить следующее:
/* Синтаксис оператора SQL SELECT для получения нескольких столбцов*/ ВЫБЕРИТЕ столбецA, столбецB ИЗ таблица_пример;
Когда мы запускаем приведенный выше запрос, оба столбца A и столбца B возвращаются из таблица_пример таблица.
Как вернуть каждый столбец в таблице с помощью SQL SELECT
Если у вас есть таблица в базе данных с несколькими столбцами и вы хотите получить все данные из всех столбцов в определенной таблице, вы можете сделать поэтому с помощью оператора подстановки , представленного звездочкой * . Вот как можно вернуть каждый столбец в таблице с помощью оператора SQL SELECT :
/* Синтаксис оператора SQL SELECT для извлечения каждого столбца в таблице */ SELECT * FROM table_example;
Параметры и аргументы SQL SELECT
Оператор SQL SELECT имеет несколько необязательных параметров и аргументов, которые разработчики баз данных могут использовать для улучшения своих запросов. К ним относятся:
- выражений : В операторе SELECT выражений — это столбцы или вычисления, которые вы хотите извлечь из таблицы или базы данных.
- таблицы : Это таблицы, из которых вы хотите получить информацию. Минимум один стол должен быть выбран после ИЗ пункта.
- WHERE : Условие WHERE используется для определения условий, которые должны быть выполнены для того, чтобы записи были выбраны и возвращены. Если этот параметр оставить пустым или пустым, будут выбраны все записи.
- ORDER BY : Этот аргумент также является необязательным и используется для определения порядка возврата записей. Столбец, по которому вы хотите упорядочить, должен следовать за аргументом ORDER BY . Затем , вы должны указать порядок, в котором вы хотите отсортировать результаты, используя (также необязательно) ASC или DESC параметры. Обратите внимание, что вы также можете сортировать по нескольким столбцам; вы просто разделяете столбцы, которые хотите отсортировать, запятой ( , ).
Вот пример кода, показывающий, как использовать SQL WHERE в инструкции SELECT :
SELECT columnA ИЗ table_example ГДЕ столбец A = «Ронни»
В приведенном выше примере кода SQL мы сообщаем базе данных о необходимости поиска столбца A в таблице с именем 9.0013 table_example и вернуть результаты только для ячеек, содержащих текст «Ронни». Поскольку мы не указали порядок, в котором возвращаются результаты, по умолчанию они будут возвращены в порядке возрастания.
Обратите внимание, что запрос будет возвращать результаты только со словом «Ронни». Например, если в столбце A есть ячейка, содержащая слово «RonnieBonnie», и ячейка, содержащая «Ronnie», будет возвращен только результат «Ronnie».
Прочитано: Лучшие онлайн-курсы для изучения SQL
Предложение SQL LIKE
Если бы мы хотели включить любой результат , содержащий строку «Ронни», то мы использовали бы оператор SQL LIKE вместе с одним из его два подстановочных знака:
- — используется для соответствия одному символу
- % используется для соответствия любому количеству символов до или после строки
Обратите внимание на следующий пример кода, который показывает, как использовать 9Предложение 0013 LIKE , предложение WHERE , FROM и оператор SQL SELECT для возврата любых результатов из столбца A , которые содержат любой текст с «Ронни», независимо от того, какой текст идет до или после слова. «Ронни»:
ВЫБЕРИТЕ столбецA ИЗ table_example ГДЕ столбец A = «% Ронни%»
Обратите внимание на подстановочный знак % в начале и в конце нашей строки «Ронни». Символ % перед словом означает, что может отображаться любое количество символов перед словом «Ронни» и подстановочный знак % после текста означает, что могут появляться любые символы после текста «Ронни». Если мы удалим первые % , то не будет разрешено символов перед текстом «Ронни», но любой текст может появиться после текста «Ронни».
Подстановочный знак минус – работает так же, только он указывает, что может появиться любой одиночный символ . Например, в этом сценарии:
ВЫБЕРИТЕ столбецA ИЗ table_example ГДЕ columnA = «-Ronnie-»
будут действительны следующие результаты:
«Ronnie» «Бронни» «Бронни» «Ронни»
Эти результаты, однако, недействительны, поскольку перед и/или за текстом «Ронни» существует более одного символа:
«Скрони» «Скрони» «Самый Ронни»
Наконец, чтобы отсортировать наши результаты в порядке возрастания или убывания, мы просто используем ASC или DESC параметры предложения ORDER BY :
SELECT columnA ИЗ table_example ГДЕ столбец A = «% Ронни%» ЗАКАЗАТЬ ПО столбцуA ASC;
Если бы мы выбирали данные из нескольких столбцов и сортировали по нескольким столбцам, мы могли бы использовать SQL-запрос, аналогичный следующему:
SELECT columnA, columnB ИЗ table_example ГДЕ столбец A = «% Ронни%» ORDER BY столбец A ASC, столбец B DESC;
В этом примере будет возвращен любой результат, содержащий «Ронни» в столбце A , вместе с любыми соответствующими данными из столбца B . Затем эти данные будут отсортированы по значениям в столбце A в порядке возрастания сначала , затем столбце B в порядке убывания.
Читать: Программное обеспечение для управления проектами для разработчиков баз данных
SQL — SELECT Запросы
Запросы SELECT извлекают данные строк/столбцов из одной или нескольких существующих таблиц.
Синтаксис:
ВЫБЕРИТЕ столбец1, столбец2,... столбецN ОТ имя_таблицы
Для демонстрационных целей во всех приведенных здесь примерах будет использоваться следующая таблица Employee
.
Эмпирид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650. 127.1834′ | 33000 |
2 | ‘Джеймс’ | «Бонд» | |||
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123.456.4568’ | 17000 |
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123.456.4569’ | 15000 |
Выбрать все столбцы
Оператор *
представляет все столбцы таблицы. Таким образом, вам не нужно указывать имя каждого столбца в запросе SELECT, чтобы получить данные из всех столбцов.
ВЫБЕРИТЕ * ОТ Сотрудника;
Приведенный выше запрос возвращает данные всех строк и столбцов из таблицы Employee
, как показано ниже.
Эмпирид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата |
---|---|---|---|---|---|
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650.127.1834’ | 33000 |
2 | ‘Джеймс’ | «Бонд» | |||
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123.456.4568’ | 17000 |
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123. 456.4569′ | 15000 |
Выбор данных определенных столбцов
Укажите имена столбцов в операторе SELECT, чтобы получить данные только из этих столбцов, как показано ниже.
ВЫБЕРИТЕ EmpId, Имя, Фамилию ОТ Сотрудника;
Эмпирид | Имя | Фамилия |
---|---|---|
1 | ‘Джон’ | ‘Король’ |
2 | ‘Джеймс’ | «Бонд» |
3 | ‘Нина’ | ‘Кочхар’ |
4 | ‘Лекс’ | ‘Де Хаан’ |
Псевдоним для столбцов и таблицы
Вы можете указать псевдоним для одного или нескольких столбцов в запросе SELECT. Псевдоним — это временное имя таблицы или столбца в запросе.
Преимущество псевдонима:
- Псевдоним делает столбец более читаемым в результирующем наборе.
- Псевдоним используется для присвоения небольшим, сокращенным и осмысленным именам таблицам в запросе, чтобы можно было легко ссылаться на таблицы при объединении нескольких таблиц.
- Псевдоним помогает нам определить, какой столбец принадлежит какой таблице в случае получения данных из нескольких таблиц.
Следующий запрос указывает «Идентификатор сотрудника»
для EmpId
и Имя
в качестве псевдонима для столбца Имя
в запросе SELECT.
Укажите псевдоним в одинарных или двойных кавычках, если вы хотите, чтобы в нем был пробел или другая строка.
SELECT EmpId "Идентификатор сотрудника", Имя КАК Имя ОТ Сотрудника;
Идентификатор сотрудника | Имя |
---|---|
1 | ‘Джон’ |
2 | ‘Джеймс’ |
3 | ‘Нина’ |
4 | ‘Лекс’ |
Операторы в операторе SELECT
В операторе select можно указать операторы для выполнения некоторых действий со значением столбца. Например, оператор +
в MS SQL Server и || Оператор
в базах данных PostgreSQL, MySQL и Oracle объединяет строковые значения или добавляет числовые значения.
Следующее объединяет два столбца varchar
в результате.
ВЫБЕРИТЕ EmpId, Имя + ' ' + Фамилия КАК "Полное имя" ОТ Сотрудника;
Эмпирид | Полное имя |
---|---|
1 | ‘Джон Кинг’ |
2 | ‘Джеймс Бонд’ |
3 | ‘Нина Кочхар’ |
4 | ‘Лекс Де Хаан’ |
ИЗ Статьи
Оператор SELECT должен содержать условие FROM. Предложение FROM используется для перечисления имен таблиц, из которых мы хотим выбрать данные, и указать соединения между этими таблицами.