## 数据库的查询
> 当用户登陆到SQL server 2008 时,即被指定到一个数据库,一般为 master 数据库,但是要想使用我们自己的数据库,就要进行转换。语句为 use database name,其中 database name 是要选中为当前数据库的数据库名称。
```sql例如:use pxscjgo(将数据库选定为 名为 pxscj 数据库)```选定数据库后接下来我们就开始来学习查询。sql 最基本的语句 “ select ”规则如下:
其中,使用 ‘ * ’ 来表示一个表中的所有行。例:
```sqluse pxscjgoselect *from xsbgo查询 pxscj 数据库中的 xsb 表 的全部内容```使用select语句选择一个表中的某些列,各列之间要以逗号(,)分割例:
```sqlselect 姓名,专业,总学分 from xsbgo在 xsb 表中查询各个学生的姓名,专业,总学分```
sql server 2008中还能一次执行多个查询。
其中 还可以定义列别名。例
```sql查询 xsb 表中各个学生的学号,姓名,总学分,并且依次将标题指定为:number,name,markselect 学号 as number,姓名 as name,总学分 as mark from xsbgo
其中 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 总学分 > 50go在 where 语句中 还可以引入逻辑运算符例如 not and or```
替换查询中的数据
- 要替换查询中的数据,则要使用查询中 case表达式 - 格式为: -
例:
```sqluse pxscj goselect 学号,姓名,等级 = case when 总学分 is null then '尚未选课' when 总学分 < 50 then '不及格' when 总学分 >= 50 and 总学分 <=53 then '及格' else '优秀' end from xsb where 专业 = '计算机'go```
- 消除重复行对表只选择某些列时,会出现重复行,为了消除重复的数据,我们使用 distinct例
```sqlselect distinct 学号,总学分 from xsb```
- 限制结果集返回行数 如果select 语句返回的结果集非常的多,那么可以使用 TOP 选项限制其返回的行数。 例:
```sqlselect top 6 姓名,专业,总学分 from xsbgo```**聚合函数**
- 最重要,最常用的五个 : 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'```
- 模式匹配 (模糊搜索) -
```sqlselect * from xsb where 姓名 like '王_'go查询xsb 表中姓王 的同学的情况```
- 范围比较 (in)
```sqlselect * from xsb where 专业 in ('计算机','通信工程')go查询 xsb 表中专业为 ‘计算机’或‘通信工程’ 专业学生的情况。```