SQL入门重点掌握语句写法入门必备知识select列名from[表名$]一、单表查询单表查询是指仅涉及一个表的查询1、查询指定列例1、查询材料进货明细表中的定额名称及规格数据透视表SQL基础入门SELECT定额名称,规格,日期FROM[材料进货明细表$]注意:在excel中,一个工作表的表示是这样的:[工作表名称$]如果该数据源在某一区域,比如数据源在单价表的A2:D10区域,如果要引用该区域,可以写成:[单价表$A2:D10]select的意思是:查询上面那一句SQL语句的意思就是:从表材料进货明细表中取出定额名称、规格及日期的值例2、查询材料进货明细表的详细记录SELECT*FROM[材料进货明细表$]等价于:SELECT序号,定额名称,规格,日期,单位,数量FROM[材料进货明细表$]注意:*的用法,*代表数据表里面所有字段名的简写,学会用*可以减少很多字段的写法2、查询经过计算的值例3、查询材料进货明细表的定额名称、规格、年份及数量SELECT定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]注意:里面的年份已经通过了计算的了,成为一个新的变量。加多一列自定义的列A厂:SELECTA厂,定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]SELECTA厂as工厂,定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]比较一下上面两句SQL语句的区别,没有as工厂与有as工厂的区别二、选择表中若干元组1、消除取重复的行例4、查询材料进货明细表的定额名称SELECT定额名称FROM[材料进货明细表$]该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词distinctSELECTdistinct定额名称FROM[材料进货明细表$]2、查询满足条件的元组例5、查询材料进货明细表中单位为“套”的所有记录SELECT*FROM[材料进货明细表$]where单位='套'本句语句中,要学会where的用法:要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是:比较:=,,,=,=,!=,,!,!;not+上述比较运算符确定范围:betweenand,notbetweenand确定集合:in,notin字符匹配:like,notlike空值:isnull,isnotnull多重条件:and,or,not例6、查询材料进货明细表中数量在50—100之间的所有记录SELECT*FROM[材料进货明细表$]where数量between50and100如果是不在50-100之间的话,直接改成:SELECT*FROM[材料进货明细表$]where数量notbetween50and100例7、查询材料进货明细表中单位为“只”或“支”的所有记录SELECT*FROM[材料进货明细表$]where单位in('只','支')3、字符匹配可以用like来实现,通配符%和_a、%代表任意长度的字符串,如a%b表示以a开头,以b结尾的任意的字符串b、_代表任意单个字符例8、查询材料进货明细表中定额名称以“天津”开头的所有记录SELECT*FROM[材料进货明细表$]where定额名称like'天津%'例9、查询材料进货明细表中定额名称以“天津”开头且字符为4个的所有记录SELECT*FROM[材料进货明细表$]where定额名称like'天津__'例10、查询材料进货明细表中定额名称不以“天津”开头的所有记录SELECT*FROM[材料进货明细表$]where定额名称notlike'天津%'4、涉及空值的查询主要是以:null出现例11、查询材料进货明细表中规格为空的的所有记录SELECT*FROM[材料进货明细表$]where规格isnull5、多条件查询例12、查询材料进货明细表中定额名称为“天津三通”的并且数量大于30的所有记录SELECT*FROM[材料进货明细表$]where定额名称='天津三通'and数量30三、orderby子句desc(降序)、asc(升序)例13、查询材料进货明细表中数量大于30的所有记录,并且要按照数量来降序排列。SELECT*FROM[材料进货明细表$]where数量30orderby数量desc四、聚集函数count(distinct/all列名):统计元组个数sum:求和avg:求平均值max:最大值min:最小值例14、查询材料进货明细表中天津大小头的最大数量。SELECTmax(数量)FROM[材料进货明细表$]where定额名称='天津大小头'或:SELECTmax(数量)as最大数量FROM[材料进货明细表$]where定额名称='天津大小头'五、union与unionall之间的区别及使用UNION集合,用于将投影出两个表的相关信息。然而使用UNION所有被选列需要是相同的数据类型,但会消除重复行UNIONALL,类似于UNION,但不会消除重复行。在语句性能方面,由于UNION需要检测并消除重复行,因此性能低于UNIONALL,反之,在结果的准确性方面UNION要优于UNIONALLSELECT定额名称,规格,日期FROM[材料进货明细表$]注意:在excel中,一个工作表的表示是这样的:[工作表名称$]如果该数据源在某一区域,比如数据源在单价表的A2:D10区域,如果要引用该区域,上面那一句SQL语句的意思就是:从表材料进货明细表中取出定额名称、规格及日期的值SELECT序号,定额名称,规格,日期,单位,数量FROM[材料进货明细表$]注意:*的用法,*代表数据表里面所有字段名的简写,学会用*可以减少很多字段的写法例3、查询材料进货明细表的定额名称、规格、年份及数量SELECT定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]注意:里面的年份已经通过了计算的了,成为一个新的变量。SELECTA厂,定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]SELECTA厂as工厂,定额名称,规格,year(日期)as年份,数量FROM[材料进货明细表$]比较一下上面两句SQL语句的区别,没有as工厂与有as工厂的区别该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词SELECT*FROM[材料进货明细表$]where单位='套'要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是:比较:=,,,=,=,!=,,!,!;not+上述比较运算符例6、查询材料进货明细表中数量在50—100之间的所有记录SELECT*FROM[材料进货明细表$]where数量between50and100SELECT*FROM[材料进货明细表$]where数量notbetween50and100例7、查询材料进货明细表中单位为“只”或“支”的所有记录SELECT*FROM[材料进货明细表$]where单位in('只','支')a、%代表任意长度的字符串,如a%b表示以a开头,以b结尾的任意的字符串例8、查询材料进货明细表中定额名称以“天津”开头的所有记录SELECT*FROM[材料进货明细表$]where定额名称like'天津%'例9、查询材料进货明细表中定额名称以“天津”开头且字符为4个的所有记录SELECT*FROM[材料进货明细表$]where定额名称like'天津__'例10、查询材料进货明细表中定额名称不以“天津”开头的所有记录SELECT*FROM[材料进货明细表$]where定额名称notlike'天津%'SELECT*FROM[材料进货明细表$]where规格isnull例12、查询材料进货明细表中定额名称为“天津三通”的并且数量大于30的所有记录SELECT*FROM[材料进货明细表$]where定额名称='天津三通'and数量30例13、查询材料进货明细表中数量大于30的所有记录,并且要按照数量来降序排列。SELECT*FROM[材料进货明细表$]where数量30orderby数量desc例14、查询材料进货明细表中天津大小头的最大数量。SELECTmax(数量)FROM[材料进货明细表$]where定额名称='天津大小头'或:SELECTmax(数量)as最大数量FROM[材料进货明细表$]where定额名称='天津大小头'UNION集合,用于将投影出两个表的相关信息。然而使用UNION所有被选列需要是相同的数据类型,但会消除重复行在语句性能方面,由于UNION需要检测并消除重复行,因此性能低于UNIONALL,反之,在结果的准确性方面UNION要优于UNIONALL序号定额名称规格日期单位数量1钢管DN652006/12/26支252镀管DN402006/12/31支503镀管DN652006/12/31支104镀管DN802006/12/31支75镀管DN1002006/12/31支156角钢L402006/12/31支1007角钢L302006/12/31支1008镀管DN252007/1/1支509镀管DN322007/1/1支5010镀管DN502007/1/1支3011镀管DN1502007/1/1支2012天津大小头50*322007/1/4只2013天津大小头65*322007/1/4只514天津大小头65*402007/1/4只315天津大小头80*652007/1/4只516天津大小头80*322007/1/4只217天津大小头40*252007/1/4只518天津大小头65*502007/1/4只2519天津大小头50*402007/1/4只4020天津大小头40*322007/1/4只15021天津大小头32*252007/1/4只14022天津三通802007/1/4只223天津三通652007/1/4只3024天津三通502007/1/4只5025天津三通402007/1/4只3026天津三通322007/1/4只2027天津三通252007/1/4只20028天津三通65*502007/1/4只329天津三通80*502007/1/4只430天津三通40*322007/1/4只431天津三通65*402007/1/4只232天津三通50*252007/1/4只1033天津三通40*252007/1/4只1034天津三通32*252007/1/4只1035天津三通50*322007/1/4只536天津三通65*322007/1/4只337天津三通80*702007/1/4只538天津三通80*322007/1/4只639天津三通80*402007/1/4只340天津四通32*252007/1/4只15041天津四通40*252007/1/4只4642天津弯头252007/1/4只5043天津弯头322007/1/4只5044天津弯头402007/1/4只5045天津弯头502007/1/4只5046天津弯头652007/1/4只6047天津四通65*252007/1/4只448天津四通50*252007/1/4只10049机械三通165*322007/1/4只2250机械三通165*502007/1/4只1051机械三通165*402007/1/4只1652机械三通114*502007/1/4只253机械三通100*322007/1/4只554机械三通100*652007/1/4只855沟槽弯头165*90度2007/1/4只1056沟槽弯头114*90度2007/1/4只1057沟槽三通1652007/1/4只258开边法兰1652007/1/4片1259沟槽三通1142007/1/4只560沟槽犬箍1142007/1/4只5061开边法兰1142007/1/4片1062沟槽大小头165*252007/1/4只163沟槽大小头165*652007/1/4只564沟槽大小头114*802007/1/4只565上海麻丝2007/1/4Kg2566生料