1. 最简单的select语句的结构
a) 从指定的表中查询所有的数据
select * from 表名
其中,* 号代表表中所有的字段, from 后面给出数据的来源,可以是个表也可以是个视图。
b) 从指定的表中查询部分字段的数据
select 字段1,字段2,字段3,....from 表名
只查询select后面列出的字段中的数据。当然,如果列出所有的字段,那么和上面写 * 作用相同。
c) 在SQL Server中select 语句的from子句不是必须的,如果select 要查询的数据不是来自某个表,如查询常量表达式的值或查询某个函数的值,那么可以省略from 子句。
查询当前的系统日期和时间:select GETDATE()
为查询的字段名增加个列标题
字段名 as 列标题
为了消除在查询结果集中出现完全相同的记录,那么可以在select关键字的后面添加distinct关键字
TOP n [PERCENT] 关键字的使用
a) 可以在top关键字后面写个整数n,表示前 多少行。
b) 也可以top关键字后面写: n percent,表示前 百分之 多少。
where子句的使用
where子句中给出一个关系表达式或逻辑表达式,那么查询结果中只包含满足这个条件的记录。
使用的模糊查询运算符
order by子句的使用
通过ORDER BY子句,可以将查询结果进行排序显示。
a) 关键字ASC表示按升序排列,可省略;关键字DESC表示按降序排列。
b) order by子句的位置始终在select语句的最后面,其他的子句都应在它的前面。因为order by子句是最后一个被执行的。
c) 在order by 子句的后面,可以给出多个排序字段,此时排序是:先按照第一个字段值的升序或降序排列,当第一个字段值出现重复值的时候,这些行再按照第二个排序字段值的升序或降序排列。
d) 每个排序字段的后面都应给出自己的排序关键字,可以省略。但不要理解为多个字段可以使用同一个排序关键字。如,order by 字段1,字段2 desc 该语句的意思其实是指,字段1按升序排序,字段2按降序排序。
into子句的使用
a) 可以在select语句中使用into子句将查询的结果存入一个新建的表中。
b) 每次执行该语句时,就会创建一个新表
c) 格式:
select *|字段列表 into 新表 from 已有的表 where 查询条件
查询结果集的运算
1. union all:将前后两个查询结果集进行连接,结果中的记录的个数等于原来的两个查询结果集的记录的行数之和。不消除重复行。
select * from t1
union all
select * from t2
2. union:将前后两个查询结果集进行连接,消除重复行。
select * from t1
union
select * from t2
3. intersect:取两个查询结果集中的记录的交集。
select * from t1
intersect
select * from t2
avg() 平均值 max() 最大值 min() 最小值 sum()求和
count() 统计所有行或满足条件的行的给定字段或表达式的有值的个数
count(*) :该函数一般用在不加where条件的查询中,用于统计表中的总行数
使用group by子句
a) 使用group by 子句可以将查询结果集中的记录进行分组,并进行汇总。
b) 包含group by 子句的查询语句的格式:(注意,各个子句的位置)
c) 在select语句中使用该子句时,特别要注意以下几点:
i. 对查询结果分组时,系统会将group by后面的字段(即分组字段,当然也可以是有关字段的表达式)值相同的行(记录)当做一组。
ii. 将查询结果分组后,每个组在查询结果中只显示一行该组的统计信息。
iii. select语句中一旦有了分组子句(即group by子句),那么select
关键字的后面只能包含分组的字段或分组表达式,以及其他非分组字段(没有参与分组的字段)的聚合函数(上面介绍的)表达式。
如果包含where子句,那么只对满足where条件的记录进行分组汇总。
SELECT column_name1[,…n]
FROM table_name
WHERE search_condition
GROUP BY colum_name1[,…n]
[ HAVING search_condition ]
[order by 字段 asc|desc]
使用having 子句
a) having 子句也是筛选行的子句,只不过,该子句是在group by子句分组后得到的所有组中进行筛选的。因此,having子句是配合group by子句使用的。
b) 因此,对查询结果分组后再添加条件,应该使用having子句。
内连接:
关键字
inner join
格式:from 表1 inner join 表2 on 表1.公共字段=表2.公共字段 一般情况下,on关键字后面都会选择”=”等号进行两个表连接的比较条件
左外连接
关键字:
left outer join 左外连接是显示左表中的所有行,和右表中的与左表匹配的行。
右外连接
关键字:
right outer join 得到的记录集是:内连接的结果+右表中的找不到匹配的剩余行
完全外连接
关键字:full outer join
得到的记录集是:内连接的结果+左表中的找不到匹配的剩余行+右表中的找不到匹配的剩余行