Сравнение
№ | СУБД 1 | СУБД 2 | Совпадения |
---|---|---|---|
1 | MySQL | SQLite | 11 |
2 | PostgreSQL | SQLite | 9 |
3 | ORACLE | PostgreSQL | 8 |
4 | ORACLE | MS Access | 7 |
5 | MySQL | MS Access | 7 |
6 | PostgreSQL | MS Access | 7 |
7 | MySQL | PostgreSQL | 6 |
8 | ORACLE | SQLite | 3 |
9 | ORACLE | MySQL | 2 |
Детализация
ID | Особенность | Пример | Oracle | MySQL | PostgreSQL | SQLite | MS Access | Комментарии | Тип |
---|---|---|---|---|---|---|---|---|---|
1 | SELECT без FROM | SELECT 2 * 2; | + | + | + | + | Аналог в Oracle: SELECT 2 * 2 FROM dual; | DML | |
2 | Независимость от регистра в именах таблиц | SELECT * FROM TEST; или SELECT * FROM test; | + | + | + | + | DML | ||
3 | Независимость от регистра в инструкции LIKE | SELECT 'А%' FROM... ; или SELECT 'а%' FROM... ; | + | + | + | Чтобы избавиться от зависимости от регистра в Oracle, можно использовать функции UPPER(LOWER). Например: SELECT * FROM STUDENT WHERE UPPER(LAST_NAME) LIKE 'А%'; или (то же самое) SELECT * FROM STUDENT WHERE LOWER(LAST_NAME) LIKE 'a%'; | DML | ||
4 | Кавычки в инструкции LIKE | SELECT "а%" FROM... ; | + | + | + | DML | |||
5 | Прямой апостроф для псевдонимов | SELECT * FROM test AS 'Тестовая таблица'; | + | + | DML | ||||
6 | Обратный апостроф для псевдонимов | SELECT * FROM test AS `Тестовая таблица`; | + | + | + | DML | |||
7 | Кавычки для псевдонимов | SELECT * FROM test AS "Тестовая таблица"; | + | + | + | + | DML | ||
8 | Псевдонимы в запросах DELETE | DELETE FROM test t WHERE t.ID=5; | + | + | + | DML | |||
9 | Возможность замены LEFT (RIGHT) в неявном JOIN конструкцией "(+)" | SELECT * FROM customers c, orders o WHERE o.customer_id (+) = c.customer_id; | + | Аналог с явным LEFT JOIN: SELECT * FROM customers c LEFT JOIN orders o ON o.customer_id = c.customer_id; | DML | ||||
10 | Оператор MINUS в запросах | SELECT * FROM student s MINUS SELECT * FROM student s2 WHERE s2.id > 1000; | + | Аналог в PostgreSQL и SQLite – EXCEPT | DML | ||||
11 | Оператор EXCEPT в запросах | SELECT * FROM student s EXCEPT SELECT * FROM student s2 WHERE s2.id > 1000; | + | + | Аналог в Oracle – MINUS | DML | |||
12 | Использование || для конкатенации строк | SELECT s.last_name || ' ' || s.first_name FROM STUDENT s; | + | + | + | + | DML | ||
13 | Множественный INSERT (простой вариант) | INSERT INTO test_table (id, txt) VALUES (1, 'текст 1'), (2, 'текст 2'); | + | + | + | Аналогичный запрос в Oracle INSERT ALL INTO test_table (id, txt) VALUES (1, 'текст1') INTO test_table (id, txt) VALUES (2, 'текст2') SELECT * FROM dual; | DML | ||
14 | Оператор LIMIT – ограничение количества записей в запросе на выборку | SELECT * FROM test_table LIMIT 2; | + | + | + | Частичный аналог в Oracle: SELECT * FROM test_table WHERE rownum < 2; Частичный аналог в MS Access: SELECT TOP 2 * FROM test_table; | DML |