Truncate table и создание копий

Базовый курс мы закончили на том, что рассмотрели команду удаления данных. Чтобы удалить все данные из таблицы с помощью DELETE можно выполнить команду:

DELETE FROM имя_таблицы

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

truncate table имя_таблицы

Этой команде не нужно указывать WHERE, потому что она как раз предназначена для того, чтобы удалять все и у нее два основных отличия:

1. Он работает быстрее

2. Номера для автоматически увеличиваемых полей начнутся с начала. При удалении с помощью DELETE номера продолжаться.

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

create table teamcopy 
select * from team;

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

Можно выбирать не все данные, а только определенные колонки:

create table teamcopy 
select name from team;

В результате этого запроса будет создана таблица teamcopy только с одной колонкой name.

В MS SQL для создания копии используется немного другой вариант:

select * 
into teamcopy
from team;

Вот эту таблицу не жалко, поэтому в ней можно убить все данные. Можете выполнить:

truncate table teamcopy

Чтобы убедиться, что этот запрос уничтожает все данные.

Предыдущая глава

Практика - ищем победителей

Следующая глава

Еще много практики

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне