SQL Server使用循环语句创建模拟数据
实例1、使用循环语句创建模拟数据
1.1 创建学生信息表
CREATE TABLE StuInfo
(
StuID INT, --学生编号
StuName NVARCHAR(20), --学生姓名
Sex NVARCHAR(20) --学生性别
)
1.2 给学生信息表创建模拟数据
BEGIN
DECLARE @DataCount INT = 100; --数据总数
DECLARE @CurrentCount INT =1; --当前条数
DECLARE @Sex NVARCHAR(20); --学生性别
WHILE @CurrentCount<=@DataCount
BEGIN
--先删除旧数据
DELETE StuInfo WHERE StuID = @CurrentCount;
--要求:每隔第5条数据时,学生性别为“女”,其余数据为“男”
IF (@CurrentCount%5=0)
BEGIN
SET @Sex = '女';
END
ELSE
BEGIN
SET @Sex = '男';
END;
--执行新增操作
INSERT StuInfo VALUES(@CurrentCount,'学生'+ CONVERT(VARCHAR,@CurrentCount),@Sex);
--当前条数加一
SET @CurrentCount = @CurrentCount +1;
END;
END;
实例2:使用循环语句创建带有期间字段的模拟数据
2.1 创建学生成绩表
CREATE TABLE StuScore
(
Period NVARCHAR(20), --期间
StuName NVARCHAR(20), --学生名称
Subject NVARCHAR(20), --科目名称
Score INT --考试成绩
)
2.2 给学生成绩表创建模拟数据
BEGIN
DECLARE @BeginDate DATETIME = '2018-10-01'; --开始日期
DECLARE @EndDate DATETIME = '2018-10-31'; --结束日期
DECLARE @CurrentDate DATETIME = @BeginDate; --当前日期
DECLARE @Period NVARCHAR(20); --当前期间
WHILE @CurrentDate<=@EndDate
BEGIN
--期间值
SET @Period = CONVERT(VARCHAR(10),@CurrentDate,120);
--删除该期间下的旧数据
DELETE StuScore WHERE Period = @Period;
--插入模拟数据
INSERT INTO StuScore VALUES(@Period,'张三','语文',CAST(CEILING(RAND() * 100) AS INT));
INSERT INTO StuScore VALUES(@Period,'张三','数学',CAST(CEILING(RAND() * 100) AS INT));
INSERT INTO StuScore VALUES(@Period,'李四','语文',CAST(CEILING(RAND() * 100) AS INT));
INSERT INTO StuScore VALUES(@Period,'李四','数学',CAST(CEILING(RAND() * 100) AS INT));
INSERT INTO StuScore VALUES(@Period,'王五','语文',CAST(CEILING(RAND() * 100) AS INT));
INSERT INTO StuScore VALUES(@Period,'王五','数学',CAST(CEILING(RAND() * 100) AS INT));
--当前日期加一天
SET @CurrentDate = DATEADD(DAY,1,@CurrentDate);
END;
END;