Удаление строк
Вы научитесь:
- удалять избранные строки из таблицы с использованием панели сетки Grid Pane;
- удалять строки с использованием оператора DELETE...WHERE;
- удалять строки с использованием оператора DELETE...FROM...WHERE;
- удалять строки с использованием каскадного удаления;
- удалять все строки с использованием оператора TRUNCATE TABLE.
Понятие об операторе DELETE
Базовая структура оператора DELETE несколько отличается от других операторов SQL, с которыми мы сталкивались ранее. Его синтаксис следующий:
DELETE таблица_или_представление [FROM источники_таблиц] [WHERE условие_отбора]
Список столбцов в операторе DELETE не указывается, поскольку при удалении строки удаляются также все столбцы. Необязательная фраза WHERE дает возможность указывать, какие строки следует удалить. Если фраза WHERE опущена, удаляются все строки в указанной таблице или представлении.
Фраза FROM, также необязательная, позволяет задавать дополнительные источники (таблицы или представления), которые будут использоваться в условии отбора в фразе WHERE. Подобный синтаксис оператора может ввести в заблуждение, поскольку строки не будут удаляться из таблиц и представлений, указанных в фразе FROM. Если в фразе FROM вы указываете более одной таблицы или представления, их имена следует отделять запятыми.
Совет. Оператор DELETE не поддерживает применение операции JOIN, поэтому вам следует связывать таблицы или представления в фразе WHERE оператора.
Если таблица участвует в отношении, важно не допустить, чтобы при удалении в главной таблице оставались "висячие" строки. Висячими строками называют строки в зависимой таблице (таблице внешнего ключа), которые не имеют соответствующих строк в главной таблице (таблице первичного ключа). Новинкой в SQL Server 2000 является возможность каскадных удалений в отношении. Если для отношения задается каскадное удаление, SQL Server автоматически удалит строки в зависимой таблице, чтобы не оставлять висячих строк. На рис. 19.1 показано отношение, установленное между таблицами Oils и PlantParts.
Рис. 19.1. Каскадные удаления выполняются на вкладке Relationships (Отношения) диалогового окна Properties (Свойства).
Использование оператора DELETE
Подобно другим операторам SQL, используемым в конструкторе запросов Query Designer, оператор DELETE может быть непосредственно введен в панели SQL Pane, либо создан с использованием графических панелей.
Удаление строк с использованием панели сетки Grid Pane и панели диаграмм Diagram Pane
Панель сетки и панель диаграмм конструктора запросов Query Designer предоставляют графические средства для создания операторов DELETE; однако, они не поддерживают применение фразы FROM, которая дает возможность использовать в операторе DELETE дополнительные таблицы и представления.
Удалите избранные строки из таблицы
- Перейдите к папке Tables базы данных Aromatherapy. SQL Server отобразит список таблиц в рабочей панели Details Pane.
- Щелкните правой кнопкой мыши на таблице MyOils, укажите на Open Table (Открытие таблицы) и выберите Query (Запрос). Будет открыт конструктор запросов Query Designer.
- Скройте панель SQL Paneи панель результатов Results Pane.
- Щелкните на кнопке Change Query Type (Изменить тип запроса)в панели инструментов конструктора запросов, а затем выберите Delete (Удалить).