目录
小结:
1、简单查询
1.1、选择列的操作
查询全部的列 select * from student
查询部分列 select sno ,sname from student
1.2、选择行的操作
简单来说就是将符合条件的记录显示出来 ( WHERE 等条件句过滤)
产地的数据类型是字符型,所以需要加单引号定界符
2、条件查询
2.1、distinct
深入理解参考:https://blog.csdn.net/boss2967/article/details/79019467
部分总结:
<1> distinct 需要放在前面
<2> distinct + 字段名 => 查询结果中重复的该字段名会只出现一次
distinct + 字段名1,字段名2 [ , ..... ,字段名n]
=> 并非是对 字段名1,字段名2 两列“字符串拼接”后再去重的,而是分别作用于 字段名1 列 , 字段名2列。
<3> distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的
2.2、top
2.3、in
2.4、like
<字符表达式>可以是完整的字符串,也可以是带有通配符的字符表达式。
2.5、is null
3、统计查询
3.1、聚合函数
SQL Server中的聚合函数有十余种,常用的聚合函数及功能如下:
查询“进货信息表”中进货记录的总个数、进货数量的总和、以及进货金额的平均值、最大值和最小值。
聚合函数跟随在select后面,可以写在同一行,也可以在适当位置换行书写,函数与函数之间用逗号隔开,最后一个函数后面不加逗号。
按select语句后面函数的书写顺序显示计算结果。因使用函数得到的计算结果不是原始数据表中的数据,所以结果的字段名均显示“无列名”。
这种更名方法只修改显示结果的字段名,并不会修改原始数据表中的字段名。
新字段名可以用单引号引起来,也可以不用。建议使用。
3.2、排序 order by
可以对一个字段或者多个字段同时排序。表示先按第一个字段排序后,结果如果存在相同值,再在相同值记录中按第二个字段排序,以此类推。字段名间用逗号间隔,最后一个字段后面不加逗号。
默认按照升序排序,关键字asc可以省略。在被排序的字段名后面加desc关键字可以表示降序。
查询出“进货信息表”中进货数量最多的前3条记录。
因为不涉及记录条件筛选(没有where语句),所以order by跟随在from后面。
因为要使进货数量多的记录排在前面,所以对“进货数量”字段降序排序。
top 3用来显示前3条记录。
3.3、查询结果再分组 group by, having
对查询结果的分组小计操作
原理理解:
https://blog.csdn.net/hao1066821456/article/details/69556644
查询结果按“进货日期”字段的值归纳为四组,在select语句后使用sum函数分别求出每个日期分组中所有商品的进货数量总和和进货金额总和。
group by称之为“分组”,select后面使用函数求值称之为“小计”。
查询“进货信息表”中每种商品的进货数量和大于300的记录信息
3.4、 先排序(分组)再小计 compute…by…
对“进货信息表”中的记录按进货日期分类,统计进货数量和进货金额的和。
与group by语句不同,compute…by…语句不限制select语句后面字段列表的内容。
必须先使用order by语句按分组字段排序,升序降序均可。
两个by关键字后面的字段名必须相同。
group by 和 compute by 区别:
https://blog.csdn.net/u010706189/article/details/50441289
简单总结:
GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出现在结果集的最后。
分组小结:
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
而having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
而Compute By 也是分组,与Group By的区别在于Compute By 可以显示出细节
4、将查询结果生成新表
将“进货信息表”中进货数量少于100的记录信息挑选出来,生成一张名为“进货信息表01”的新数据表,并查看新表。
5、向已存在的数据表中添加查询结果
注意:被添加数据的已存在的数据表结构,需与使用select语句查询出的结果中的字段数量、顺序和数据类型兼容。
从“进货信息表”中查询出进货数量大于300的商品的商品编号、进货单价、进货数量、进货金额和进货日期字段,将结果添加到“进货信息表01”中,并查看添加后结果。