一.三个表的练习

表一:学生表 student
学号:code int (主键)从1开始
姓名:name varchar(50)
性别:sex char(10)
班级:banji char(10)
语文教师编号:yujiao int
数学教师编号:shujiao int
英语教师编号:yingjiao int

表二:教师表 teacher
教师编号:code int (主键) 从1001开始
负责课程:lesson char(10)(语文、数学、英语)
年龄:age int
生日:birth datetime

表三:分数表 score
学号:code int (学生学号的外键)
语文分数:yufen decimal(18,2)
数学分数:shufen decimal(18,2)
英语分数:yingfen decimal(18,2)

学生表数据:插入三个班的学生数据,每个班的相同科目的教师都是相同的
至少每个班5个人

教师表数据:语文教师,数学教师,英语教师分别三个,每一个对应一个班级

分数表数据:学号对应的语文、数学、英语成绩

use Student
go
create table students
(
code int identity(1,1) primary key,
name varchar(50),
sex char(10),
banji char(10),
yujiao int,
shujiao int,
yingjiao int
)
go
create table teacher
(
code int identity(1001,1) primary key,
name varchar(50),
lesson char(10),
age int,
birth datetime
)
go
create table score
(
code int,
yufen decimal(18,2),
shufen decimal(18,2),
yingfen decimal(18,2),
)
go
insert into teacher values('王勇','语文',40,'1976-3-15')
insert into teacher values('石原','数学',42,'1974-3-15')
insert into teacher values('刘丽萍','英语',30,'1986-3-15')
insert into teacher values('张晓华','语文',35,'1981-3-15')
insert into teacher values('李霞','数学',33,'1983-3-15')
insert into teacher values('李娜','英语',24,'1990-3-15')
insert into teacher values('陈勇','语文',41,'1975-3-15')
insert into teacher values('刘邦','数学',37,'1970-3-15')
insert into teacher values('冯云','英语',29,'1987-3-15')
go
insert into student values('张三','男','一班',1001,1002,1003)
insert into student values('李丽','女','一班',1001,1002,1003)
insert into student values('陈龙','男','一班',1001,1002,1003)
insert into student values('邓超','男','一班',1001,1002,1003)
insert into student values('郑九','男','一班',1001,1002,1003)
insert into student values('李四','女','二班',1004,1005,1006)
insert into student values('钱枫','男','二班',1004,1005,1006)
insert into student values('李娜','女','二班',1004,1005,1006)
insert into student values('赵康','男','二班',1004,1005,1006)
insert into student values('王进京','男','二班',1004,1005,1006)
insert into student values('郭晶晶','女','三班',1007,1008,1009)
insert into student values('孙茂利','男','三班',1007,1008,1009)
insert into student values('王龙','男','三班',1007,1008,1009)
insert into student values('冯巩','男','三班',1007,1008,1009)
insert into student values('郭丽丽','女','三班',1007,1008,1009)
go
insert into score values(1,78,86,70)
insert into score values(2,83,81,90)
insert into score values(3,68,76,74)
insert into score values(4,75,89,80)
insert into score values(5,89,93,88)
insert into score values(6,55,66,80)
insert into score values(7,74,86,60)
insert into score values(8,90,86,69)
insert into score values(9,65,58,76)
insert into score values(10,71,84,75)
insert into score values(11,68,76,79)
insert into score values(12,78,67,76)
insert into score values(13,80,83,77)
insert into score values(14,78,96,63)
insert into score values(15,79,84,57)
go

--查询此次语文成绩最高的学生的信息
select * from student where code =(select top 1 code from score order by yufen desc)
--查询此次数学成绩最高的学生的信息
select * from student where code =(select top 1 code from score order by shufen desc)
--查询此次英语成绩最高的学生的信息
select * from student where code =(select top 1 code from score order by yingfen desc)
--查询此次语文成绩最低的学生的信息
select * from student where code =(select top 1 code from score order by yufen )
--查询此次数学成绩最低的学生的信息
select * from student where code =(select top 1 code from score order by shufen )
--查询此次英语成绩最低的学生的信息
select * from student where code =(select top 1 code from score order by yingfen )
--查询此次语文成绩最低的学生所任课教师的信息
select * from teacher where code = (select yujiao from student where code =(select top 1 code from score order by yufen ))
--查询此次数学成绩最低的学生所任课教师的信息
select * from teacher where code = (select shujiao from student where code =(select top 1 code from score order by shufen ))
--查询此次英语成绩最低的学生所任课教师的信息
select * from teacher where code = (select yingjiao from student where code =(select top 1 code from score order by yingfen ))
--查询此次语文成绩最高的学生所任课教师的信息
select * from teacher where code = (select yujiao from student where code =(select top 1 code from score order by yufen desc))
--查询此次数学成绩最高的学生所任课教师的信息
select * from teacher where code = (select shujiao from student where code =(select top 1 code from score order by shufen desc ))
--查询此次英语成绩最高的学生所任课教师的信息
select * from teacher where code = (select yingjiao from student where code =(select top 1 code from score order by yingfen desc))
--查询学生信息,将所有语文任课教师编号改为该科目的任课教师名字显示
select code ,name ,sex,banji,(select name from teacher where code = yujiao) as 语文教师 from student
--查询学生信息,将所有任课教师编号改为该科目的任课教师名字显示
select code ,name ,sex,banji,(select name from teacher where code = yujiao) as 语文教师,
(select name from teacher where code = shujiao) as 数学教师,
(select name from teacher where code = yingjiao) as 英语教师 from student
--查询各个学生的学号,姓名,语文分数,数学分数,英语分数,以及三门课里面每一门课的任课教师姓名
select student.code ,name ,score.yufen,shufen,yingfen ,
(select name from teacher where code = yujiao) as 语文教师,
(select name from teacher where code = shujiao) as 数学教师,
(select name from teacher where code = yingjiao) as 英语教师
from student join score on student.code =score.code
--查询每个班级里的语文最高分
select banji as 班级, MAX(yufen) as 语文最高分
from student join score on student.code = score.code group by banji
--查询每个班级里的数学最高分
select banji as 班级, MAX(shufen) as 语文最高分
from student join score on student.code = score.code group by banji
--查询每个班级里的英语最高分
select banji as 班级, MAX(yingfen) as 语文最高分
from student join score on student.code = score.code group by banji
--查看每个班的语文平均分
select banji,AVG(yufen) from student join score on student.code = score.code group by banji
--查询语文课程平均分最高的班级的语文教师的信息
select * from teacher where code =
(select top 1 yujiao from student where banji =
(select top 1 banji from student join score
on student.code = score.code group by banji order by AVG(yufen) desc))
--查询数学课程平均分最高的班级的数学教师的信息
select * from teacher where code =
(select top 1 shujiao from student where banji =
(select top 1 banji from student join score
on student.code = score.code group by banji order by AVG(shufen) desc))
--查询英语课程平均分最高的班级的英语教师的信息
select * from teacher where code =
(select top 1 yingjiao from student where banji =
(select top 1 banji from student join score
on student.code = score.code group by banji order by AVG(yingfen) desc))

二.变量

1.局部变量
declare @xingming varchar(50)--声明定义一个varchar类型的叫做@xingming的变量
set @xingming = '赵匡胤'--使用set关键字时一个变量一个变量的赋值
--声明一个变量和给他设置一个值需要一起执行

--更改code值为@code的人的名字为@xingming的值
update student set name=@xingming where code =@code
use lianxi
--更改code值为@code值的人的人名为李莲英
declare @code int
set @code =17
update student set name = '李莲英' where code = @code

--在查询语句中也可以给变量进行赋值
--取code值为1 的人的姓名
declare @name varchar(50)
select @name = name from student where code =1
select @name

--在查询语句中也可以给变量进行赋值(不加条件)
--不加任何条件的情况下执行以下语句,只将最后一行的name复制给@name
declare @name varchar(50)
select @name = name from student
select @name --变量是用来临时存储一个值

2.常用全局变量      @@****
--@@connections 连接次数
print @@connections -- 打印出我自从启动sql之后进行了多少次的数据库连接
--@@error 错误
insert into score values (33,44,55,66)
print @@error --执行上一个sql语句是有没有错误,没有错误返回0
--@@language 语言
print @@language --当前使用的语言
--@@rowcount row行 count数量
print @@rowcount --返回上一次执行sql语句时在表中影响的行数
--@@version 版本
print @@version --所使用的SQL的版本信息

三.运算符

--算数运算符
-- + - * / %
--关系运算符
--> < >= <= != !> !<
--逻辑运算符
--and 两个都成立
--or 两个钟只要一个成立
--any 任意一个都得成立
--between..and.. 在...之间
--exists --存在
--in 在....里面
--like 像
--not 非
declare @jia int
set @jia =10%2
set @jia =4+3
set @jia = 10-4
PRINT @jia

--运算符的优先级
--第一级:* / %
--第二级:正好负号(+)(-)
--第三级:+ -
--第四级:> < >= <= != !> !<
--第五级:not
--第六级:and or between and
--第七级:all any in like some exists
--第八级:=(等号)

--if 语句,分支语句
--写法:
--if 表达式
--begin
-- 语句
--end
--else
--begin
-- 语句
--end
--在里面只有一句语句的时候可以省略begin end
练习:

1.给老师做评教
--及格人数超过所教人数超过6人就打印优秀,否则,打印教学质量差
--查看张晓华所教学生有多少及格的(个数)
declare @sumji int
select @sumji=COUNT(*) from score where code in
(select code from Student where yujiao =
(select top 1 code from teacher where name ='张晓华') and yufen>=60)
--判断部分
if @sumji>6
begin
print '优秀'
print '继续保持'
end
else
begin
print '教学质量差'
print '好好上课'
end

2.查看数学分数最高的学生的性别,
--若是男,[这是一个男生]
--否则,[这是一个女生]
declare @sex char(10)
select @sex= sex from Student where code=(select top 1 code from score order by shufen desc)
if @sex='男'
print '这是一个男生'
else
print'这是一个女生'

3.查出年纪最大的教师的姓名和年龄,如果超过45岁,打印,【***在干几年就退休了】
--如果小于30岁,打印【***你还年轻,继续努力】
--否则,【***正当年!!】
declare @tname varchar(50)
declare @tage int
select top 1 @tname= name ,@tage= age from teacher order by age desc
if @tage>45
print @tname+ '在干几年就退休了'
if @tage<30
print @tname+'你还年轻,继续努力'
else
print @tname+'正当年!!'

SQL server 变量、运算符的更多相关文章

  1. SQL Server变量赋值的方法

    SQL Server变量赋值我们经常会遇到,下面就为您介绍SQL Server变量赋值的两种方法,希望可以对您学习SQL Server变量赋值有所帮助. SQL Server中对已经定义的SQL Se ...

  2. SQL SERVER 变量的使用和样例

    定义和使用局部变量:说明: 局部变量是用户可自定义的变量. 作用范围仅在程序内部. 局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则=>以@开 在 ...

  3. sql server 变量 字符串拼接

    参考:SQL server中null+字符串,isnull以及把查询结果赋给一个字符变量组成另一个查询语句  1.开始定义的字符串都为null.例如:declare @sql,那么@sql就是null ...

  4. SQL Server 移位运算符

    参考链接:http://dataeducation.com/bitmask-handling-part-4-left-shift-and-right-shift/ SQL Server 官网的连接:h ...

  5. 数据库开发基础-SQl Server 变量、运算符、if、while

    变量: SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. 局部变量: 使用declare关键字给变量声明,语法非常 ...

  6. (4.24)sql server变量中set与select的区别

    SET vs SELECT是SQL极客之间讨论的常见话题,也是最受欢迎的面试问题之一.SET用于为变量赋值,SELECT用于赋值或从变量/ table / view等中选择值. 让我们看看在不同场景中 ...

  7. SQL Server变量杂谈

    学习SQL的过程有进步的话还是一件很美妙的事情的 在第一家公司虽然只呆了两年,但是感觉是我进步最快的两年.那时候工作和生活都挺充实的,每天都有一点点的收获和付出,其中最大的收获莫过于掌握一些核心技能. ...

  8. SQL server 变量if,while,存储过程

    一.变量 1.if循环 2. 3.while循环 declare @ss int set @ss =2while @ss<10begin print 'Hello' set @ss=@ss+1e ...

  9. SQL Server 变量定义

    declare @id intdeclare @name char(10) --注意:char(10)为10位,要是位数小了会让数据出错set @id=1 set @name='sssss'selec ...

随机推荐

  1. Day04 - Python 迭代器、装饰器、软件开发规范

    1. 列表生成式 实现对列表中每个数值都加一 第一种,使用for循环,取列表中的值,值加一后,添加到一空列表中,并将新列表赋值给原列表 >>> a = [0, 1, 2, 3, 4, ...

  2. Win8.1 与 pl2303驱动

    在8.1上最新的pl2303驱动都不支持Win8.1了.要使用老的驱动 http://www.drv5.cn/sfinfo/9385.html 这里这个驱动里面有五个文件,通过在设备管理器里面查看串口 ...

  3. iOS UIKit:animation

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  4. CSS中Position属性

    也许你看到这个标题觉得很简单,确实这是一篇关于CSS中Position属性基础知识的文章,但是关于Position的一些细节也许你不了解. 1.简介 position有五个属性: static | r ...

  5. Java-Hirbernate中文乱码问题

    当你从前台接收的值一直到Action 里面都没有乱码的时候,然而写入数据库的时候确实乱码的 这里有几个原因: 1.你的数据库字符编码指定出问题了 当你指定varchar类型的时候,字符集一定要指定成u ...

  6. HTTP 错误 500.19- Internal Server Error 错误解决方法 分类: Windows服务器配置 2015-01-08 20:16 131人阅读 评论(0) 收藏

    1.第一种情况如下: 解决方法如下: 经过检查发现是由于先安装Framework组件,后安装iis的缘故,只需重新注册下Framework就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示 ...

  7. 字符编码笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian

    转载:http://witmax.cn/character-encoding-notes.html 今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料. 结果,这个问 ...

  8. SetConsoleCtrlHandler 处理控制台消息

    转载自csdn:http://blog.csdn.net/zhongguoren666/article/details/8770615   SetConsoleCtrlHandler 处理控制台消息 ...

  9. hadoop_并行写操作思路

    这篇文章是关于,如何修改hadoop的src以实现在client端上传大文件到HDFS的时候, 为了提高上传的效率实现将文件划分成多个块,将块并行的写入到datanode的各个block中 的初步的想 ...

  10. 设置appicon和启动图

    设置appicon General – App Icon Source 设置AppIcon 图片大小 iphone 6P(@3x) 180x180 iphone 6(@2x) iphone5/5s ( ...