## 数据库的查询
> 当用户登陆到SQL server 2008 时,即被指定到一个数据库,一般为 master 数据库,但是要想使用我们自己的数据库,就要进行转换。语句为 use database name,其中 database name 是要选中为当前数据库的数据库名称。
```sql
例如:
use pxscj
go
(将数据库选定为 名为 pxscj 数据库)
```
选定数据库后接下来我们就开始来学习查询。
sql 最基本的语句 “ select ”
规则如下:
其中,使用 ‘ * ’ 来表示一个表中的所有行。
例:
```sql
use pxscj
go
select *
from xsb
go
查询 pxscj 数据库中的 xsb 表 的全部内容
```
使用select语句选择一个表中的某些列,各列之间要以逗号(,)分割
例:
```sql
select 姓名,专业,总学分
from xsb
go
在 xsb 表中查询各个学生的姓名,专业,总学分
```
sql server 2008中还能一次执行多个查询。
其中 还可以定义列别名。
例
```sql
查询 xsb 表中各个学生的学号,姓名,总学分,并且依次将标题指定为:number,name,mark
select 学号 as number,姓名 as name,总学分 as mark
from xsb
go
其中 as 也可以用 ‘=’ 来带替
例
number = 学号 顺序相反
当 替换名中含有空格时, 要用''来括起来
例
'Student number' = 学号
```
- 与select 连用的 where 子句
where 是 select 的查询条件,where 语句必须紧跟在from子句的后面,
例
```sql
查询 xsb 表中学号为‘081101’的同学的情况
select *
from xsb
where 学号 = '081101'
```
也可以用于比较
例
```sql
查询 xsb 表中 总学分 大于50 的同学的情况
select *
from xsb
where 总学分 > 50
go
在 where 语句中 还可以引入逻辑运算符例如 not and or
```
替换查询中的数据
- 要替换查询中的数据,则要使用查询中 case表达式
- 格式为:
-
例:
```sql
use pxscj
go
select 学号,姓名,等级 =
case
when 总学分 is null then '尚未选课'
when 总学分 < 50 then '不及格'
when 总学分 >= 50 and 总学分 <=53 then '及格'
else '优秀'
end
from xsb
where 专业 = '计算机'
go
```
- 消除重复行
对表只选择某些列时,会出现重复行,为了消除重复的数据,我们使用 distinct
例
```sql
select distinct 学号,总学分
from xsb
```
- 限制结果集返回行数
如果select 语句返回的结果集非常的多,那么可以使用 TOP 选项限制其返回的行数。
例:
```sql
select top 6 姓名,专业,总学分
from xsb
go
```
**聚合函数**
- 最重要,最常用的五个 : SUM AVG MAX MIN COUNT
```sql
例
select count(*) as '学生总数'
from xsb
select sum(成绩) as '课程101的总成绩'
from xsb
where 课程号 = '101'
select avg(成绩) as '课程101的平均成绩'
from xsb
where 课程号 = '101'
select max(最大成绩) as '课程101的最大成绩'
from xsb
where 课程号 = '101'
select min(最小成绩) as '课程101的最小成绩'
from xsb
where 课程号 = '101'
```
```sql
select *
from xsb
where 姓名 like '王_'
go
查询xsb 表中姓王 的同学的情况
```
```sql
select *
from xsb
where 专业 in ('计算机','通信工程')
go
查询 xsb 表中专业为 ‘计算机’或‘通信工程’ 专业学生的情况。
```
**下一篇 写子查询**