Similar presentations:
Обновление и удаление данных. Редактирование структуры таблиц
1.
Обновление и удаление данных.Редактирование структуры
таблиц
2.
Удаление данныхДля удаления записей из таблиц предусмотрено два
оператора:
DELETE
TRUNCATE TABLE
3.
Оператор DELETEОператор delete имеет следующий синтаксис:
DELETE FROM tbl
WHERE where_definition ORDER BY ...
LIMIT rows
Оператор удаляет из таблицы tbl записи,
удовлетворяющие условию where_definition.
4. Оператор TRUNCATE TABLE
Оператор truncate table, в отличие от оператора delete,полностью очищает таблицу и не допускает условного
удаления. То есть оператор truncate table аналогичен
оператору delete без условия where и ограничения limit.
5. Обновление данных
Операция обновления позволяет менять значенияполей в уже существующих записях. Для обновления
данных предназначены операторы update и replace.
Первый позволяет обновлять отдельные поля в уже
существующих записях, тогда как оператор replace
больше похож на insert, за исключением того, что если
старая запись в данной таблице имеет то же значение
индекса unique или primary key, что и новая, то старая
запись перед занесением новой будет удалена.
6. Оператор UPDATE
Оператор update имеет следующий синтаксис:UPDATE [IGNORE] tbl
SET col1=expr1 [, со12=ехрr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT rows]
В инструкции, сразу после ключевого слова update, указывается
таблица tbl, которая подвергается изменению. В предложении set
указывается, какие столбцы подвергаются обновлению и
устанавливаются их новые значения. Необязательное условие
WHERE позволяет задать критерий отбора строк— обновлению
будут подвергаться только те строки, которые удовлетворяют
условию where_definition.
7. Оператор REPLACE
Синтаксис оператора replace аналогичен синтаксисуоператора insert:
REPLACE [INTO] tbl [(col_name, ...)] VALUES
(expression,...),(...),...
В таблицу tbl вставляются значения, определяемые в
списке после ключевого слова values. Задать порядок
столбцов можно при помощи необязательного списка
col_name, следующего за именем таблицы tbl. Точно так
же, как и в случае оператора insert, оператор replace
допускает многострочный формат.
8.
Оператор replace работает точно так же, как insert, заисключением того, что если старая запись в данной
таблице имеет то же значение индекса unique или
primary key, что и новая, то старая запись перед
занесением новой будет удалена. Следует учитывать, что
если не используются индексы unique или primary key,
то применение команды replace не имеет смысла, т. к.
она работает просто как insert
9.
Редактирование структуры таблицНаиболее распространенные задачи включают изменение
порядка следования столбцов, их названий, типов,
добавление новых индексов и т. д. Все эти операции
изменения структуры таблицы производятся при помощи
оператора SQL alter table.
Оператор alter table имеет следующий синтаксис
ALTER TABLE tbl alter_specification
[,alter_specification] ...
Сразу после оператора alter table следует имя таблицы tbl,
которая подвергается изменению, и производимое
изменение alter_specification, которых может быть
несколько.
10.
Добавление и удаление столбцовДля добавления столбца используется форма оператора alter table add [column], представленная в листинге, где в таблицу products
базы данных shop добавляется целочисленный столбец rebate.
ALTER TABLE products ADD COLUMN rebate INT;
Удаление столбца производится при помощи оператора alter table drop [column]. В листинге демонстрируется удаление вновь
созданного столбца rebate.
ALTER TABLE products DROP COLUMN rebate;
Замечание
Ключевое слово column является необязательным и может быть
опущено как при добавлении нового столбца, так и при его
удалении из таблицы.
Замечание
Если таблица содержит только один столбец, то этот столбец не
может быть удален. Вместо этого можно удалить данную таблицу,
используя команду drop table.
11.
Новый столбец rebate был добавлен в конец таблицы.Для того чтобы изменить позицию, в которую будет
помещен столбец, совместно с alter table - add [column]
используются ключевые слова first и after. Ключевое
слово first требует, чтобы новый столбец был размещен
первым, a after позволяет указать, после какого столбца
следует поместить новый. В листинге демонстрируется
добавление столбца id_first в начало таблицы и столбца
rebate — после price.
ALTER TABLE products ADD id_first INT FIRST,
ADD rebate INT AFTER price;
12. Изменение уже существующих столбцов
Для изменения типа уже существующего столбца используетсяключевое слово modify, после которого указывается имя
модифицируемого столбца и его новый тип. В примере
целочисленный тип столбца id_first меняется на текстовый.
ALTER TABLE products MODIFY id_first TEXT;
Точно так же, как и при создании столбца, использование
ключевых слов first и after позволяет изменить порядок
следования столбцов.
ALTER TABLE products MODIFY id_first TEXT AFTER price;
ALTER TABLE products MODIFY rebate INT FIRST;
13.
Ключевое слово modify в операторе alter table непозволяет изменить имя столбца, для этого предназначено
ключевое слово change. После данного ключевого слова
указывается имя столбца, затем следует новое имя и
новый тип. Даже если тип остается прежним, его
необходимо воспроизвести.
Переименование столбца id_first в id_second
ALTER TABLE products CHANGE id_first id_second
TEXT;
Как и в случае modify, совместно с ключевым словом
change допускается использование ключевых слов first и
after, позволяющих изменить позицию столбца.
14.
Если при помощи change изменяется только тип столбца,но не его имя, название столбца записывается в операторе
alter table два раза. В листинге решается задача смены
типа столбца id_second с text на int, а типа столбца rebate
с int на text, при этом столбцы размещаются в конце
таблицы.
Использование ключевого слова change
ALTER TABLE products
CHANGE id_second id_second INT AFTER id_catalog,
CHANGE rebate rebate TEXT AFTER id_catalog;
15. Добавление индексов
Оператор alter table, помимо добавления новых столбцов,позволяет создавать в таблице индексы:
add index [index_name] (index_columns) — создание
обычного индекса;
add unique [index_name] (index_columns) — создание
уникального индекса;
add primary key (index_columns) — создание первичного
ключа;
add fulltext [index_name] (index_columns) — создание
полнотекстового поиска.
Все индексы за исключением primary key могут быть
снабжены необязательным именем index_name, в скобках
указывается столбец (или столбцы, если индекс
многостолбцовый) index_columns.
16. Создание индексов при помощи оператора alter table
В листинге создается первичный ключ для таблицыproducts и индексируется столбец id_catalog с созданием
индекса id_catalog_index.
ALTER TABLE products ADD PRIMARY KEY
(id_product),
ADD INDEX id_catalog_index (id_catalog);
17. Удаление индексов
Удаление индексов осуществляется при помощи двухключевых слов:
drop index index_name — удаление индекса с именем
index_name;
drop primary key — удаление первичного ключа
таблицы.
Как уникальные (unique), так и обычные индексы
удаляются при помощи единой конструкции drop index.
Для удаления первичного ключа предусмотрена отдельная
конструкция drop primary key, для которой не
предусмотрена передача имени индекса index__name, т. к.
первичный ключ в таблице всегда один и не имеет имени.
ALTER TABLE products DROP PRIMARY KEY,
DROP INDEX id_catalog_index;
18. Преобразование таблицы
Помимо изменения структуры таблицы, оператор altertable позволяет изменять параметры таблицы, например,
ее название. Для этого используется конструкция rename
[TO] new_table, в результате применения которой
таблица получает новое имя new_table.
Для переименования таблиц существует также отдельный
оператор rename table, который имеет следующий
синтаксис:
RENAME TABLE tbl_name TO new_tbl_name[,
tbl_name2 TO new_tbl_name2,...]
Результатом работы оператора является переименование
таблицы tbl_name в new_tbl_name. В одном операторе
можно переименовать сразу несколько таблиц.
19.
Переименование таблицы products в componentsALTER TABLE products RENAME TO components;
Таблицы users и orders меняются именами.
RENAME TABLE users TO backup_table,
orders TO users,
backup_table TO orders;