Инструменты пользователя

Инструменты сайта


delete

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
delete [2021/01/31 11:27]
dja
delete [2021/01/31 11:34] (текущий)
dja [Оператор TRUNCATE TABLE]
Строка 1: Строка 1:
-Оператор **DELETE** удаляет строки из временных или постоянных базовых таблиц, представлений или курсоров, причем в двух последних случаях действие оператора распространяется на те базовые таблицы, из которых извлекались данные в эти представления или курсоры. Оператор удаления имеет простой синтаксис:+===== Оператор DELETE ===== 
 +удаляет строки из временных или постоянных базовых таблиц, представлений или курсоров, причем в двух последних случаях действие оператора распространяется на те базовые таблицы, из которых извлекались данные в эти представления или курсоры. Оператор удаления имеет простой синтаксис:
 <code> <code>
 1.    DELETE FROM <имя таблицы> 1.    DELETE FROM <имя таблицы>
Строка 55: Строка 56:
 1.    DELETE FROM Product  1.    DELETE FROM Product 
 2.    WHERE type = 'pc' AND  2.    WHERE type = 'pc' AND 
-3.     model NOT IN (SELECT model  +3.    model NOT IN (SELECT model  
-4.     FROM PC +4.    FROM PC 
-5.     );+5.    ); 
 +</code> 
 +Заметим, что предикат type = 'pc' необходим здесь, чтобы не были удалены также модели принтеров и портативных компьютеров. 
 + 
 +Эту же задачу можно решить с помощью дополнительного предложения **FROM** следующим образом: 
 +<code> 
 +1.    DELETE FROM Product  
 +2.    FROM Product pr LEFT JOIN  
 +3.    PC ON pr.model = PC.model  
 +4.    WHERE type = 'pc' AND  
 +5.    PC.model IS NULL; 
 +</code> 
 +Здесь применяется внешнее соединение, в результате чего столбец PC.model для моделей ПК, отсутствующих в таблице PC, будет содержать **NULL**-значение, что и используется для идентификации подлежащих удалению строк. 
 +   
 +===== Оператор TRUNCATE TABLE ===== 
 + 
 +Как отмечалось выше, при выполнении этой команды значение счетчика (IDENTITY) сбрасывается в начальное значение. Давайте проверим это утверждение в MS SQL Server. Для начала создадим таблицу с автоинкрементируемым столбцом, и добавим в нее три строки. 
 +<code> 
 +1.    CREATE TABLE Truncate_test (id INT IDENTITY(5,5) PRIMARY KEY, val INT); 
 +2.    GO 
 +3.    INSERT INTO Truncate_test(val)  
 +4.    VALUES (1),(2),(3); 
 +5.    SELECT * FROM Truncate_test; 
 +6.    GO
 </code> </code>
delete.1612081673.txt.gz · Последнее изменение: 2021/01/31 11:27 — dja