SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
A
A
A
Share
Blog
Popular
SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code.
You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.
SQL code:
Upload
Copy
Format
Clear
CREATE TABLE users ( user_id INT identity(1, 1) PRIMARY KEY --Идентификатор пользователя ,user_name NVARCHAR(100) NOT NULL --ФИО пользователя ) CREATE TABLE groups ( group_id INT PRIMARY KEY --Идентификатор группы ,group_name NVARCHAR(100) NOT NULL --Название группы ,members_count INT NOT NULL --Количество участников группы ) CREATE TABLE user_groups ( group_id INT ,user_id INT ) INSERT INTO users (user_name) VALUES (N'Алексеев А.А.') ,(N'Пискун А.А.') ,(N'Артамонов В.А.') ,(N'Лихачёв В.В.') ,(N'Тимашов А.А.') ,(N'Мурашов А.С.') ,(N'Краснов И.В.') ,(N'Писанкин А.В.') ,(N'Лебедев П.Е.') ,(N'Тихомиров Ф.А.') INSERT INTO groups ( group_id ,group_name ,members_count ) VALUES ( 1 ,N'Администраторы' ,1 ) ,( 2 ,N'Пользователи' ,3 ) ,( 3 ,N'Специалисты' ,4 ) ,( 4 ,N'Тестировщики' ,3 ) go /** Вопрос: Курсоры. Что такое? Зачем нужны? Задание: Что происходит в курсоре ниже? (5 минут) */ DECLARE S CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR SELECT group_id ,members_count FROM groups DECLARE @iGroupId INT ,@iMembersCount INT OPEN S FETCH NEXT FROM s INTO @iGroupId ,@iMembersCount WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO user_groups ( user_id ,group_id ) SELECT TOP (@iMembersCount) u.user_id ,@iGroupId FROM users AS u ORDER BY NEWID() FETCH NEXT FROM s INTO @iGroupId ,@iMembersCount END CLOSE s DEALLOCATE S go /** Вопрос: Как объединить таблицы горизонтально (JOIN, его виды; APPLY, его виды)? Задание: Для каждой группы (groups) вывести второго сотрудника (сортиорвка в алфавитном порядке) (10-12 минут) */ SELECT t1.group_name ,t1.user_name FROM( SELECT group_name ,u.user_name ,ROW_NUMBER () OVER (PARTITION BY us.group_id order by user_name) AS 'num' FROM users as u JOIN user_groups AS us ON us.user_id = u.user_id JOIN groups AS g ON g.group_id = us.group_id ) AS t1 WHERE num = 2 GO /** Вопрос: Как получить информацию об ошибке, чтобы ее обработать? Задание: Дополнить процедуру обработкой ошибки. (Получить код и текст ошибки) (5 минут) */ CREATE PROCEDURE processingErrors AS BEGIN TRY DECLARE @nNumber NUMERIC(17, 2) = 10.00 ,@nResult NUMERIC(17, 2) BEGIN TRANSACTION SET @nResult = @nNumber / 0 COMMIT END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage IF(@@TRANCOUNT > 0) ROLLBACK END CATCH go EXEC processingErrors go /** Вопрос: Динамический SQL: расскажи про опыт использования */ /** Вопрос: Есть таблица из 20 полей. Производится синхронизация данных с внешним сервисом. Как определить, что данные изменились? */ /** Вопрос: Разбор XML. Метод nodes Изменение XML. Метод modify Сбор XML из других XML. Типизированный XML Использование схем для валидации XML Задание: 1. Представить данные хмл в виде таблицы (Разбор xml). (5 минут) 2. Заменить значение атрибута value = '9988776655 для ноды, у которой атрибут ext_id=tax_code (3 минуты) 3. Удалить из xml элемент с ext_id=client_type (3 минуты) */ DECLARE @xXml XML = '<dataset> <object ext_id="client_id" value="300000001" /> <object ext_id="branch_id" value="044525104" /> <object ext_id="tax_code" value="001122334455" /> <object ext_id="client_type" value="J" /> </dataset>' CREATE table #tableXML( ext_id VARCHAR(32), value VARCHAR(32) ) INSERT INTO #tableXML (ext_id, value) select msg.value('@ext_id', 'VARCHAR(32)') as ext_id, msg.value('@value', 'VARCHAR(32)') as value FROM @xXml.nodes('//dataset') as dataset(msg) SELECT ext_id, value FROM #tableXML; GO /** Оптимизация Вопрос: большой запрос или много мелких. Что быстрее? Как использовать план запроса? Вопрос: Многопоточная обработка таблиц: как сделать, чтобы потоки не обрабатывали одни и те же записи Git Что такое git? Для чего используется? Что такое ветка? Зачем нужны ветки? Как решать конфликты при слиянии? */
SQL
Server:
MySQL 5.7
MySQL 5.7 Sakila (ReadOnly)
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
MariaDB 11.5
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 11
PostgreSQL 12
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear