SQL - Insert Into Select: Полное руководство для начинающих

Здравствуйте, начинающие энтузиасты SQL! Я рад приветствовать вас в увлекательном путешествии в мир оператора Insert Into Select. Как某人, кто teaches computer science на протяжении многих лет, я могу заверить вас, что овладение этим концептом изменит вашу игру в управлении базами данных. Итак, погружаемся в это!

SQL - Insert Into Select

Оператор Insert Into... Select: Новый лучший друг ваших данных

Что это такое?

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

Основная синтаксис

Давайте начнем с базовой структуры:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

Вот что делает каждая часть:

  • INSERT INTO table2: Это место, куда вы перемещаете свои данные.
  • (column1, column2, column3, ...): Это столбцы в вашей новой таблице.
  • SELECT: Это место, где вы выбираете, какие данные вы хотите переместить.
  • FROM table1: Это источник ваших данных.
  • WHERE condition: Это可选, но позволяет вам фильтровать, какие данные вы перемещаете.

Простой пример

Давайте представим, что у нас есть две таблицы: old_employees и new_employees. Мы хотим переместить всех сотрудников старше 30 лет в новую таблицу.

INSERT INTO new_employees (id, name, age, department)
SELECT id, name, age, department
FROM old_employees
WHERE age > 30;

Этот命令将 скопировать всех сотрудников старше 30 лет из таблицы old_employees в таблицу new_employees. Это как сказать всем сотрудникам старше 30 лет: "Эй, вы переезжаете в новый офис!"

SQL - Вставка конкретных записей: Выборочные данные

Иногда вы не хотите перемещать все. Вы можете выбрать только конкретные записи. Давайте рассмотрим, как это сделать!

Пример 1: Вставка на основе нескольких условий

Представьте, что мы хотим переместить только сотрудников отдела ИТ, которые старше 25 лет, в новую таблицу it_team.

INSERT INTO it_team (id, name, age)
SELECT id, name, age
FROM old_employees
WHERE department = 'IT' AND age > 25;

Это как сказать: "Если вы в ИТ и старше 25 лет, добро пожаловать в новую команду!"

Пример 2: Использование условия OR

Давайте представим, что мы хотим переместить сотрудников, которые работают в отделах ИТ или HR.

INSERT INTO new_department (id, name, department)
SELECT id, name, department
FROM old_employees
WHERE department = 'IT' OR department = 'HR';

Это как объявить: "Сотрудники ИТ и HR, все вы переезжаете на новый этаж!"

SQL - Вставка верхних N строк: Личное внимание

Иногда вы хотите переместить только определенное количество строк. SQL предоставляет вам возможность это сделать с помощьюTOP предложения (или LIMIT в некоторых базах данных).

Пример: Перемещение top 5 самых высокооплачиваемых сотрудников

INSERT INTO top_earners (id, name, salary)
SELECT TOP 5 id, name, salary
FROM employees
ORDER BY salary DESC;

Это как создать "Стену славы" для ваших top 5 зарабатывающих сотрудников!

Разные синтаксисы для разных баз данных

Разные системы баз данных могут использовать slightly different синтаксис для этого. Вот удобная таблица:

Система баз данных Синтаксис
SQL Server SELECT TOP 5 ...
MySQL SELECT ... LIMIT 5
Oracle SELECT ... WHERE ROWNUM <= 5
PostgreSQL SELECT ... LIMIT 5

Все вместе: Реальный мир сценарий

Давайте представим, что мы управляем библиотечной базой данных. У нас есть таблица books и мы хотим создать таблицу popular_books с книгами, которые были взяты более 100 раз за последний год.

CREATE TABLE popular_books (
id INT,
title VARCHAR(100),
author VARCHAR(100),
borrow_count INT
);

INSERT INTO popular_books (id, title, author, borrow_count)
SELECT id, title, author, borrow_count
FROM books
WHERE borrow_count > 100 AND last_borrowed >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
ORDER BY borrow_count DESC
LIMIT 10;

Этот скрипт делает несколько вещей:

  1. Создает новую таблицу popular_books.
  2. Выбирает книги из таблицы books, которые соответствуют нашим критериям.
  3. Сортирует их по количеству borrowing.
  4. Ограничивает выборку top 10.

Это как создать "Стеллаж с рекомендациями" в вашей библиотеке, но позволить данным решать, что пойдет на него!

Заключение: Ваша новая суперсила с данными

И вот вы это сделали,folks! Вы только что научились использовать оператор Insert Into Select профессионально. Помните, это не просто перемещение данных - это эффективное управление и анализ вашей информации.

Пока вы практикуете эти техники, вы обнаружите, что становитесь магом данных, способным резать и нарезать информацию так, как вы никогда не думали возможным. Это как учиться готовить - сначала вы следите за рецептами, но вскоре вы начнете создавать свои собственные блюда с данными!

Продолжайте экспериментировать, продолжайте учиться и, самое главное, получайте удовольствие от этого. SQL может показаться пугающим сначала, но поверьте мне, как только это "включится", вы будете wonder, как вы когда-либо manage данные без него.

Счастливо работайте с запросами, и пусть ваши данные всегда будут чистыми, а ваши join всегда гладкими!

Credits: Image by storyset