Опубликован: 02.02.2007 | Доступ: свободный | Студентов: 2374 / 243 | Оценка: 4.10 / 3.86 | Длительность: 26:44:00
Урок 19:

Удаление строк

< Урок 18 || Урок 19: 123456 || Урок 20 >
Аннотация: SQL Server предоставляет два оператора для удаления строк из таблицы или представления: оператор DELETE и оператор TRUNCATE TABLE. Оператор TRUNCATE TABLE безо всяких условий удаляет все строки в таблице. Оператор DELETE обеспечивает большую гибкость и дает возможность удалять только избранные строки с помощью фразы WHERE, которая может включать дополнительные таблицы и представления.

Вы научитесь:

  • удалять избранные строки из таблицы с использованием панели сетки 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.

Каскадные удаления выполняются на вкладке Relationships (Отношения) диалогового окна Properties (Свойства).

Рис. 19.1. Каскадные удаления выполняются на вкладке Relationships (Отношения) диалогового окна Properties (Свойства).

Использование оператора DELETE

Подобно другим операторам SQL, используемым в конструкторе запросов Query Designer, оператор DELETE может быть непосредственно введен в панели SQL Pane, либо создан с использованием графических панелей.

Удаление строк с использованием панели сетки Grid Pane и панели диаграмм Diagram Pane

Панель сетки и панель диаграмм конструктора запросов Query Designer предоставляют графические средства для создания операторов DELETE; однако, они не поддерживают применение фразы FROM, которая дает возможность использовать в операторе DELETE дополнительные таблицы и представления.

Удалите избранные строки из таблицы

  1. Перейдите к папке Tables базы данных Aromatherapy. SQL Server отобразит список таблиц в рабочей панели Details Pane.
  2. Щелкните правой кнопкой мыши на таблице MyOils, укажите на Open Table (Открытие таблицы) и выберите Query (Запрос). Будет открыт конструктор запросов Query Designer.

  3. Скройте панель SQL Paneи панель результатов Results Pane.

  4. Щелкните на кнопке Change Query Type (Изменить тип запроса)в панели инструментов конструктора запросов, а затем выберите Delete (Удалить).
< Урок 18 || Урок 19: 123456 || Урок 20 >
Инна Грушецкая
Инна Грушецкая
Сергей Чесноков
Сергей Чесноков