数据库个人笔记(3) -- 基础篇

## 数据库的查询

> 当用户登陆到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 表中姓王 的同学的情况
```

- 范围比较 (in)

 

 

```sql
select *
from xsb
where 专业 in ('计算机','通信工程')
go
查询 xsb 表中专业为 ‘计算机’或‘通信工程’ 专业学生的情况。
```


**下一篇 写子查询**

 
posted on 2019-12-03 18:34  好啊郝  阅读(259)  评论(0编辑  收藏  举报