当前位置: 首页 > article >正文

sql server 入门教程

sql server 入门教程

1、创建数据库

1)鼠标右键数据库选项,点击新建数据库

image.png

2)命名数据库

根据自己业务情况取一个自定义数据库名字,比如:my_database

image.png

3)查看数据库

如果添加没看到,那么可鼠标右键数据库刷新,就可以看到如下界面

image.png

或者通过命令行创建数据库

create database my_database collate Chinese_PRC_CI_AS;

2、命名规范

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

1)驼峰式

单词首字母大写

比如:StudentScore

2)半驼峰

首个单词全小写,其他单词首字母大写

比如:studentScore

3)下划线【本次使用】

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

比如:student_score

3、创建表

3.1、选中my_database数据库

选中刚刚创建好的数据库,比如:mu_database,然后再点击【新建查询】,最后复制下面的代码即可创建表

image.png

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

  • 对应可视化界面设置

鼠标右键表字段然后点击设置主键

4、逻辑编写

1.1、定义整型变量

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

代码

declare @countData int  
set @countData = 100  
  
while @countData > 0 begin  
    print (@countData)  
    set @countData-=1  
end

效果

image.png

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

效果

image.png

1.3、模拟三个课程

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

1.4、模拟输出学生姓名

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

1)随机函数

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

image.png

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

效果

image.png


http://www.kler.cn/a/9883.html

相关文章:

  • makefile 设置动态库路径参数
  • 安全见闻1-5
  • 贪心算法day03(最长递增序列问题)
  • Python中异常处理小测验
  • 使用etl工具kettle的日常踩坑梳理之二、从Hadoop中导出数据
  • 项目集章程program charter
  • 知识图谱:Neo4j数据库的基本使用——创建张学良的关系谱
  • 安全防御第四天:防病毒网关
  • 基于目标级联法的微网群多主体分布式优化调度(Matlab代码实现)
  • 花了近三周时间对 ChatGPT 进行多方面了解、体验后写的报告,超级全面,建议想了解的朋友看看
  • Spring 源码分析(二)——GenericBeanDefinition 分析
  • Java知识点学习(第6天)
  • SQL Server的日志传送
  • 高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务
  • 机器学习-问答题准备(英文)-更新中
  • 用JavaScript实现最大子数组和的动态规划算法
  • Msray-Plus采集工具让您的市场营销更加简单,让您的营销成果更加显著
  • NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析
  • 吐血奉献精心整理的一大波数据集
  • 【C#】程序和sql速度对比
  • 【消息队列】聊一下生产者消息发送流程
  • 7nm舱泊一体SoC的新玩家
  • 三大前端框架Vue, Angular, React
  • 月薪过 3w 的 软件测试工程师 都是怎么做到的?
  • Spring Security 6.0系列【16】授权篇之访问控制
  • 国网B接口调阅实时视频规范解读和代码示例分析