2. Что такое DML? Какие операции в него входят? Рассказать про них.
UNKNOWNОператоры манипуляции данными (Data Manipulation Language, DML):
SELECT выбирает данные, удовлетворяющие заданным условиям,
SELECT [DISTINCT | ALL] поля_таблиц
FROM список_таблиц
[WHERE условия_на_ограничения_строк]
[GROUP BY условия_группировки]
[HAVING условия_на_ограничения_строк_после_группировки по агрегатным функциям]
[ORDER BY порядок_сортировки [ASC | DESC]]
[LIMIT ограничение_количества_записей]
SQL-псевдонимы: SELECT good_type_id AS id FROM GoodTypes;
Порядок выполнения инструкций (зависит от СУБД):
FROM
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
ORDER BY
В предложении WHERE не доступны псевдонимы столбцов, определяемых в предложении SELECT, потому что, согласно списку, оно выполняется до SELECT WHERE условия_на_ограничения_строк [логический_оператор другое_условия_на_ограничения_строк]
- IS [NOT] NULL — позволяет узнать равно ли проверяемое значение NULL
- [NOT] BETWEEN min AND max
- [NOT] IN — позволяет узнать входит ли проверяемое значение столбца в список определённыхзначений WHERE status IN ('father', 'mother');
- [NOT] LIKE шаблон [ESCAPE символ] — позволяет узнать соответствует ли строка определённому шаблону
Трафаретные символы:
- never% Сопоставляется любым строкам, начинающимся на «never».
- %ing Сопоставляется любым строкам, заканчивающимся на «ing».
- _ing Сопоставляется строкам, имеющим длину 4 символа, при этом 3 последних обязательно должны быть «ing». Например, слова «sing» и «wing».
ESCAPE-символ используется для экранирования трафаретных символов WHERE progress LIKE '3!%' ESCAPE '!';
Если бы мы не экранировали трафаретный символ, то в выборку попало бы всё, что начинается на 3.
Логические операторы: NOT, OR (общее значение выражения истинно, если хотя бы одно из них истинно), AND, XOR (общее значение выражения истинно, если один и только один аргумент является истинным)
WHERE plane = 'Boeing' AND NOT town_from = 'London';
INSERT добавляет новые данные
Общая структура запроса с оператором INSERT
INSERT INTO имя_таблицы [(поле_таблицы, ...)]
VALUES (значение_поля_таблицы, ...)
| SELECT поле_таблицы, ... FROM имя_таблицы ...
INSERT INTO Goods (good_id, good_name, type) VALUES (5, 'Table', 2);
INSERT INTO Goods VALUES (5, 'Table', 2);
INSERT INTO Goods
SELECT good_id, good_name, type FROM Goods where good_name = 2;
UPDATE изменяет существующие данные
UPDATE FamilyMembers
SET member_name = "Andie Anthony" что делаем
WHERE member_name = "Andie Quincey" куда делаем
UPDATE Payments
SET unit_price = unit_price * 2
DELETE удаляет данные;
DELETE Reservations, Rooms FROM Reservations
JOIN Rooms ON Reservations.room_id = Rooms.id
WHERE Rooms.has_kitchen = false;
- TRUNCATE TABLE имя_таблицы;
У оператора TRUNCATE есть ряд отличий:
- Не срабатывают триггеры, в частности, триггер удаления
- Удаляет все строки в таблице, не записывая при этом удаление отдельных строк данных в журнал транзакций
- Сбрасывает счетчик идентификаторов до начального значения
- Чтобы использовать, необходимы права на изменение таблицы
Триггеры представляют специальный тип хранимой процедуры, которая вызывается автоматически при выполнении определенного действия над таблицей или представлением, в частности, при добавлении, изменении или удалении данных, то есть при выполнении команд INSERT, UPDATE, DELETE.
Допустим, в таблице Products хранятся данные о товарах. Но цена товара нередко содержит различные надбавки типа налога на добавленную стоимость, налога на добавленную коррупцию и так далее. Человек, добавляющий данные, может не знать все эти тонкости с налоговой базой, и он определяет чистую цену. С помощью триггера мы можем поправить цену товара на некоторую величину.
CREATE TRIGGER имя_триггера
ON {имя_таблицы | имя_представления}
{AFTER | INSTEAD OF} [INSERT | UPDATE | DELETE]
AS выражения_sql
Предыдущий вопрос: 1. Что такое DDL? Какие операции в него входят? Рассказать про них.
Следующий вопрос: 3. Что такое TCL? Какие операции в него входят? Рассказать про них.
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне