MS Query基础语法讲解:
一、单表查询
单表查询是指仅涉及一个表的查询
1、查询指定列
例1、查询材料进货明细表中的定额名称及规格
SELECT 定额名称,规格 FROM [材料进货明细表$]
注意:在excel中,一个工作表的表示是这样的:[工作表名称$]
select的意思是:查询
上面那一句SQL语句的意思就是:从表材料进货明细表中取出定额名称及规格的值
例2、查询材料进货明细表的详细记录
SELECT * FROM [材料进货明细表$]
等价于:
SELECT 序号, 定额名称,规格,日期,单位,数量 FROM [材料进货明细表$]
注意:*的用法
2、查询经过计算的值
例3、查询材料进货明细表的定额名称、规格、年份及数量
SELECT 定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$]
注意:里面的年份已经通过了计算的了,成为一个新的变量。
加多一列自定义的列A厂:
SELECT “A厂” ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$]
SELECT “A厂” as 工厂 ,定额名称,规格,year(日期) as 年份,数量 FROM [材料进货明细表$]
比较一下上面两句SQL语句的区别,没有as 工厂与有as 工厂的区别
二、选择表中若干元组
1、消除取重复的行
例4、查询材料进货明细表的定额名称
SELECT 定额名称 FROM [材料进货明细表$]
该查询结果会包含很多重复的行。消除重复行的话,必须指定关键词
distinct
SELECT distinct 定额名称 FROM [材料进货明细表$]
2、查询满足条件的元组
例5、查询材料进货明细表中单位为“套”的所有记录
SELECT * FROM [材料进货明细表$] where 单位= ‘套’
本句语句中,要学会where的用法:
要查询满足指定条件的元组,可以通过where子句实现。where子句查询条件是:
比较: =,>,<,>=,<=,!=,<>,!>,!<;not +上述比较运算符
确定范围: between and ,not between and
确定集合:in,not in
字符匹配:like,not like
空值:is null,is not null
多重条件:and,or,not
例6、查询材料进货明细表中数量在50—100之间的所有记录
SELECT * FROM [材料进货明细表$] where 数量 between 50 and 100
如果是不在50-100之间的话,直接改成:
SELECT * FROM [材料进货明细表$] where 数量 not between 50 and 100
例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 定额名称 not like ‘天津%’
4、涉及空值的查询
主要是以:null出现
例11、查询材料进货明细表中规格为空的的所有记录
SELECT * FROM [材料进货明细表$] where 规格 is null
5、多条件查询
例12、查询材料进货明细表中定额名称为“天津三通”的并且数量大于30的所有记录
SELECT * FROM [材料进货明细表$] where 定额名称 = ‘天津三通’ and 数量>30
三、order by 子句
desc(降序)、asc(升序)
例13、查询材料进货明细表中数量大于30的所有记录,并且要按照数量来降序排列。
SELECT * FROM [材料进货明细表$] where 数量>30 order by 数量 desc
四、聚集函数
count(distinct/all 列名):统计元组个数
sum:求和
avg:求平均值
max:最大值
min:最小值
例14、查询材料进货明细表中天津大小头的最大数量。
SELECT max(数量) FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’
或:SELECT max(数量) as 最大数量 FROM [材料进货明细表$] where 定额名称 = ‘天津大小头’
|