练习1 eg:
有一张表T_Scores,记录比赛成绩
Date Name Score
2008-8-8 拜仁 胜
2008-8-9 奇才 胜
2008-8-9 湖人 胜
2008-8-10 拜仁 负
2008-8-8 拜仁 负
2008-8-12 奇才 胜
要求输出下面的格式 <注:在中文字符串前面加N,比如N‘胜’>
Name 胜 负
拜仁 1 2
湖人 1 0
奇才 2 0
代码:1:
<一步一步慢慢实现>
select Name,
(
case Score
when N'胜' then 1
else 0
end
)as 胜,
(
case Score
when N'负' then 1
else 0
end
) as 负
from Scores
代码:2
select Name,
SUM(
case Score
when N'胜' then 1
else 0
end
)as 胜,
SUM(
case Score
when N'负'then 1
else 0
end
)as 负
from Scores
group by Name
<实现要求的输出,如上面的代码2所示。>
全表扫描:对数据进行检索(select)效率最差的是全表扫描,一条条的找。
**目录就是索引。
**创建索引的方式
----表—右键--创建索引---添加--在列中选择索引包含的列--确定。
**使用索引能提高查询效率但是其占空间,而且添加,更新,删除数据时需要同步索引,因此
会降低速度。只在经常检索的字段上面创建索引。
(*)即使创建了索引,有时也需要全表扫描,比如like,函数,类型转换等。
表连接 <join>
Join用法:
主要有Inner Join 及 Outer Join:
最常用的(默认是Inner):
Select <要选择的字段> From <主要资料表>
<Join 方式> <次要资料表> [On <Join 规则>]
Inner Join 的主要精神就是 exclusive , 叫它做排他性吧! 就是讲 Join 规则不相符的资料就会被排除掉, 譬如讲在 Product 中有一项产品的供货商代码 (SupplierId), 没有出现在 Suppliers 资料表中, 那么这笔记录便会被排除掉
Outer Join:
Select <要查询的字段> From <Left 资料表>
<Left | Right> [Outer] Join <Right 资料表> On <Join 规则>
语法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本质上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查询结果会包含所有 Left 资料表的资料, 颠倒过来讲, Right Outer Join 的查询就会包含所有 Right 资料表的资料
子查询
将一个查询语句作为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. <可以使用表的地方都可以使用子查询来代替>
select * from
(select * from Student where Age>20)
as 姓名
<只有返回且仅返回一行,一列数据的子查询才能当成单值子查询>
select rom_number() over( order by Age DESC) as romnum
Name,Age,Chinese,Math from Student
<rom_number>不能应用在Where语句的查询中。
********这一阶段的数据库看完了,自己也掌握了很多的数据库的查询,建表,更新,删除等语句,下面应该就是ADO.NET的学习,这个就是要把vs和数据库连接起来,实现二者的互动。自己对于数据库的理解还只是处于初级阶段,还有更多的知识等着我去学习,不敢在放肆的玩了,要加油,为了我更早的成为大神。