【新星计划回顾】第二篇学习计划-通过定义变量简单批量模拟数据

🏆🏆又到周末,最近这段时间非常忙,虽然导师首次参与新星计划活动已经在4月16日圆满结束,早想腾出时间来好好整理活动期间分享的知识点。
🏆🏆非常感谢大家的支持和活动期间的文章输出,导师也是忙里抽空给大家准备分享的内容,也是尽力了,所以分享的知识点主要是偏向于基础和基本的实战,虽然不是讲解的很系统,但是能够了解到一定的实战信息
🏆🏆期待我们的下次学习,导师将会在6月或者7月再次发起新星计划,本次活动也得到学员和平台的肯定,平台也是非常欢迎导师再次发起新星计划,非常感谢!

在这里插入图片描述

1、创建数据库

1.1、鼠标右键数据库选项,点击新建数据库

在这里插入图片描述

1.2、命名数据库

根据自己业务情况取一个自定义数据库名字,比如:my_database
在这里插入图片描述

1.3、查看数据库

在这里插入图片描述

2、命名规范

命名规范:大模块+功能模块+具体功能

2.1、驼峰式

单词首字母大写
比如:StudentScore

2.2、半驼峰

首个单词全小写,其他单词首字母大写
比如:studentScore

2.3、下划线【本次使用】

一般是用于全小写+下划线区分单词
比如:student_score

3、创建表

3.1、选中my_database数据库

选中刚刚创建好的数据库,比如:mu_database,然后再点击【新建查询】,最后复制下面的代码即可创建表
在这里插入图片描述

  • 代码如下
create table student_score
(
    id int identity(1,1) primary key,
    studentName nvarchar(50),
    className nvarchar(50),
    courseName nvarchar(50),
    scoreValue int,
    createTime datetime
)

3.2、知识点补充

1)自增编号
使用identity(1,1),增量和种子

  • 对应可视化界面设置
    在这里插入图片描述
    2)主键
    设置字段为主键的关键词,primary key
  • 对应可视化界面设置
    鼠标右键表字段然后点击设置主键
    在这里插入图片描述

🏆🏆 原则:Write Less Do More!
🍎🍎简介:一只喜欢全栈方向的程序员,专注基础和实战分享,欢迎咨询,尽绵薄之力答疑解惑!

4、逻辑编写

1.1、定义整型变量

定义一个整型变量,并通过while循环遍历输出100内的值

  • 代码
declare @countData int
set @countData=100

while @countData>0 begin
    print(@countData)
    set @countData-=1
end
  • 效果
    在这里插入图片描述

1.2、模拟输出三个班级

  • 代码

declare @classCount int
set @classCount=1
declare @className nvarchar(50)

-- 循环遍历班级
while @classCount<=3 begin
    if @classCount=1 begin
        set @className='一年级'
    end
    else if @classCount=2 begin
        set @className='二年级'
    end
    else begin
        set @className='三年级'
    end

    print(@className)
    set @classCount+=1
end
  • 效果
    在这里插入图片描述

1.3、模拟三个课程

模拟输出每个班级的三个课程,比如:语文、数学、英语

1.4、模拟输出学生姓名

这里需要用到动态生成学生姓名功能

1)随机函数


-- 随机产生整型数字,用于获取姓和名所在下标位置值
select rand()    -- 产生0~1之间的数字,无效接近0和1,但不一定不会等于0和1
select round(rand()*20+1,0)    --产生1到20的整型数值

在这里插入图片描述

2)输出学生姓名

  • 代码

declare @classCount int
set @classCount=1
declare @className nvarchar(50)
declare @courseName nvarchar(50)

-- 定义一个姓氏表变量,表添加两个字段,自增编号和名字
declare @surnameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 定义一个名字表变量,表添加两个字段,自增编号和名字
declare @nameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 姓和名字
-- 姓氏
insert @surnameTable values
('王'),('李'),('张'),('刘'),('陈'),('杨'),('黄'),('赵'),('周'),('吴'),
('徐'),('孙'),('马'),('胡'),('朱'),('郭'),('何'),('罗'),('高'),('林') 
-- 名称
insert @nameTable values
('芸'),('荷'),('星'),('秋'),('嘉'),('娜'),('珊'),('菲'),('素'),('嫣'),
('慧'),('慕'),('歆'),('巧'),('绮'),('羽'),('静'),('柔'),('采'),('沐'),
('苑'),('姣'),('芳'),('宁'),('沛'),('玥'),('文'),('如'),('悦'),('若'),
('德'),('蕾'),('颜'),('依'),('盼'),('菀'),('秀'),('草'),('莺'),('倩'),
('柳'),('娴'),('彨'),('舒'),('雅'),('淑'),('冉'),('云'),('凝'),('棋')

-- 循环遍历班级
while @classCount<=3 begin
    -- ===年级信息===
    if @classCount=1 begin
        set @className='一年级'
    end
    else if @classCount=2 begin
        set @className='二年级'
    end
    else begin
        set @className='三年级'
    end
    set @classCount+=1
    -- ===/年级信息===

    
     -- 生成名字
    declare @name nvarchar(50)
    declare @nameLength int
    set @nameLength=1+round(rand()*1,0)
    set @name=(select name from @surnameTable where id=round(rand()*20+1,0))
    while(@nameLength>0) begin
        set @name+=(select name from @nameTable where id=round(rand()*20+1,0))
        set @nameLength-=1
    end

    -- ===年级课程===
    -- 语文
    set @courseName='语文'
    print(@className+'>'+@courseName+'>'+@name+'')

    -- 数学
    set @courseName='数学'
    print(@className+'>'+@courseName+'>'+@name+'')

    -- 英语
    set @courseName='英语'
    print(@className+'>'+@courseName+'>'+@name+'')
    -- ===/年级课程===
end
  • 效果
    在这里插入图片描述

1.5、模拟输出分数

模拟数据50~100分之间的学生成绩

  • 代码

declare @classCount int
set @classCount=1
declare @className nvarchar(50)
declare @courseName nvarchar(50)
declare @scoreValue int

-- 定义一个姓氏表变量,表添加两个字段,自增编号和名字
declare @surnameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 定义一个名字表变量,表添加两个字段,自增编号和名字
declare @nameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 姓和名字
-- 姓氏
insert @surnameTable values
('王'),('李'),('张'),('刘'),('陈'),('杨'),('黄'),('赵'),('周'),('吴'),
('徐'),('孙'),('马'),('胡'),('朱'),('郭'),('何'),('罗'),('高'),('林') 
-- 名称
insert @nameTable values
('芸'),('荷'),('星'),('秋'),('嘉'),('娜'),('珊'),('菲'),('素'),('嫣'),
('慧'),('慕'),('歆'),('巧'),('绮'),('羽'),('静'),('柔'),('采'),('沐'),
('苑'),('姣'),('芳'),('宁'),('沛'),('玥'),('文'),('如'),('悦'),('若'),
('德'),('蕾'),('颜'),('依'),('盼'),('菀'),('秀'),('草'),('莺'),('倩'),
('柳'),('娴'),('彨'),('舒'),('雅'),('淑'),('冉'),('云'),('凝'),('棋')

-- 循环遍历班级
while @classCount<=3 begin
    -- ===年级信息===
    if @classCount=1 begin
        set @className='一年级'
    end
    else if @classCount=2 begin
        set @className='二年级'
    end
    else begin
        set @className='三年级'
    end
    set @classCount+=1
    -- ===/年级信息===

    
     -- 生成名字
    declare @name nvarchar(50)
    declare @nameLength int
    set @nameLength=1+round(rand()*1,0)
    set @name=(select name from @surnameTable where id=round(rand()*20+1,0))
    while(@nameLength>0) begin
        set @name+=(select name from @nameTable where id=round(rand()*20+1,0))
        set @nameLength-=1
    end

    -- ===年级课程===
    -- 语文
    set @courseName='语文'
    set @scoreValue=round(rand()*50+50,0)
    print(@className+'>'+@courseName+'>'+@name+'>'+convert(varchar(10),@scoreValue))

    -- 数学
    set @courseName='数学'
    print(@className+'>'+@courseName+'>'+@name+'>'+convert(varchar(10),@scoreValue))

    -- 英语
    set @courseName='英语'
    print(@className+'>'+@courseName+'>'+@name+'>'+convert(varchar(10),@scoreValue))
    -- ===/年级课程===
end
  • 效果
    在这里插入图片描述

1.6、模拟输出80人

模拟输出每个班级80个人,上次这里逻辑有点问题,已修复

  • 代码

declare @classCount int
set @classCount=1
declare @className nvarchar(50)
declare @courseName nvarchar(50)
declare @scoreValue int
declare @studentCount int
set @studentCount=80

-- 定义一个姓氏表变量,表添加两个字段,自增编号和名字
declare @surnameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 定义一个名字表变量,表添加两个字段,自增编号和名字
declare @nameTable table(
    id int identity(1,1) primary key, 
    name nvarchar(10)
)

-- 姓和名字
-- 姓氏
insert @surnameTable values
('王'),('李'),('张'),('刘'),('陈'),('杨'),('黄'),('赵'),('周'),('吴'),
('徐'),('孙'),('马'),('胡'),('朱'),('郭'),('何'),('罗'),('高'),('林') 
-- 名称
insert @nameTable values
('芸'),('荷'),('星'),('秋'),('嘉'),('娜'),('珊'),('菲'),('素'),('嫣'),
('慧'),('慕'),('歆'),('巧'),('绮'),('羽'),('静'),('柔'),('采'),('沐'),
('苑'),('姣'),('芳'),('宁'),('沛'),('玥'),('文'),('如'),('悦'),('若'),
('德'),('蕾'),('颜'),('依'),('盼'),('菀'),('秀'),('草'),('莺'),('倩'),
('柳'),('娴'),('彨'),('舒'),('雅'),('淑'),('冉'),('云'),('凝'),('棋')

-- 循环遍历班级
while @classCount<=3 begin
    set @studentCount=80
    -- ===年级信息===
    if @classCount=1 begin
        set @className='一年级'
    end
    else if @classCount=2 begin
        set @className='二年级'
    end
    else begin
        set @className='三年级'
    end
    set @classCount+=1
    -- ===/年级信息===

    -- ===遍历创建学生记录===
    while @studentCount>0 begin
        -- 生成名字
        declare @name nvarchar(50)
        declare @nameLength int
        set @nameLength=1+round(rand()*1,0)
        set @name=(select name from @surnameTable where id=round(rand()*20+1,0))
        while(@nameLength>0) begin
            set @name+=(select name from @nameTable where id=round(rand()*20+1,0))
            set @nameLength-=1
        end

        -- ===年级课程===
        -- 语文
        set @courseName='语文'
        set @scoreValue=round(rand()*50+50,0)
        insert into student_score(studentName,className,courseName,scoreValue,createTime)
        values(@name,@className,@courseName,@scoreValue,getdate())

        -- 数学
        set @courseName='数学'
        set @scoreValue=round(rand()*50+50,0)
        insert into student_score(studentName,className,courseName,scoreValue,createTime)
        values(@name,@className,@courseName,@scoreValue,getdate())

        -- 英语
        set @courseName='英语'
        set @scoreValue=round(rand()*50+50,0)
        insert into student_score(studentName,className,courseName,scoreValue,createTime)
        values(@name,@className,@courseName,@scoreValue,getdate())
        -- ===/年级课程===
        set @studentCount-=1
    end

end


--select * from student_score
--truncate table student_score
  • 效果
    在这里插入图片描述

🍎🍎 本篇到此结束,感谢阅读的小伙伴,打个小小的ad,欢迎关注导师的公众号【有趣小馆】,导师会时不时发布一些有趣好玩的功能,欢迎关注!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值