Досі поняття "таблиця", як правило, зв'язувалося з реальною або базовою таблицею, тобто з таблицею, для кожного рядка якої в дійсності є деякий двійник, що зберігається в фізичній пам'яті машини. Але SQL використовує і створює ряд віртуальних (начебто існуючих) таблиць: представлень, курсорів і неіменованих робочих таблиць, в яких формуються результати запитів одержані з базових таблиць і представлень. Це таблиці, що не існують в базі даних, але немов би існують з точки зору користувача.
Базові таблиці створюються за допомогою команди CREATE TABLE (створити таблицю), докладний опис якого наведено вище.
Якщо користувачі досить часто користуються даними з таблиці, то для спрощення формування запитів доцільно створити представлення.
Представлення - це порожня іменована таблиця, що визначається переліком тих стовпчиків таблиць і ознаками тих їхніх рядків, які хотілося б у ній побачити, тобто представлення - це віртуальна таблиця, яка сама по собі не існує, але для користувача виглядає так, наче вона існує. Представлення реально є деяким запитом, який зберігається в БД.
Представлення є немов би "вікном" в одну або декілька базових таблиць. Воно створюється за допомогою команди CREATE VIEW (створити представлення), докладний опис якого наведений нижче. Для користувача представлення майже не відрізняються від базових таблиць (є лише деякі обмеження при виконанні різних операцій маніпулювання даними). Вони можуть використовуватися як в інтерактивному режимі, так і в прикладних програмах.
Курсор - це порожня іменована таблиця, що визначається переліком тих стовпчиків базових таблиць і признаками тих їхніх рядків, які хотілося б в ній побачити. Курсори створені для процедурної роботи з таблицею в прикладних програмах. Курсори працюють не з віртуальною таблицею вцілому, а з окремими рядками віртуальної таблиці.
Курсор - це механізм мови SQL, призначений для того, щоб дозволити прикладній програмі послідовно, рядок за рядком, переглянути результат зв'язаного з курсором запиту.