Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize Online / PHPize Online  /  SQLtest Online

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.

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? Для чего используется? Что такое ветка? Зачем нужны ветки? Как решать конфликты при слиянии? */

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear