SQLserver运维必备:T-SQL语句练习
2017-04-11 22:02
387 查看
小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260
-------谢谢您的参考,如有疑问,欢迎交流案例一:表如下图所示
![](https://s2.51cto.com/wyfs02/M00/8F/D4/wKiom1js4OTQCe74AAFm0AN9I3g838.jpg)
实验需求:
1.在products表中查询出厂日期晚于2014年4月的水果信息语句:select * from products where 出厂日期>'2014-04-30' and 种类='水果' 2.在products表中分组查询所有水果、蔬菜、坚果的总成本语句:select 种类,SUM(成本) as 总成本from products group by 种类 3.在products表中查询所有水果的信息,并按照成本从高到低的顺序显示结果语句:select * from products where 种类='水果' order by 成本 desc 4.在products表中查询成本在1—5元之间的蔬菜信息语句:select * from products where 种类='蔬菜' and 成本 between 1 and 5 5.将products表中所有水果的名称、种类和出厂日期信息插入到新表products_new中语句:select 名称,种类,出厂日期 intoproducts_new from products where 种类='水果' select *
from products
where出厂日期>='2011-04-01' and 种类='水果'
select SUM(成本) as 总成本,种类
from products
group by 种类
select *
from products
where种类='水果'
order by 成本 desc.
select *
from products
where种类='蔬菜' and 成本 between '1' and'5'
select名称,种类,出厂日期
into products_new
from products
where种类='水果'
案例二:表如下图所示
![](https://s4.51cto.com/wyfs02/M01/8F/D3/wKioL1js4QXRFFYxAAAXKop4qd0013.gif)
![](https://s4.51cto.com/wyfs02/M02/8F/D4/wKiom1js4Qbjch_5AAIS0UNZ11A174.jpg)
实验需求:1、在products表和sales表中查询产品的名称、种类、成本、销售地点和销售价格。语句:select products.名称,products.种类,products.成本,sales.销售地点,sales.销售价格From products,salesWhere products.名称=sales.名称 或者:select a.名称,a.种类,a.成本,b.销售地点,b.销售价格From products as a inner join sales as b on a.名称=b.名称 2、在products表和sales表中查询销往海南的产品名称、种类、成本和销售价格。语句:select products.名称,products.种类,products.成本,sales.销售价格From products,salesWhere products.名称=sales.名称 and 销售地点=’海南’
select products.名称,products.种类,products.成本,sales.销售价格,sales.销售地点
from products inner join sales
on products.名称=sales.名称
select products.名称,products.种类,products.成本,sales.销售价格,sales.销售地点
from products inner join sales
on products.名称=sales.名称
where销售地点='海南'
案例三:表如下图所示
![](https://s1.51cto.com/wyfs02/M02/8F/D4/wKiom1js4RWz5MHUAAEwDWXWrYI287.jpg)
实验需求:
1、查询王明的成绩?结果:王明 90
Select 姓名,成绩 from student where 姓名=’王明’
2、给王明加2分?Update student set 成绩=成绩+2 where 姓名=’王明’
3、查询备注不为空的学生?Select * from student where 备注 is not null
4、查询成绩大于95分以上的学生?Select * from student where 成绩>95
5、王明转学,把王明删掉?Delete from student where 姓名=‘王明’
6、来了一位新同学,名字叫于美丽?Insert into student values(20,’于美丽’,’110110110’,3,100,’勤奋好学’)
7、查询成绩大于95分,并且班级是2班的都有谁?Select * from student where 成绩>95 and 所在班级=2
8、查询成绩大于95分,并且班级是1、2班的都有谁?Select * from student where 成绩>95 and 所在班级 between1 and 2
9、查询平均成绩?Select avg(成绩) as 平均成绩 from student
10、使用truncate删除所有的数据
Truncate table student
select成绩
from [student-1]
where姓名='王明'
update [student-1]
set成绩=成绩+2
where姓名='王明'
select *
from [student-1]
where备注 is not null
select *
from [student-1]
where成绩>'95'
delete
from [student-1]
where姓名='王明'
insert into [student-1]
(姓名) values ('于美丽')
select *
from [student-1]
where成绩>='95' and 所在班级='2'
select *
from [student-1]
where成绩>='95' and 所在班级 between '1' and'2'
select AVG(成绩) as 平均成绩
from [student-1]
truncate table Student
实验案例四:表如下图所示
![](https://s2.51cto.com/wyfs02/M01/8F/D4/wKiom1js4S_xfn1IAAHKEJ3R9HI727.jpg)
实验需求:
1、显示表中全部内容
select * from 员工信息表
2、显示工资大于5000员工的所有信息
select * from 员工信息表
where 工资>=5000
3、显示所有在1950到1988年之间出生员工的所有信息
select * from 员工信息表
where 出生日期>='1950'and 出生日期<='1988'
4、查询出所有住在昌平的员工
select * from 员工信息表
where 家庭住址 like '%昌平%'
5、所有销售员的工资涨幅1000
update 员工信息表
set 工资=工资+1000
where 职位='销售员'
6、删除工资小于3000员工的记录
delete from 员工信息表
where 工资<=3000
7、所有经理的工资下调10%
update 员工信息表
set 工资=工资*0.9
where 职位 like '%经理'
select *
from员工信息表
select *
from员工信息表
where工资>='5000'
select *
from员工信息表
where出生日期 between '1950' and'1988'
select *
from员工信息表
where职位 like '%经理%'
update员工信息表
set工资=工资+1000
where职位='销售员'
delete
from员工信息表
where工资<'3000'
update员工信息表
set工资=工资*0.9
where职位 like '%经理'
案例五:表如下图所示
![](https://s3.51cto.com/wyfs02/M00/8F/D4/wKiom1js4UChEAyDAAD9Jtxa0_I701.jpg)
1、查询年龄大于35,小于 50,并且职位是员工?
语句:select * from 员工信息表
where 年龄>35 and 年龄<50 and 职位='员工'
2、查询员工的平均年龄?
语句:select AVG(年龄) as 平均年龄 from 员工信息表
3、查询各种职位的平均年龄,并且按照每种职位的平均年龄降序排序?
语句:select 职位,AVG(年龄) as 平均年龄 from 员工信息表
group by 职位
order by AVG(年龄) desc
4、查询年龄最大和最小的人是谁?
语句:select 员工姓名,年龄 from 员工信息表
where 年龄=(select MAX(年龄)
from 员工信息表)
5、查询每种职位有多少人?并且按每种职位的人数升序排序?
语句:select 职位,COUNT(员工id) as 人数
from 员工信息表
group by 职位
6、查询年龄大于等于50岁和小于30岁的都有哪些人?
语句:select * from 员工信息表
where 年龄>=50 or 年龄<30
select *
from [员工信息表-2]
where职位='员工' and 年龄 between '35' and'50'
select AVG(年龄) as 平均年龄
from [员工信息表-2]
select AVG(年龄) as 平均年龄,职位
from [员工信息表-2]
group by 职位
order by AVG(年龄) desc
select年龄,员工姓名
from [员工信息表-2]
where年龄=( select MAX(年龄) from [员工信息表-2])
or年龄=( select MIN(年龄) from [员工信息表-2])
select COUNT(职位) as 人数,职位
from [员工信息表-2]
group by 职位
order by COUNT(职位) asc
select *
from [员工信息表-2]
where年龄>='50' or 年龄<='30'
案例六:表如下图所示
![](https://s5.51cto.com/wyfs02/M01/8F/D4/wKiom1js4WThZ_1vAAC8mdKrEzc157.jpg)
![](https://s4.51cto.com/wyfs02/M02/8F/D3/wKioL1js4WTwPIDyAACReggULC4290.jpg)
![](https://s5.51cto.com/wyfs02/M01/8F/D3/wKioL1js4WTCeHrqAADp1y5DNxw139.jpg)
![](https://s4.51cto.com/wyfs02/M00/8F/D4/wKiom1js4WXyuuuQAACZynY-JCk839.jpg)
![](https://s4.51cto.com/wyfs02/M02/8F/D4/wKiom1js4WXiYP7OAADM6XXn2ak372.jpg)
![](https://s4.51cto.com/wyfs02/M00/8F/D3/wKioL1js4WbxegH-AACULeNF0oM473.jpg)
![](https://s5.51cto.com/wyfs02/M02/8F/D3/wKioL1js4WawupjiAAChqGR2_08537.jpg)
![](https://s5.51cto.com/wyfs02/M01/8F/D4/wKiom1js4WaTjS34AAFB9KCFZX4088.jpg)
![](https://s1.51cto.com/wyfs02/M00/8F/D4/wKiom1js4WeRjEGLAAE1wRfcPNs564.jpg)
![](https://s1.51cto.com/wyfs02/M00/8F/D3/wKioL1js4WfQ4XOAAABuW5SXRlc487.jpg)
![](https://s1.51cto.com/wyfs02/M01/8F/D3/wKioL1js4WeA7kEyAADA_N62Gbo766.jpg)
实验需求:
1、两个表查询
select 学生表.姓名,学生表1.电话,学生表1.家庭住址
from 学生表,学生表1
where 学生表.学生id=学生表1.学生id
2、三个表的查询
select 学生表.姓名,课程表.课程名,成绩表.分数
from 学生表,课程表,成绩表
where 学生表.学生id=成绩表.学生id AND 成绩表.课程ID=课程表.课程ID
3、合并两个结果集
SELECT 姓名,学号,班级,国籍
FROM 二班
UNION
select 姓+' '+名,学号,班级,国籍
from 一班
order by 班级 desc,学号 asc
4、内联接(查找参加考试的学生的姓名和CNT成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S INNER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
5、左外连接(查找本班学生的姓名和CNT才成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S LEFT OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
6、右外连接(查找参加本次考试的学生的姓名和CNT才成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S RIGHT OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
7、完全连接(查找所有学生的考试情况)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S FULL OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
8、自连接(查找每个员工的上司姓名)
SELECT Y.员工姓名,s.员工姓名 AS 上司姓名
from 员工信息表 as y inner join 员工信息表 as s
on y.上司ID=S.员工ID
9、子查询(查找每个季度的生产数量,百分比)
select 季度,sum(生产数量) AS 每个季度的生产数量,
str((sum(生产数量)/(select sum(生产数量) from 生产表))*100)+'%' AS 百分比
from 生产表
group by 季度
order by 季度
10、在where子句中使用SELECT ,查找课程ID=1并且成绩〉80的学生
select 学生表.姓名
from 学生表
where 80<(select 分数 from 成绩表
where 学生表.学生ID=成绩表.学生ID AND 成绩表.课程ID=1)
11、交叉连接SELECT T.教师姓名,c.课程名
from 教员基本信息表 AS t cross join 课程表 AS C
-------谢谢您的参考,如有疑问,欢迎交流案例一:表如下图所示
![](https://s2.51cto.com/wyfs02/M00/8F/D4/wKiom1js4OTQCe74AAFm0AN9I3g838.jpg)
实验需求:
1.在products表中查询出厂日期晚于2014年4月的水果信息语句:select * from products where 出厂日期>'2014-04-30' and 种类='水果' 2.在products表中分组查询所有水果、蔬菜、坚果的总成本语句:select 种类,SUM(成本) as 总成本from products group by 种类 3.在products表中查询所有水果的信息,并按照成本从高到低的顺序显示结果语句:select * from products where 种类='水果' order by 成本 desc 4.在products表中查询成本在1—5元之间的蔬菜信息语句:select * from products where 种类='蔬菜' and 成本 between 1 and 5 5.将products表中所有水果的名称、种类和出厂日期信息插入到新表products_new中语句:select 名称,种类,出厂日期 intoproducts_new from products where 种类='水果' select *
from products
where出厂日期>='2011-04-01' and 种类='水果'
select SUM(成本) as 总成本,种类
from products
group by 种类
select *
from products
where种类='水果'
order by 成本 desc.
select *
from products
where种类='蔬菜' and 成本 between '1' and'5'
select名称,种类,出厂日期
into products_new
from products
where种类='水果'
案例二:表如下图所示
![](https://s4.51cto.com/wyfs02/M01/8F/D3/wKioL1js4QXRFFYxAAAXKop4qd0013.gif)
![](https://s4.51cto.com/wyfs02/M02/8F/D4/wKiom1js4Qbjch_5AAIS0UNZ11A174.jpg)
实验需求:1、在products表和sales表中查询产品的名称、种类、成本、销售地点和销售价格。语句:select products.名称,products.种类,products.成本,sales.销售地点,sales.销售价格From products,salesWhere products.名称=sales.名称 或者:select a.名称,a.种类,a.成本,b.销售地点,b.销售价格From products as a inner join sales as b on a.名称=b.名称 2、在products表和sales表中查询销往海南的产品名称、种类、成本和销售价格。语句:select products.名称,products.种类,products.成本,sales.销售价格From products,salesWhere products.名称=sales.名称 and 销售地点=’海南’
select products.名称,products.种类,products.成本,sales.销售价格,sales.销售地点
from products inner join sales
on products.名称=sales.名称
select products.名称,products.种类,products.成本,sales.销售价格,sales.销售地点
from products inner join sales
on products.名称=sales.名称
where销售地点='海南'
案例三:表如下图所示
![](https://s1.51cto.com/wyfs02/M02/8F/D4/wKiom1js4RWz5MHUAAEwDWXWrYI287.jpg)
实验需求:
1、查询王明的成绩?结果:王明 90
Select 姓名,成绩 from student where 姓名=’王明’
2、给王明加2分?Update student set 成绩=成绩+2 where 姓名=’王明’
3、查询备注不为空的学生?Select * from student where 备注 is not null
4、查询成绩大于95分以上的学生?Select * from student where 成绩>95
5、王明转学,把王明删掉?Delete from student where 姓名=‘王明’
6、来了一位新同学,名字叫于美丽?Insert into student values(20,’于美丽’,’110110110’,3,100,’勤奋好学’)
7、查询成绩大于95分,并且班级是2班的都有谁?Select * from student where 成绩>95 and 所在班级=2
8、查询成绩大于95分,并且班级是1、2班的都有谁?Select * from student where 成绩>95 and 所在班级 between1 and 2
9、查询平均成绩?Select avg(成绩) as 平均成绩 from student
10、使用truncate删除所有的数据
Truncate table student
select成绩
from [student-1]
where姓名='王明'
update [student-1]
set成绩=成绩+2
where姓名='王明'
select *
from [student-1]
where备注 is not null
select *
from [student-1]
where成绩>'95'
delete
from [student-1]
where姓名='王明'
insert into [student-1]
(姓名) values ('于美丽')
select *
from [student-1]
where成绩>='95' and 所在班级='2'
select *
from [student-1]
where成绩>='95' and 所在班级 between '1' and'2'
select AVG(成绩) as 平均成绩
from [student-1]
truncate table Student
实验案例四:表如下图所示
![](https://s2.51cto.com/wyfs02/M01/8F/D4/wKiom1js4S_xfn1IAAHKEJ3R9HI727.jpg)
实验需求:
1、显示表中全部内容
select * from 员工信息表
2、显示工资大于5000员工的所有信息
select * from 员工信息表
where 工资>=5000
3、显示所有在1950到1988年之间出生员工的所有信息
select * from 员工信息表
where 出生日期>='1950'and 出生日期<='1988'
4、查询出所有住在昌平的员工
select * from 员工信息表
where 家庭住址 like '%昌平%'
5、所有销售员的工资涨幅1000
update 员工信息表
set 工资=工资+1000
where 职位='销售员'
6、删除工资小于3000员工的记录
delete from 员工信息表
where 工资<=3000
7、所有经理的工资下调10%
update 员工信息表
set 工资=工资*0.9
where 职位 like '%经理'
select *
from员工信息表
select *
from员工信息表
where工资>='5000'
select *
from员工信息表
where出生日期 between '1950' and'1988'
select *
from员工信息表
where职位 like '%经理%'
update员工信息表
set工资=工资+1000
where职位='销售员'
delete
from员工信息表
where工资<'3000'
update员工信息表
set工资=工资*0.9
where职位 like '%经理'
案例五:表如下图所示
![](https://s3.51cto.com/wyfs02/M00/8F/D4/wKiom1js4UChEAyDAAD9Jtxa0_I701.jpg)
1、查询年龄大于35,小于 50,并且职位是员工?
语句:select * from 员工信息表
where 年龄>35 and 年龄<50 and 职位='员工'
2、查询员工的平均年龄?
语句:select AVG(年龄) as 平均年龄 from 员工信息表
3、查询各种职位的平均年龄,并且按照每种职位的平均年龄降序排序?
语句:select 职位,AVG(年龄) as 平均年龄 from 员工信息表
group by 职位
order by AVG(年龄) desc
4、查询年龄最大和最小的人是谁?
语句:select 员工姓名,年龄 from 员工信息表
where 年龄=(select MAX(年龄)
from 员工信息表)
5、查询每种职位有多少人?并且按每种职位的人数升序排序?
语句:select 职位,COUNT(员工id) as 人数
from 员工信息表
group by 职位
6、查询年龄大于等于50岁和小于30岁的都有哪些人?
语句:select * from 员工信息表
where 年龄>=50 or 年龄<30
select *
from [员工信息表-2]
where职位='员工' and 年龄 between '35' and'50'
select AVG(年龄) as 平均年龄
from [员工信息表-2]
select AVG(年龄) as 平均年龄,职位
from [员工信息表-2]
group by 职位
order by AVG(年龄) desc
select年龄,员工姓名
from [员工信息表-2]
where年龄=( select MAX(年龄) from [员工信息表-2])
or年龄=( select MIN(年龄) from [员工信息表-2])
select COUNT(职位) as 人数,职位
from [员工信息表-2]
group by 职位
order by COUNT(职位) asc
select *
from [员工信息表-2]
where年龄>='50' or 年龄<='30'
案例六:表如下图所示
![](https://s5.51cto.com/wyfs02/M01/8F/D4/wKiom1js4WThZ_1vAAC8mdKrEzc157.jpg)
![](https://s4.51cto.com/wyfs02/M02/8F/D3/wKioL1js4WTwPIDyAACReggULC4290.jpg)
![](https://s5.51cto.com/wyfs02/M01/8F/D3/wKioL1js4WTCeHrqAADp1y5DNxw139.jpg)
![](https://s4.51cto.com/wyfs02/M00/8F/D4/wKiom1js4WXyuuuQAACZynY-JCk839.jpg)
![](https://s4.51cto.com/wyfs02/M02/8F/D4/wKiom1js4WXiYP7OAADM6XXn2ak372.jpg)
![](https://s4.51cto.com/wyfs02/M00/8F/D3/wKioL1js4WbxegH-AACULeNF0oM473.jpg)
![](https://s5.51cto.com/wyfs02/M02/8F/D3/wKioL1js4WawupjiAAChqGR2_08537.jpg)
![](https://s5.51cto.com/wyfs02/M01/8F/D4/wKiom1js4WaTjS34AAFB9KCFZX4088.jpg)
![](https://s1.51cto.com/wyfs02/M00/8F/D4/wKiom1js4WeRjEGLAAE1wRfcPNs564.jpg)
![](https://s1.51cto.com/wyfs02/M00/8F/D3/wKioL1js4WfQ4XOAAABuW5SXRlc487.jpg)
![](https://s1.51cto.com/wyfs02/M01/8F/D3/wKioL1js4WeA7kEyAADA_N62Gbo766.jpg)
实验需求:
1、两个表查询
select 学生表.姓名,学生表1.电话,学生表1.家庭住址
from 学生表,学生表1
where 学生表.学生id=学生表1.学生id
2、三个表的查询
select 学生表.姓名,课程表.课程名,成绩表.分数
from 学生表,课程表,成绩表
where 学生表.学生id=成绩表.学生id AND 成绩表.课程ID=课程表.课程ID
3、合并两个结果集
SELECT 姓名,学号,班级,国籍
FROM 二班
UNION
select 姓+' '+名,学号,班级,国籍
from 一班
order by 班级 desc,学号 asc
4、内联接(查找参加考试的学生的姓名和CNT成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S INNER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
5、左外连接(查找本班学生的姓名和CNT才成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S LEFT OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
6、右外连接(查找参加本次考试的学生的姓名和CNT才成绩,电话)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S RIGHT OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
7、完全连接(查找所有学生的考试情况)
select s.姓名,s.电话,c.CNT
FROM 学生基本信息表 AS S FULL OUTER JOIN 学生成绩表 AS C
ON S.姓名=C.姓名
8、自连接(查找每个员工的上司姓名)
SELECT Y.员工姓名,s.员工姓名 AS 上司姓名
from 员工信息表 as y inner join 员工信息表 as s
on y.上司ID=S.员工ID
9、子查询(查找每个季度的生产数量,百分比)
select 季度,sum(生产数量) AS 每个季度的生产数量,
str((sum(生产数量)/(select sum(生产数量) from 生产表))*100)+'%' AS 百分比
from 生产表
group by 季度
order by 季度
10、在where子句中使用SELECT ,查找课程ID=1并且成绩〉80的学生
select 学生表.姓名
from 学生表
where 80<(select 分数 from 成绩表
where 学生表.学生ID=成绩表.学生ID AND 成绩表.课程ID=1)
11、交叉连接SELECT T.教师姓名,c.课程名
from 教员基本信息表 AS t cross join 课程表 AS C
相关文章推荐
- SQLserver运维必备:T-SQL语句简介
- 用一条SQL语句从SQLServer的表中取出指定的行数
- 用Sql语句生成Sqlserver数据字典
- 入侵网站必备Sql语句:(经典语句)
- sql语句在sqlserver中根据字段名查询,看哪些表包含了这个字段
- 直接用SQL语句把DBF导入SQLServer
- 查询SQLSERVER某个表所占用空间大小的SQL语句
- sqlserver如何用企业管理器和sql语句两种方式创建用户?
- 用Sql语句生成Sqlserver数据字典^_^
- 将sqlserver中的datetime字段变为yyyy-mm-dd格式字符串的sql语句
- 用Sql语句生成Sqlserver数据字典
- SQL 查询语句练习
- sql语句编程手册(实用+练习)
- 入侵网站必备Sql语句:(经典语句)
- 用Sql语句生成Sqlserver数据字典
- 用Sql语句生成Sqlserver数据字典(备份)
- 直接用SQL语句把DBF导入SQLServer
- SQLServer管理常用SQL语句
- 记下一条使用SQLServer 2000 T-SQL中日期函数比较多的一个SQL语句
- 将SQLServer中表按其结构生成SQl插入语句