Таблицы являются одними из главных компонентов каждого системы реляционной базы данных, и SQL Server не исключение. Таблицы хранят данные, которые использует движок реляционной базы данных для запросов, отчетов и других операций. В этой статье я вас показал, как модифицировать данные из таблицы SQL Server с использованием T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE и TRUNCATE.
В моей предыдущей статье Essential SQL Server: Creating Databases and Tables, я показал, как можно создавать базовые базы данных SQL Server и таблицы. В этой статье мы посмотрим, как заполняются эти таблицы путем добавления, обновления и удаления строк.
I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:
CREATE TABLE dbo.myLogins ( id INT NOT NULL PRIMARY KEY, name VARCHAR (20), login_date DATETIME );
В этой статье мы посмотрим, как добавляются данные в таблицу с использованием запроса INSERT, изменение данных в таблице с использованием запроса UPDATE и удаление данных с использованием запроса DELETE. Данные в таблице могут быть удалены на несколько различных способов, поэтому мы также посмотрим на различие между использованием запроса DELETE и операции TRUNCATE.
Добавление строк с использованием T-SQL INSERT
Вы можете добавлять данные в таблицу SQL Server на различные способы:
- Вы можете использовать SQL Server Management Studio (SSMS) для добавления строк в таблицу.
- Вы можете использовать PowerShell
- Вы можете использовать Мастер импорта и экспорта SQL Server или Integration Services для импорта данных в таблицу
- Вы можете использовать утилиту командной строки bcp.
Тем не менее, наиболее распространенным способом добавления данных в таблицу SQL Server является использование оператора SQL INSERT. Оператор T-SQL INSERT добавляет одну или несколько строк в таблицу SQL Server.
В следующем примере показано, как добавить строку в пример таблицы, которую вы видели ранее:
INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')
Здесь оператор INSERT INTO определяет таблицу, которая будет содержать вставляемые строки. Затем в скобках вы видите список столбцов, которые будут использованы. Этот список использует все столбцы в таблице, но вы можете не делать этого.
Наконец, оператор VALUES предоставляет фактические значения, которые будут вставлены в таблицу. В качестве сокращения вы можете опустить список столбцов в операторе INSERT. Например, следующий оператор INSERT выполняет точно ту же функцию, что и предыдущий пример:
INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')

Если столбец не определен с использованием ключевых слов NOT NULL, вы также можете явно указать NULL в списке значений оператора INSERT. Кроме того, если вы не хотите указывать значение для столбца, вы можете исключить этот столбец из списков столбцов и значений, что приведет к тому, что он будет содержать значение NULL.
Вставка строк таблицы из результатов запроса
Помимо использования стандартного оператора T-SQL INSERT с разделом VALUES, вы также можете добавлять строки в таблицу в результате SQL-запроса. Запрос может быть простым или сложным, и результаты могут быть вставлены в целевую таблицу.
Например, чтобы скопировать строки из таблицы myLogins2 в таблицу myLogins, вы можете использовать запрос, подобный приведенному ниже:
INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.
Этот пример использует результаты подзапроса из таблицы myLogins2 для вставки строк в таблицу myLogins. Оператор INSERT вставляет данные в три столбца таблицы. Подзапрос использует оператор SELECT для выбора тех же трех столбцов из второй таблицы с именем myLogins2.
Однако в этом примере будут возвращены и добавлены в таблицу myLogins только те строки, у которых значение id больше 50. В этом простом примере имена столбцов одинаковы, но это не является обязательным требованием. Для того чтобы это работало, вам нужно одна или несколько строк в таблице myLogins2, у которых значение id больше 50, которые отсутствуют в таблице myLogins.
Обновление строк с использованием T-SQL UPDATE
Как и при добавлении строк в таблицу, существует несколько способов изменить строки в таблице. Интерактивный дизайнер запросов SSMS позволяет вам взаимодействовать с обновлением строк, но вы также можете использовать PowerShell или службы интеграции.
Однако наиболее распространенным способом изменения существующих строк в таблице базы данных является использование оператора SQL UPDATE. Оператор T-SQL UPDATE изменяет значения одной или нескольких строк в таблице SQL Server.
Обычно вы будете использовать оператор UPDATE вместе с оператором WHERE, чтобы указать, какие строки обновлять. Если вы не используете WHERE -фразу, то будут обновлены все строки в таблице. В приведенном ниже примере показано простое использование оператора UPDATE T-SQL для изменения значений в одной строке таблицы myLogins.
UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1
Как я уже упоминал, если бы вы не включили фразу WHERE, то столбец name каждой строки был бы установлен в новое значение. Аналогично, если фраза WHERE включает несколько строк, как это может быть при использовании операторов < или >, то будет обновлено несколько соответствующих строк.
Обновление строк таблицы на основе результатов запроса
Как и с оператором INSERT, вы также можете обновлять строки в одной таблице, используя значения из другой таблицы. В приведенном ниже примере вы можете увидеть, как использовать оператор обновления SQL из другой таблицы.
UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id
Здесь вы можете увидеть, что оператор UPDATE будет действовать на таблицу myLogins, и что столбец name будет обновлен с использованием значений из таблицы myLogins2, где значения в столбцах id двух таблиц совпадают.

Как можете предположить, у UPDATE запроса существует гораздо больше вариантов использования. Ваш запрос может обновлять несколько строк, может быть более сложным при использовании JOIN-ов, и вы можете использовать оператор TOP,CLAUSE ORDER BY, Общие выражения таблицы (CTEs) и другие средства для построения ваших запросов обновления.
Удаление строк с помощью T-SQL DELETE и TRUNCATE
Как можно предположить, вы можете удалять строки из таблицы с помощью интерактивного дизайнера запросов SSMS, PowerShell или Integration Services.然而,最常见的方法是使用 SQL DELETE запрос.
Оператор DELETE в T-SQL удаляет одну или несколько строк из таблицы SQL Server. Само собой разумеется, но следует использовать оператор DELETE внимательно, так как он навсегда удаляет данные из ваших таблиц. Если вы совершите ошибку, вам может потребоваться восстановить данные из снимка, журнала транзакций или резервной копии.
Следующий пример показывает, как удалить одну строку из таблицы myLogins:
DELETE FROM myLogins WHERE id = 1
Здесь вы можете видеть, что одна строка в таблице myLogins будет удалена, где значение столбца id равно 1. Вы также можете удалить несколько строк, изменив условие WHERE, как в следующем операторе, который удаляет все строки, где значение id больше 50.
DELETE FROM myLogins WHERE id > 50

Как и в случае с оператором UPDATE, если вы пропустите условие WHERE, будут удалены все строки в таблице. Например, следующий пример удаляет все строки в таблице myLogins:
DELETE FROM myLogins
Удаление строк из результатов запроса
Как операторы INSERT и UPDATE, оператор DELETE также способен действовать на основе результатов запроса. Следующий пример показывает, как удалить строки на основе запроса:
DELETE FROM myLogins WHERE login_date < '12-31-2022'
Здесь все строки в таблице myLogins, у которых дата в столбце login_date меньше 31.12.2022, будут удалены.
I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.
DELETE против TRUNCATE
Команда DELETE в T-SQL способна удалять одну или несколько строк из таблицы. Однако это не единственный способ удаления строк из таблицы. Вы можете удалить все строки в таблице SQL Server с помощью оператора T-SQL TRUNCATE TABLE.
Команда DELETE является полностью журналируемой операцией. С другой стороны, оператор TRUNCATE TABLE является частично журналируемой операцией. Это означает, что команда TRUNCATE будет выполняться немного быстрее, и в журнале транзакций будет добавлено меньше записей. Пример использования TRUNCATE можно увидеть в следующем листинге.
TRUNCATE TABLE myLogins
Это удалит все данные в таблице myLogins.
Резюме
В этом учебнике вы увидели, как добавлять, изменять и удалять строки в таблице SQL Server с использованием операторов T-SQL INSERT, UPDATE и DELETE. В каждом случае я объяснил, как работать с одними значениями строк и как работать с несколькими строками в результате подзапроса. Кроме того, вы увидели, как операторы DELETE и TRUNCATE различаются, хотя они оба в основном могут удалять строки из таблицы.
Связанная статья:
Source:
https://petri.com/sql-insert-update-delete-truncate/