第六章 数据查询与管理
操作
1、select 查询
*是全部查询,可以直接查询一列。
也可以使用小技巧进行查询,例如12*13的使用,可以直接查询156,这里查询的好像不是数据库中本来的数据。
查询结果中重复出现记录,可以加入distinct关键字,消除重复记录。
select distinct 民族 from 学生信息
简单粗暴的查询方式,是使用where子句设置查询条件,
还可以使用或、且的关系进行查询,and是且的关系,or是或的关系;使用like关键字,加上通配符,可以直接查询出河南的人,后面的具体地址不计。
select * from 学生信息 where 民族='汉族' and 性别='女'
select * from 学生信息 where 家庭住址 like '河南%'
2、insert 插入
insert into语句:
需要确定要插入的数据表的结构:与数据表中的列对应。
然后执行就可以,如果有数据类型不符合的,会有提示。
如果是限制性地 插入,需要前后对应的插入。需要注意的是是否是非空,非空列必须进行输入。
Insert into 学生信息(学号,姓名,出生日期) values('20051002','梨花','女','20050210')
Insert ……select语句
把学生信息表中的信息插入到学生信息1的表中,类似于复制。
或者是加入限制:只插入限定的几列。
Insert 学生信息1()
Select * from 学生信息 where 家庭住址
Insert…… into 语句
Select 查看的列
Into 新插入的数据表
使用这个语句会新建一个数据表,而不是保存在原有的数据表中。
select * into #学生信息1 from 学生信息 where 性别='男'
3、update 更新
更新语句,用来对已经完成的记录进行修改。
Select * from 学生信息
Update 学生信息 set 姓名='张是' where 学号='170'
在update语句中使用from子句。
加入where子句进行限制,只查询女生。
select * from studentinfo
update studentinfo set s_sex=b.性别,s_address=b.家庭住址,s_id=b.学号
from studentinfo a join 学生信息 b on a.s_name=b.姓名
where b.性别='女'
4、delete 删除
Delete 性别 from 学生信息
函数
查询最高分的时候,使用max函数。
查看分数使用order by函数进行降序排序。
使用top函数进行限定查询的数量。
select top 3 分数 from 成绩信息 where 考试编号='0201'
order by 分数 DESC
子句
1、Order by排序
Order by 语句,默认是升序,后加asc是升序,后加Desc是降序。
当有数据并列的时候,可以添加辅助的排序列。两个并列的后排序,靠前的那个是排序的那个。
当有数据相同的时候,可以根据再加入的第二个选择项进行二次排序。
还可以直接选择项的顺序改变一下,进行二次排序,这种情况下的排序可以让两种排序不一样,一个升序一个降序。
select * from 成绩信息 where 考试编号='2008' and 课程编号='1'
order by 分数,学生编号 DESC
'order by 分数 DESC, 学生编号
2、 group by 分组
加上rollup或者是cube关键字,求出所有的平均值。
区别:使用两个限定的时候。
使用rollup关键字,先对第一个限定进行汇总,求平均值,然后在对整个汇总进行求平均值。
使用cube关键字,就可以对后面的限定进行平均,然后在对前面的限定进行平均,最后再对整体的限定进行平均。
select AVG(分数) from 成绩信息 where 考试编号='0801'
'select 考试编号,课程编号, AVG(分数) from 成绩信息 where 考试编号='0801' group by rollup(课程编号)
'select 考试编号,课程编号,AVG(分数) from 成绩信息 group by cube(考试编号,课程编号)
'select 考试编号,课程编号,AVG(分数) from 成绩信息 group by rollup(考试编号,课程编号)
3、使用HAVING子句进行筛选。
在使用group by的基础上。使用order by的子句。
可以对聚合的结果再添加一个筛选的条件,让子句更加贴近我们所要求的。
select 考试编号,课程编号,AVG(分数) from 成绩信息 group by 考试编号,课程编号
having AVG(分数)>=90
order by 考试编号
4、 TOP关键字和TOP表达式
显示前10条记录:
Select TOP 10 * from 成绩信息。
Select TOP 10 percent * from 成绩信息
加入with ties子句是,需要加入order by子句进行排序,然后使用top子句进行排序,加入with ties子句可以让重复记录也显示。
declare @i int
set @i=20
select top (6) with ties * from 成绩信息 order by 分数
5、compute子句
查询结果生成之后对结果进行合计。
在查询结果之后,加入orderby子句,查询结果分开。
select * from 成绩信息 where 课程编号=2 order by 考试编号
compute sum(分数),AVG(分数),max(分数),min(分数) by 考试编号
6、where子句
使用where子句进行限定条件。
select * from 成绩信息 where 考试编号=2 and 分数 not in(85)