一:学会select查询
①select语句基本应用:
select子句
指定字段名
ALL与DISTINCT -------我们平时不写的话,就代表的是All ,当我们加入Distinct后,就不会出现重复的数据(去重)
使用字段別名 -----------字段别名我们只能在我们的select 查询显示的时候用,它的使用范围是受限制的。
使用表別名----------------表别名是不受限制的
where子句 ------------条件
Order by 子句----------排序
GROUP BY子句--------分组
②select的语法
SELECT select_list [INTO new_table] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression[ASC | DESC] ]
③设置指定的字段
①*:代表查询数据表中所有的字段 示例 查询JOBS数据表中所有的字段。 SELECT * FROM JOBS ②column_name:只要查询数据表中的某些字段时,就直接将欲查询的字段列出,字段与字段之间要用逗号相隔。 示例 查询EMPLOYEE表中的多个字段。 SELECT fname,lname,minit,emp_id,job_id FROM EMPLOYEE ③expression:利用表达式来指定字段,表达式的内容可以是字段名、常数、函数…等的组合 。 示例 利用SQL语法的表达式子句计算书店的利润。 SELECT title 书名, ((price * ytd_sales) * CAST( ( (100-royalty) / 100.0 ) AS MONEY)) AS 年收入 FROM titles WHERE royalty <> 0
④ALL与Distinct的区别
SELECT子句后加上ALL的功能是指定结果集内可显示有重复数据的数据列。 而加入DISTINCT参数后,则代表所查询的结果中如果有重复的多笔数据,将只会显示一笔数据。 SQL Server 的默认值是ALL,因此通常不须使用ALL参数,只有在不显示重复数据时才要用DISTINCT来指定。
⑤TOP的使用(Sql server 的)前几条记录
参数TOP n [PERCENT] 如果想查询数据表中的最前面n笔记录,可以利用TOP n 的指令。(n为介于0到 4294967295 之间的整数。) 示例 使用参数TOP的SELECT查询语句。 select top 2 * from cv_Po
⑥TOP (PERCENT) 的前百分之几的数据
如果同时指定 PERCENT,则结果集只输出头n个百分比的数据列。以 PERCENT 指定时,n 必须为介于 0 到 100 之间的整数 示例 使用TOP n [PERCENT]的SELECT查询语句。 select top 20 percent * from cv_Po
⑦习题视图中有一笔记录“金额”不等于“单价*数量”,请找出来
找出我们采购过的物料名称(要求结果集不重复)
二:对From的新的了解(SELECT语句加上FROM子句,是用来设置要查询的数据源,如数据表名称、视图名称,语法如下:)
SELECT语句加上FROM子句,是用来设置要查询的数据源,如数据表名称、视图名称,语法如下: FROM table_name [ [AS] table_alias ] [ ,….n] 或 FROM { table_name1[ [AS] table_alias ] } [ INNER | {{LEFT | RIGHT | FULL } [ OUTER ] } ] JOIN table_name2 [AS] table_alias ] ON search_condition| < table_source > CROSS JOIN<table_source> } [ , … n]
三:内连接,左连接,右连接,全连接
四:兄弟们这个是重点啊(看懂他,会写的sql会越来越多)底下又有列子
习题:
五:where 的使用
SELECT语句若加上WHERE子句时,是用来设置查询条件,以便过滤需要的数据。其语法如下: [ WHERE <search_condition> ] 参数: <search_condition>:设置条件 示例 使用WHERE参数指定关联条件。 USE PUBS SELECT titles.title, titleauthor.title_id FROM titles, titleauthor WHERE titles.title = titleauthor.title_id
①inner join 与where 的区别(一般我们选择用inner join)
②where与having可以同时存在
select jCode,jName,sum(jQty) from jProduct where jCode like '%0123%' group by jCode,jName having sum(jQty)>100 上面这句的执行过程大致应该是这样的 先根据where条件子句进行过来 再根据group by子句进行聚合 最后再根据having子句对聚合结果进行过滤
③order by 的使用
如果想将查询的结果做排序,可使用ORDER BY子句,语法如下: ORDER BY { order_by_expression [ ASC | DESC ]} [ ,...n ] 参数 order_by_expression:设定排序的依据,可用字段名、字段别名或字段值的表达式。来作为排序依据的字段可以不是SELECT子句所查询的字段,但如果是使用SELECT DISTINCT就一定必须是。 另外,我们亦可以使用大于0的整数,来表示所要依照SELECT列表中的第几个项目值做为排序,例如2,即代表用SELECT的第二个字段排序。 ASC:以升序的方式或由小至大的方式来排序。但NULL将被视为最小的值。 DESC:以降序的方式或由大至小的方式来排序。但NULL将被视为最小的值。
列:
六:group by 的使用
当需要显示分组的汇总数据时,就应使用GROUP BY子句。该子句的功能是根据指定的列将表中数据分成多个组后进行汇总 其语法格式为: SELECT column_name1[,…n] FROM table_name WHERE search_condition GROUP BY [ ALL ]colum_name1[,…n] [ HAVING search_condition ]
①:分组的条件
使用GROUP BY分组,每个组在结果集中只有一行。 SELECT子句中指定的列必须是分组字段,其它字段要与聚合函数一起使用。 如果包含WHERE子句,则只对满足WHERE条件的行进行分组汇总。 HAVING子句与Group by一起使用,进一步排除不满足条件的组。 select 供应商,sum(金额) as '订货总金额' from cv_po group by 供应商
②聚合函数
avg:对数值类型的字段值求平均,忽略 Null 值。 count:对记录进行计数。 max:返回最大值。 min:返回最小值。 sum:对某个数值型字段进行求和。
列:
示例2:统计向各个供应商订货的次数,找出订货次数一次以上的供应商 select FSupplyID,count(*) as 订货次数 from po group by FSupplyID Having count(FID)>1