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



Вопросы
  Упаковка таблиц в BDE
   Категория: Базы данных
  Создание и удаление полей
   Категория: Базы данных
  Перекодировка в DBASE
   Категория: Базы данных
  Изменить пароль для Paradox
   Категория: Базы данных
  Удалить файл в Корзину
   Категория: Приложение
  Группировка TopAdvGrid
   Категория: Компоненты

Справочник по MySQL
Скачать софт бесплатно. скачать шаблоны dle бесплатно.
Справочник по MySQL - Удаление строк из таблицы (DELETE FROM)

Удаление записей осуществляется командой DELETE FROM.

Синтаксис оператора DELETE FROM

DELETE [LOW_PRIORITY | QUICK] FROM table_name
В В В В [WHERE where_definition]
В В В В [ORDER BY ...]
В В В В [LIMIT rows]

или

DELETE [LOW_PRIORITY | QUICK] table_name[.*] [,table_name[.*] ...]
В В В В FROM table-references
В В В В [WHERE where_definition]


или

DELETE [LOW_PRIORITY | QUICK]
В В В В FROM table_name[.*], [table_name[.*] ...]
В В В В USING table-references
В В В В [WHERE where_definition]

Команда DELETE удаляет из таблицы table_name все записи, удовлетворяющие условию where_definition. Если условие WHERE where_definition не задано, то из таблицы table_name удаляются все записи.

Команда DELETE возвращает количество удаленных записей.

Следует учитывать, что если в команде DELETE не задано условие WHERE where_definition, то команда возвратит 0, хотя записи были удалены.

Если все же необходимо удалить все записи и узнать их количество, то в условии where_definition нужно задать заведомо истинное значение:

DELETE FROM `users` WHERE1 =1


Но в этом случае выполнение команды происходит значительно медленнее.

LOW_PRIORITY
- Если указано это ключевое слово, то удаление записей из таблицы table_name не будет произведено до тех пор, пока другие процессы не закончат чтение их этой таблицы.
QUICK
- Если указано это ключевое слово, то при удалении записей обработчик таблицы не будет объединять индексы, что может ускорить операцию удаления.
table_name
- Имя таблицы в базе данных, из которой будет происходить удаление строк.
LIMIT
- Задает максимальное количество строк, которые могут быть удалены за текущий запрос.
Следующий запрос удалит из таблицы users только 5 строк:

DELETE FROM `users` LIMIT5


ORDER BY
- Задает имя поля, или имена полей через запятую, по которым происходит сортировка удаляемых записей.
Эта возможность актуальна при необходимости удалить только определенное кол-во записей, отсортированных по какому-либо свойству.
Следующий пример удалит из таблицы users запись самого молодого человека.
Допустим таблица users имеет следующий вид:

CREATE TABLE `users` ( `name` VARCHAR( 255В В ) NOT NULL,В В `age` SMALLINT( 3В В ) NOT NULL)


Запишем в нее несколько записей:

INSERT INTO `users` ( `name` ,В В `age` )VALUES( 'Миша', 25), ( 'Ксюша', 15), ( 'Настя', 12), ( 'Саша', 26), ( 'Дима', 30)


Таблица users имеет значения:

SELECT * FROM `users` 


+-------+-----+
| nameВ В | age |
+-------+-----+
| МишаВ В |В В 25 |
| Ксюша |В В 15 |
| Настя |В В 12 |
| СашаВ В |В В 26 |
| ДимаВ В |В В 30 |
+-------+-----+
5 rows in set (0.00 sec)


Удаляем самого молодого:

DELETE FROM `users` ORDER BY `age` LIMIT1


Теперь таблица имеет значения:

SELECT * FROM `users` 


+-------+-----+
| nameВ В | age |
+-------+-----+
| МишаВ В |В В 25 |
| Ксюша |В В 15 |
| СашаВ В |В В 26 |
| ДимаВ В |В В 30 |
+-------+-----+
4 rows in set (0.00 sec)


Можем также удалить самого старого:
DELETE FROM `users` ORDER BY `age` DESCLIMIT1


Теперь таблица имеет значения:
SELECT * FROM `users` 


+-------+-----+
| nameВ В | age |
+-------+-----+
| МишаВ В |В В 25 |
| Ксюша |В В 15 |
| СашаВ В |В В 26 |
+-------+-----+
3 rows in set (0.00 sec)


Сортировка удаляемых записей при помощи команды ORDER BY появилась в MySQL начиная с версии 4.0.
FROM table-references и USING ...
- Позволяют удалять записи сразу из нескольких таблиц руководствуясь многотабличным условием WHERE where_definition.
Следующие два примера равнозначны по производимым действиям и удаляют одинаковые записи в таблицах table_1 и table_2 и используя при поиске значений еще и таблицу table_3:

DELETE `table_1` ,В В `table_2` FROM `table_1` ,В В `table_2` ,В В `table_3` WHERE `table_1`.`id`В В =В В `table_2`.`id`В В &&В В `table_2`.`id`В В =В В `table_3`.`id` 


Аналогичный запрос:

DELETE FROM `table_1` ,В В `table_2` USING `table_1` ,В В `table_2` ,В В `table_3` WHERE `table_1`.`id`В В =В В `table_2`.`id`В В &&В В `table_2`.`id`В В =В В `table_3`.`id`

Возможность многотабличного удаления записей появилась в MySQL начиная с версии 4.0.
_________________________________________


См. также

Типы данных, используемые в базе данных MySQL
Создание базы данных MySQL (CREATE DATABASE)
Удаление базы данных MySQL (DROP DATABASE)
Создание таблицы в базе данных MySQL (CREATE TABLE)
Удаление таблицы из базы данных MySQL (DROP TABLE)
Переименование таблицы (ALTER TABLE RENAME)
Вставка столбцов (ALTER TABLE ADD)
Изменение свойств столбца (ALTER TABLE CHANGE)
Удаление столбцов (ALTER TABLE DROP)
Вставка строки в таблицу INSERT
Удаление строк из таблицы (DELETE FROM)
Обновление записей в таблице(UPDATE)
Поиск записей в таблице(SELECT)