create database step2;gouse step2;go-- 学生表create table StudentInfo( stuId char(10) primary key, -- 主键 stuName varchar(20), -- 姓名 ClassId int, -- 班级编号,逻辑外键,并不是真正的外键约束 stuPhone char(11), -- 电话号码 stuSex char(4), -- 性别 stuBirthday datetime -- 生日);go-- 班级表create table ClassInfo( Id int primary key identity, -- 班级的主键 Name varchar(30), -- 班级名称 College varchar(20) -- 学院);go-- 成绩表create table StudentScore( Id int primary key identity, -- 成绩的主键 stuId char(10), -- 学生外键 CourseName varchar(20), -- 课程 theoryScore int, -- 理论成绩 skillScore int -- 技能成绩);INSERT INTO dbo.StudentInfo(stuId,stuName,ClassId,stuPhone,stuSex,stuBirthday)VALUES('180325011','任我行',5,'13823204456','男', '1999-09-09'),('180325012','张三',4,'13823204452','女', '1998-08-08'),('180325013','李四',2,'18899251152','男', '1997-07-07'),('180325014','王五',1,'13597445645','女', '1998-08-08'),('180325015','帅天行',5,'13814204456','男', '1998-06-06'),('180325016','叶星辰',5,'17623204936','男', '1998-05-05'),('180325017','赵日天',0,'13922044932','男', '1997-07-15');goINSERT INTO dbo.ClassInfo(Name,College)VALUES('软件技术1班', '计算机系' ),('会计1班', '经济管理系' ),('会计2班', '经济管理系' ),('欧美软件外包班', '计算机系' ),('会计3班', '经济管理系' );goINSERT INTO dbo.StudentScore(stuId,CourseName,theoryScore,skillScore)VALUES( '180325011', '会计从业', 80, 90 ),( '180325011', 'C# 入门编程', 99, 100 ),( '180325012', 'SQLServer编程', 70, 75 ),( '180325013', '会计从业', 93, 80 ),( '180325014', 'C# 高级编程', 99, 99 ),( '180325015', '会计从业', 74, 40 ),( '180325015', 'C# 入门编程', 80, 90 ); --1.如何查看表中所有数据?-- 查看学生表-- select: 查询-- *:代表表中所有的列select * from StudentInfo-- * 号,在数据库优化的章节中,不建议使用*号,因为系统要解析这个*号,需要一点点时间-- 实际开发中,如果字段过多,我们查询时,只查出业务中所需要的字段select stuName,stuId from StudentInfo-- 查询班级表,执行select id,Name,College from ClassInfo--2.如何查询指定几个字段的值?-- 查询学生的姓名,性别,生日,班级select stuName,stuSex,stuBirthday,ClassId from StudentInfo--3.如何给字段取别名?(可以省略as)-- 把学生表中所有的字段都取别名select stuId as 学生主键,stuName as 姓名,ClassId 班级编号,stuPhone 电话号码,stuSex 性别,stuBirthday 生日from StudentInfo--4.distinct的用法?多个字段的用法? -- distinct:去除重复项 select distinct ClassId from StudentInfo select distinct stuSex from StudentInfo -- 指的是两个字段组合在一起,不会重复 select distinct stuSex,ClassId from StudentInfo-- 这两个结果集为什么会一样?select stuId,CourseName from StudentScore-- disctinct 后面跟着几个字段,表示 去除这几个字段(组合在一起)重复的意思select distinct stuId,CourseName from StudentScore-- 这样写会去除重复吗?select distinct * from StudentInfo -- 这样写没有意义,反而增加系统的开销--5.top 的用法? -- 取前3条数据 -- top :前。。。条 select top 3 * from StudentInfo--6.top ... percent(百分比)?-- 查询前30%的学生数据-- 从这个故事告诉我们,数据没有半条,向上取整select top 30 percent * from StudentInfo--7.查询年龄大于20岁的?-- year():获取年份-- 年龄 = 当前年份 - 生日所在年份select * from StudentInfo where (year(getdate())-year(stuBirthday))>20-- 查询学生的,姓名,性别,年龄 所有字段取别名-- 年龄 = 当前年份 - 生日所在年份select stuName as 姓名,stuSex as 性别,(year(getdate())-year(stuBirthday)) as 年龄 from StudentInfo-- 查询80 后的女生-- 80后:1980-1989select * from StudentInfo where year(stuBirthday)>=1980 and year(stuBirthday)<=1989and stuSex='女'--9.查询姓李的学生信息-- like:模糊查询,中文意思是:像。。。select * from StudentInfo where stuName like '李%'--10.列出技能成绩大于90分的成绩单select * from StudentScore where skillScore>=90--11.查询课程包含”SqlServer”的成绩信息select * from StudentScore where CourseName like '%SqlServer%'--12.查询每个学生不同的成绩列表select distinct stuId,skillScore from StudentScore--15.查询年龄大于20岁前3条学生的姓名,年龄,所有字段取别名select top 3 stuName as 姓名,stuSex as 性别 from StudentInfo where (year(getdate())-year(stuBirthday))>20
配套视频链接:SQLServer 入门基础 – 网易云课堂 (163.com)
海阔平鱼跃,天高任我行,给我一片蓝天,让我自由翱翔。