SQL Server知识梳理三数据增删改查(二)

2014-11-24 17:08:02 · 作者: · 浏览: 1
、实例
(1)单表查询
①查询学生表的所有记录
select * from 学生表
②查询学号为‘1005’的学生信息
select *from学生信息
where 学号='1005'
③在“人事管理系统”数据库“员工信息”表中,查询工龄大于4年的员工信息
select *from员工信息
where year(getdate())-year(入职时间)>4
④查询学生的籍贯字段不为空的记录
select *from学生信息
where 籍贯 is not null
⑤查询姓名第一个字符是‘张’且姓名共两个字符的学生信息
select *from学生信息
where 姓名 like '张_'
⑥查询学生姓名中带有“丽”字或“娜”字的学生信息
select *from学生信息
where 姓名like'%丽%'or姓名like'%娜%'
⑦查询教师表的职称字段有哪几种取值
select distinct职称from教师信息
(2)分页查询
①查询学生信息中前5条记录
select top 5 * from 学生信息
②查询学生信息中前20%条记录
select top 20 percent * from学生信息
(3)聚集函数
①统计学生表中所有男生的信息,并将查询结果字段命名为“男生总人数”
select COUNT(*) as男生总人数from学生信息
where 性别='男'
②根据籍贯查询各省学生人数,并显示省份和人数信息
select 籍贯as省份,count(*)as学生人数from学生信息
group by 籍贯
③按课程号计算选课表中各门课程的平均分,总分
select 课程编号,AVG(成绩)as平均分,SUM(成绩)as总分from成绩表
group by 课程编号
④查询员工表中2000年以后入职的姓名,政治面貌字段,并按政治面貌分组显示查询结果
select 员工姓名,政治面貌from员工信息
where 入职时间>'2000'and
政治面貌 in(
select 政治面貌from员工信息
group by政治面貌)
(4)连接(多表)查询
①查询参加考试的学生姓名,课程名,成绩信息
方法一:
select 姓名,课程名称,成绩
from 学生信息,课程信息,成绩表
where 学生信息.学号=成绩表.学号and
课程信息.课程编号=成绩表.课程编号
方法二:
select 姓名,课程名称,成绩
from 学生信息t1,课程信息t2,成绩表t3
where t1.学号=t3.学号and
t2.课程编号=t3.课程编号
②查询出所有考试及格的学生的成绩信息,包括学生的学号、姓名、性别、年级、班级编号及考试成绩,并且按照成绩进行降序排列
select 学生信息.学号,姓名,性别,年级,班级编号,成绩
from 学生信息,成绩表
where 学生信息.学号=成绩表.学号and
成绩>=60
order by 成绩 desc
③询所有学生的考试成绩信息,包括学生学号、姓名、课程编号和成绩信息。
方法一:左外连接
select a.学号,a.姓名,b.课程编号,b.成绩
from 学生信息aleft outerjoin 成绩表bon a.学号=b.学号
方法二:右外连接
select a.学号,a.姓名,b.课程编号,b.成绩
from 学生信息aright outerjoin 成绩表b ona.学号=b.学号
方法三:全外连接
select a.学号,a.姓名,b.课程编号,b.成绩
from 学生信息 a full outerjoin成绩表b ona.学号=b.学号
(5)嵌套查询
①查询成绩低于分的学生姓名
select 姓名from学生信息
where 学号in(
select 学号from成绩表
where 成绩>85)
或连接(多表)查询
select 姓名from学生信息,成绩表
where 学生信息.学号=成绩表.学号and
成绩>85
②查询平均成绩大于的课程信息。
select *from课程信息
where 课程编号in(
select 课程编号from成绩表
group by课程编号
having avg(成绩)>70)
③查询出最高成绩(比任意学生成绩都高)的学生的学号信息
select *from学生信息
where 学号in(
select 学号from成绩表
where 成绩>=all(select成绩from成绩表))
④查询出不是最低成绩的学生的学号信息
select *from学生信息
where 学号in(
select 学号from成绩表
where 成绩>=any(select成绩from成绩表))
(6)集合查询
①“人事管理系统”数据库的“员工信息”表中,查询“所任职位”为“经理”的员工编号和员工姓名信息,并为其增加新列“所在位置”,列的内容为“员工信息表”;从“部门信息”表中查询所有的部门编号和部门名称信息,并定义新增列的内容为“部门信息表”;最后将两个查询结果联合在一起。
select 员工编号,员工姓名,'员工信息表' as所在位置from员工信息
where 所任职位='经理'
union
select 部门编号,部门名称,'部门信息表'
from 部门信息
(7)关于查询的其他操作
①创建一个学生补考表,表中数据来自成绩表,条件为成绩小于60分,要求补考表中仅显示学生的学号和补考课程的编号。
select 学号,课程编号
into 补考表
from 成绩表
where 成绩<60
②创建新表:及格成绩表(学号,课程号,成绩),并将选课表中所有及格成绩的记录插入到新表中
select 学生信息.学号,课程编号,成绩
into 及格表
from 学生信息,成绩表
where 学生信息.学