Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Генератор Студентов
- CREATE TABLE #Name —Временная таблица для выгрузки имен
- (
- Имя VARCHAR(255),
- )
- CREATE TABLE #SurName —Временная таблица для выгрузки фамилий
- (
- Фамилия VARCHAR(255),
- )
- --Выгрузка имен
- BULK INSERT #Name
- FROM 'C:\Users\Алина\OneDrive\Рабочий стол\УД4\4\names_rus.txt'
- WITH (
- firstrow=1,
- rowterminator = ';');
- select *from #Name
- --Выгрузка фамилий
- BULK INSERT #SurName
- FROM 'C:\Users\Алина\OneDrive\Рабочий стол\УД4\4\surnames_rus.txt'
- WITH (
- firstrow=1,
- rowterminator = ';');
- select *from #SurName
- -- Генерирование 10 групп (хотя бы проверить столько, а там уже поменять явно не проблема)
- DECLARE @groupCount int = 10;
- WHILE @groupCount > 0
- BEGIN
- -- Создание группы
- INSERT INTO dbo.Группы (Год_поступления, Шифр) VALUES (
- FLOOR(20 + RAND() * (24 - 20 + 1)),
- 'ИСТб'
- );
- -- Генерация 30 студентов для текущей группы
- DECLARE @studentCount int = 30;
- DECLARE @currentStudent int = 1;
- WHILE @currentStudent <= @studentCount
- BEGIN
- -- Создание студента
- INSERT INTO dbo.Студенты (Группа_Номер, ФИО, Дата_рождения) VALUES (
- IDENT_CURRENT('dbo.Группы'), -- Номер группы получается из последней вставленной записи
- (SELECT TOP 1 Имя FROM #Name ORDER BY NEWID()) + ' ' + (SELECT TOP 1 Фамилия FROM #SurName ORDER BY NEWID()),
- -- Дата рождения от 2002 до 2005
- DATEADD(d, ROUND(DATEDIFF(d, '2002-01-01', '2005-12-31') * RAND(), 2), '2002-01-01')
- );
- -- Генерация 3 оценок для текущего студента
- DECLARE @gradeCount int = 3;
- DECLARE @currentGrade int = 1;
- WHILE @currentGrade <= @gradeCount
- BEGIN
- -- Создание оценки
- INSERT INTO dbo.Аттестация (Студенты_Номер_зачетки, ID_Предмета, Оценка) VALUES (
- IDENT_CURRENT('dbo.Студенты'),
- -- Выбираем случайный предмет
- (SELECT TOP 1 ID FROM dbo.Предметы ORDER BY NEWID()),
- -- Случайная оценка от 3 до 6
- RAND() * (6 - 3) + 3
- );
- SET @currentGrade = @currentGrade + 1;
- END;
- SET @currentStudent = @currentStudent + 1;
- END;
- SET @groupCount = @groupCount - 1;
- END;
- -- Очистка временных таблиц
- DROP TABLE #Name;
- DROP TABLE #SurName;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement