MSSQL基础学习--查询
2006-05-23 10:23
253 查看
人物表:
能力表:
1.Select
2.Into
3.From
4.Where
5.Group by
6.Having
7.Compute 与 Compute by
8.Union
9.Join On
10.嵌套查询
能力表:
1.Select
select all 性别 from people --将返回27个值,虽然内容都是"男"和"女" select distinct 性别 from people --只会显示两个值"男"和"女" select top 5 性别 from people --只显示前5条检索到的信息 select top 30 percent 性别 from people --显示前30%检索到的信息
2.Into
--将people表中的姓名列检索出,并放在tempTable里,如果不存在tempTable表,则新建 select 姓名 into tempTable from people
3.From
--我们要看看不同的统率力下的带兵数量,而统率和士兵并不在同一个表中 select PersonPower.统率,people.士兵 from PersonPower join People on People.姓名 = PersonPower.武将
4.Where
select 武将 from PersonPower where 武力!>90 --查询武力不大于90的武将 --查询条件为智力不在70--100之间 select 武将,智力 from PersonPower where 智力 not between 70 and 100 --查询条件是否为空值 select * from People where 姓名 is not null --查询是否为枚举中的值 select 姓名 from People where 姓名 not in('曹操','刘备','孙权') --查询姓氏为"黄"的两个字名字,这里结果为'黄忠'和'黄盖' select 姓名 from People where 姓名 like('黄_') --查询姓氏为"黄"的所有名字,这里结果为'黄忠'、'黄盖'、'黄月瑛' select 姓名 from People where 姓名 like('黄%') --查询以H-Z字母开头的记录,这里以pubs数据库为例,结果为Thomas select lname from Employee where lname like('[H-Z]homas') --查询不以字母T开头的记录 select lname from Employee where lname like('[^T]%') --假如数据中本身带有通配符,如:My_Name@163.com,则使用逃逸字符'Escape'来说明 select eMail from Mail where eMail like ('My#_Name%') escape '#'
5.Group by
--统计各个阵营的带兵总数 select 阵营,性别,sum(士兵) as 士兵总数 from People group by 性别,阵营
[align=center]阵营[/align] | [align=center]性别[/align] | [align=center]士兵总数[/align] |
[align=center]蜀国[/align] | [align=center]男[/align] | [align=center]376570[/align] |
[align=center]蜀国[/align] | [align=center]女[/align] | [align=center]9980[/align] |
[align=center]魏国[/align] | [align=center]男[/align] | [align=center]312650[/align] |
[align=center]魏国[/align] | [align=center]女[/align] | [align=center]4550[/align] |
[align=center]吴国[/align] | [align=center]男[/align] | [align=center]353500[/align] |
[align=center]吴国[/align] | [align=center]女[/align] | [align=center]17540 [/align] |
--Cube的用法,显示所有的组合 select 阵营,性别,sum(士兵) as 士兵总数 from People group by 阵营,性别 with cube
[align=center]阵营[/align] | [align=center]性别[/align] | [align=center]士兵总数[/align] |
[align=center]蜀国[/align] | [align=center]男[/align] | [align=center]376570[/align] |
[align=center]蜀国[/align] | [align=center]女[/align] | [align=center]9980[/align] |
[align=center]蜀国[/align] | [align=center]NULL[/align] | [align=center]386550[/align] |
[align=center]魏国[/align] | [align=center]男[/align] | [align=center]312650[/align] |
[align=center]魏国[/align] | [align=center]女[/align] | [align=center]4550[/align] |
[align=center]魏国[/align] | [align=center]NULL[/align] | [align=center]317200[/align] |
[align=center]吴国[/align] | [align=center]男[/align] | [align=center]353500[/align] |
[align=center]吴国[/align] | [align=center]女[/align] | [align=center]17540[/align] |
[align=center]吴国[/align] | [align=center]NULL[/align] | [align=center]371040[/align] |
[align=center]NULL[/align] | [align=center]NULL[/align] | [align=center]1074790[/align] |
[align=center]NULL[/align] | [align=center]男[/align] | [align=center]1042720[/align] |
[align=center]NULL[/align] | [align=center]女[/align] | [align=center]32070[/align] |
--Rollup的用法,只匹配Group by第一分组条件 select 阵营,性别,sum(士兵) as 士兵总数 from People group by 阵营,性别 with rollup
[align=center]阵营[/align] | [align=center]性别[/align] | [align=center]士兵总数[/align] |
[align=center]蜀国[/align] | [align=center]男[/align] | [align=center]376570[/align] |
[align=center]蜀国[/align] | [align=center]女[/align] | [align=center]9980[/align] |
[align=center]蜀国[/align] | [align=center]NULL[/align] | [align=center]386550[/align] |
[align=center]魏国[/align] | [align=center]男[/align] | [align=center]312650[/align] |
[align=center]魏国[/align] | [align=center]女[/align] | [align=center]4550[/align] |
[align=center]魏国[/align] | [align=center]NULL[/align] | [align=center]317200[/align] |
[align=center]吴国[/align] | [align=center]男[/align] | [align=center]353500[/align] |
[align=center]吴国[/align] | [align=center]女[/align] | [align=center]17540[/align] |
[align=center]吴国[/align] | [align=center]NULL[/align] | [align=center]371040[/align] |
[align=center]NULL[/align] | [align=center]NULL[/align] | [align=center]1074790[/align] |
--Having子句作用于组,而Where子句作用于表和视图,Having主要用来对计算的结果进一步筛选 --这个将最后结果筛选掉了只有一个女将的魏国 select 性别,count(*) from People where 性别='女' group by 性别 having count(*)>1
7.Compute 与 Compute by
--Compute将在最后添加一行表示计算结果的数据,而Compute by与Group by功能类似,也是用于计算,但Compute by能产生多个结果集 select 姓名,士兵 from People Compute sum(士兵) --最后有一行sum为1074790 --按阵营分成三组结果集,然后每组结果集最后都有一行总和值 select 姓名,士兵,阵营 from People Order by 阵营 Compute sum(士兵) by 阵营
8.Union
--Union用于联合多个查询结果集,且默认为删除重复记录,如要显示全部,加上all --假设我们要得到多个表的所有姓名 select 姓名 from People union --这里如果加上all的话,将显示出相同记录 select 武将 from PersonPower
9.Join On
--Join用于连接两个不同的表,On用于给出这两个表之间的连接条件 insert into People values(28,'胡晓伟','男','中国',88888) --People中插入一条新记录 --内联接:默认联接形式,返回两个表中所有匹配的行 select * from People Join PersonPower On People.姓名 = PersonPower.武将 --左向外联接:匹配join左边的表,如果在右边并没有相应记录,则置为NULL --这个例子里,'胡晓伟'将被显示,personPower里的记录为NULL select * from People left Join PersonPower On People.姓名 = PersonPower.武将 --右向外联接:同上,匹配join右边的表 select * from PersonPower right Join People On People.姓名 = PersonPower.武将 --完整外联接:同时匹配两个表 select * from People full Join PersonPower On People.姓名 = PersonPower.武将 --交叉连接:返回两个表中记录的笛卡儿乘积,这里On关键字不能用 select * from People cross Join PersonPower
10.嵌套查询
--单值比较 select 武将 from PersonPower where 武将 = (select 姓名 from People where 姓名='曹操') --In --查询魏国武将的属性值 select * from PersonPower where 武将 in (select 姓名 from People where 阵营='魏国') --All --查询统率力最小的武将 select 武将,统率 from PersonPower where 统率 <= all(select 统率 from PersonPower) --Some(任意一个值) --查询统率力不是最小的武将(最小的那个记录不满足>关系,其它的至少能比一个值大) select 武将,统率 from PersonPower where 统率 > some(select 统率 from PersonPower) --Exists(表之间的关系,不必对应到具体列,这是和In的最大区别) --查询蜀国武将的姓名及武力 select 武将,武力 from PersonPower where exists(select * from people where PersonPower.武将=People.姓名 and 阵营='蜀国') --Not Exists --查询非蜀国武将的姓名及武力 select 武将,武力 from PersonPower where not exists(select * from people where PersonPower.武将=People.姓名 and 阵营='蜀国')
相关文章推荐
- Oracle基础学习二之统计函数及分组查询
- java 从零开始,学习笔记之基础入门<SQL_Server_常用查询>(二十二)
- C#学习笔记(八)—–LINQ查询的基础知识(下)
- 每日学习 SQL基础查询
- MySQL中表子查询与关联子查询的基础学习教程
- 【学习笔记】mysql查询执行的基础
- 简单分页查询(web基础学习笔记十三)
- 阿里物联网套件-服务端SDK学习实践(基础篇-9根据设备名称查询设备信息)
- LINQ 之查询基础学习笔记(一)
- 数据库基础学习2——数据查询
- 数据库学习(三)----基础查询和关联查询
- Oracle基础学习之子查询
- ArcGIS Engine基础开发教程(5)——学习地图查询
- 学习SQL【3】-查询基础
- MySQL中表子查询与关联子查询的基础学习教程
- Oracle基础学习五 : PACKAGE(包) 新建包 加入项 修改项 删除项 访问项 查询包 删除包
- MySQL基础学习之数据查询
- mongodb学习记录之一:基础查询
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- MSSQL基础学习(1)