Как пользоваться онлайн-компилятором SQL
- Напишите SQL в редакторе. В одном скрипте можно создавать таблицы (
CREATE TABLE), добавлять данные (INSERT) и делать запросы к ним (SELECT). Разделяйте операторы точкой с запятой. - Нажмите Запустить или используйте Ctrl + Enter (⌘ + Enter на Mac).
- Каждый оператор, возвращающий строки, выводится по порядку в виде отдельной таблицы результатов, а под ней указано число строк. Значения
NULLпомечаются явно. Если ни один оператор не возвращает строк, вы увидите короткое подтверждение. - Выберите лимит времени — 5, 15 или 60 секунд; это полезно, если рекурсивный запрос выходит из-под контроля. Кнопка Остановить немедленно отменяет запрос.
Движок SQLite небольшой, заметно меньше 1 МБ, поэтому загружается почти мгновенно. Кнопка Сбросить пример восстанавливает демонстрационную схему employees, а кнопка main.sql скачивает ваш скрипт.
Ваши запросы выполняются в Web Worker в вашем собственном браузере. Ни SQL, ни данные не загружаются и не хранятся на наших серверах. Редактор сохраняет ваш последний скрипт в локальном хранилище браузера и больше нигде.
Что поддерживается
Компилятор запускает SQLite 3 через sql.js — библиотеку SQLite на C, скомпилированную в WebAssembly. Это настоящий движок реляционной базы данных, а не эмулятор.
- DDL и DML:
CREATE TABLE,CREATE INDEX,CREATE VIEW,INSERT,UPDATE,DELETE, ограничения, внешние ключи и триггеры. - Запросы: соединения (joins), подзапросы,
GROUP BY/HAVING,UNION,CASEи общие табличные выражения, включаяWITH RECURSIVE. - Оконные функции, такие как
ROW_NUMBER(),RANK(),LAG(), и нарастающие итоги черезSUM() OVER (...). - Встроенные функции для текста (
substr,upper,replace), чисел и дат (date,strftime).
Ограничения:
- При каждом запуске создаётся новая пустая база в памяти. Таблицы не сохраняются между запусками, поэтому держите операторы
CREATEиINSERTв начале скрипта. - Это SQLite, а не MySQL или PostgreSQL. Большая часть стандартного SQL работает, но возможности, специфичные для конкретных СУБД, такие как хранимые процедуры,
GRANT, ключевое словоAUTO_INCREMENTиз MySQL или типSERIALиз PostgreSQL, не поддерживаются. - Для больших наборов результатов показываются первые 1000 строк и общее число строк.
- Нельзя подключиться к внешней базе данных или открыть собственный файл
.db.
Краткий справочник по SQL
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer TEXT NOT NULL,
amount REAL,
placed TEXT DEFAULT (date('now'))
);
INSERT INTO orders (customer, amount) VALUES
('Ada', 120.0), ('Ada', 35.5), ('Grace', 80.0);
WITH totals AS (
SELECT customer, SUM(amount) AS spent, COUNT(*) AS n
FROM orders
GROUP BY customer
)
SELECT customer, spent, n
FROM totals
WHERE spent >= 50 AND n <> 0
ORDER BY spent DESC;
| Задача | SQL |
|---|---|
| Ключ с автонумерацией | id INTEGER PRIMARY KEY |
| Фильтрация строк | WHERE price BETWEEN 10 AND 20 |
| Поиск по шаблону | WHERE name LIKE 'A%' |
| Склейка текста | first || ' ' || last |
| Постраничный вывод | LIMIT 10 OFFSET 20 |
| Замена NULL | COALESCE(phone, 'n/a') |
| Вставка или обновление | INSERT ... ON CONFLICT(id) DO UPDATE SET ... |
Советы
- Используйте
sqlite_master, чтобы увидеть всё созданное:SELECT name, sql FROM sqlite_master; - Используйте
EXPLAIN QUERY PLAN SELECT ..., чтобы проверить, использует ли запрос индекс. - SQLite использует гибкую типизацию: столбец, объявленный как
INTEGER, всё равно может хранить текст. Добавьте ограниченияCHECKили используйте таблицыSTRICT, если нужен строгий контроль типов. - Внешние ключи проверяются только после
PRAGMA foreign_keys = ON;. - Длинный запутанный запрос? Приведите его в порядок с помощью инструмента Форматирование SQL, прежде чем делиться им.
BEGIN; … COMMIT;. Генерация тестовых данных с помощью рекурсивного CTE — быстрый способ заполнить таблицу тысячами строк для практики.Часто задаваемые вопросы
Какой диалект SQL здесь используется?
SQLite 3. Этот диалект близок к стандартному SQL, поэтому хорошо подходит для изучения SELECT, соединений, группировки и оконных функций. Синтаксис, специфичный для MySQL, PostgreSQL или SQL Server, может потребовать небольших изменений.
Сохраняются ли мои данные?
Нет. Каждый запуск создаёт новую базу в памяти, которая удаляется сразу после завершения. Запоминается только текст SQL в редакторе, локально в вашем браузере.
Можно ли выполнить несколько запросов сразу?
Да. Разделяйте их точкой с запятой. Операторы выполняются по порядку, и каждый оператор, возвращающий строки, создаёт собственную таблицу результатов.
Можно ли практиковаться и на других языках?
Да. Попробуйте онлайн-компилятор Python, где также работает встроенный модуль sqlite3, или просмотрите все наши инструменты для разработчиков.
Обновлено