sql server 入门教程
sql server 入门教程
1、创建数据库
1)鼠标右键数据库选项,点击新建数据库
2)命名数据库
根据自己业务情况取一个自定义数据库名字,比如:my_database
3)查看数据库
如果添加没看到,那么可鼠标右键数据库刷新,就可以看到如下界面
或者通过命令行创建数据库
create database my_database collate Chinese_PRC_CI_AS;
2、命名规范
命名规范:大模块+功能模块+具体功能
1)驼峰式
单词首字母大写
比如:StudentScore
2)半驼峰
首个单词全小写,其他单词首字母大写
比如:studentScore
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
- 对应可视化界面设置
鼠标右键表字段然后点击设置主键
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
效果