SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
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 * from groups --select * from users --left outer join groups on user_id= --, user_groups --order by user_name go /** Вопрос: Как получить информацию об ошибке, чтобы ее обработать? Задание: Дополнить процедуру обработкой ошибки. (Получить код и текст ошибки) (5 минут) */ go CREATE PROCEDURE processingErrors AS BEGIN DECLARE @nNumber NUMERIC(17, 2) = 10.00 ,@nResult NUMERIC(17, 2) BEGIN TRANSACTION SET @nResult = @nNumber / 0 COMMIT END 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>' /** Оптимизация Вопрос: большой запрос или много мелких. Что быстрее? Как использовать план запроса? Вопрос: Многопоточная обработка таблиц: как сделать, чтобы потоки не обрабатывали одни и те же записи Git Что такое git? Для чего используется? Что такое ветка? Зачем нужны ветки? Как решать конфликты при слиянии? */

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear