Краткое сравнение MySQL, MS SQL Server, Oracle
Особенности запросов на выборку и модификацию данных (продолжение).
Суть |
MySQL |
MS SQL Server |
Oracle |
Ссылка |
Вставка зна- |
Просто передать |
Включить для таб- |
Отключить триггер, |
2.3.1.a{182} |
чения в авто- |
значение — и всё |
лицы IDEN- |
реализующий авто- |
|
инкременти- |
|
TITY_INSERT |
инкрементацию |
|
руемый пер- |
|
|
|
|
вичный ключ |
|
|
|
|
Вставка или |
REPLACE и ON |
MERGE |
MERGE |
2.3.4.a{195}, |
обновление в |
DUPLICATE KEY |
|
|
2.3.4.b{197} |
зависимости от |
UPDATE |
|
|
|
совпадения |
|
|
|
|
значений |
|
|
|
|
первичного |
|
|
|
|
ключа |
|
|
|
|
Особенности представлений, триггеров, хранимых подпрограмм, транзакций.
Суть |
MySQL |
MS SQL Server |
Oracle |
Ссылка |
|
Нельзя использовать |
Можно использовать |
Можно использовать |
3.1.1.a{210} |
Построение |
подзапросы в секции |
подзапросы в |
подзапросы в секции |
|
представлений |
FROM |
секции FROM |
FROM |
|
Кэширующие |
Не поддерживаются |
Поддерживаются |
Поддерживаются |
Пример 27{215} |
(материали- |
|
|
|
|
зованные, ин- |
|
|
|
|
дексирован- |
|
|
|
|
ные) пред- |
|
|
|
|
ставления |
|
|
|
|
Триггеры |
Не более шести штук |
BEFORE-триггеров нет, |
BEFORE-триггеров нет, |
3.1.2.b{232} |
|
(даже если пытаться |
но можно создавать |
но можно создавать |
|
|
задать разные имена): |
любое количество |
любое количество |
|
|
BE- FORE/AFTER |
AFTER и INSTEAD OF |
AFTER и INSTEAD OF |
|
|
IN- |
триггеров на |
триггеров на |
|
|
SERT/UPDATE/DE- |
INSERT/UP- |
INSERT/UP- |
|
|
LETE |
DATE/DELETE |
DATE/DELETE |
|
|
|
|
|
|
|
Работают только на |
Работают только на |
Есть как триггеры |
4.1.1.a{272}, |
|
уровне записи (акти- |
уровне выражения |
уровня записи, так и |
4.1.1.b{281} |
|
вируются каждый раз |
(активируются один |
триггеры уровня вы- |
|
|
для каждой записи |
раз для всего выра- |
ражения (с некото- |
|
|
обрабатываемых |
жения) |
рыми ограничениями: |
|
|
данных) |
|
нет псевдотаблиц |
|
|
|
|
inserted и up- |
|
|
|
|
dated) |
|
|
|
|
|
4.1.1.b{281} |
|
Нельзя «навесить» |
Можно «навесить» |
Можно «навесить» |
|
|
одно тело триггера на |
одно тело триггера на |
одно тело триггера на |
|
|
несколько операций |
несколько операций |
несколько операций |
|
|
Не активируются |
|
|
4.1.1.a{272}, |
|
каскадными опера- |
Активируются кас- |
Активируются кас- |
4.1.2.a{292} |
|
циями |
кадными операциями |
кадными операциями |
|
Триггеры на |
Не поддерживаются |
Поддерживаются |
Поддерживаются |
Пример 30{257} |
|
только INSTEAD OF |
только INSTEAD OF |
|
|
представлениях |
|
|
||
|
|
|
|
|
|
|
|
|
|
Неявные |
Есть |
Есть |
Нет |
Пример 41{408} |
транзакции и их |
|
|
|
|
автопод- |
|
|
|
|
тверждение |
|
|
|
|
Работа с MySQL, MS SQL Server и Oracle в примерах © Богдан Марчук Стр: 543/545
Краткое сравнение MySQL, MS SQL Server, Oracle
Особенности представлений, триггеров, хранимых подпрограмм, транзакций (продолжение).
Суть |
MySQL |
MS SQL Server |
Oracle |
Ссылка |
Уровни изо- |
READ UNCOMMIT |
READ UNCOMMIT |
Уровни READ COM- |
Пример 44{434} |
лированности |
TED, READ COMMIT- |
MITTED, |
|
|
TED, READ COMMIT |
|
|||
транзакций |
TED, REPEATABLE |
SERIALIZABLE; |
|
|
TED, REPEATABLE |
|
|||
|
READ, SNAPSHOT, |
режимы READ ONLY, |
|
|
|
READ, SERIALIZABLE |
|
||
|
|
SERIALIZABLE |
READ WRITE |
|
Уровень изо- |
REPEATABLE READ |
READ COMMITTED |
READ COMMITTED |
6.2.1.a{428} |
лированности |
|
|
|
|
по умолчанию |
|
|
|
|
Вывод отла- |
SELECT x |
PRINT x |
DBMS_OUT- |
6.2.2.a{434} |
дочной ин- |
|
|
PUT.PUT_LINE(x) |
|
формации |
|
|
|
|
Пауза в вы- |
SELECT SLEEP(s) |
WAITFOR DELAY |
EXEC |
6.2.1.a{428} |
полнении |
|
'hh:mm:ss' |
DBMS_LOCK.SLEEP( |
|
скрипта |
|
|
s) |
|
Модификация |
Да |
Нет |
Да |
5.1.1.c{367} |
данных в хра- |
|
|
|
|
нимых функ- |
|
|
|
|
циях |
|
|
|
|
Задание 8.TSK.A: дополните приведённую выше таблицу списками индексов, поддерживаемых каждой из трёх СУБД.
Задание 8.TSK.B: заведите себе подобную таблицу и отмечайте особенности каждой СУБД — в первую очередь те, столкнувшись с которыми, вы вынуждены искать дополнительную информацию.
Работа с MySQL, MS SQL Server и Oracle в примерах © Богдан Марчук Стр: 543/545