赞
踩
注:数据库对字母的大小写没有强烈要求
目录
查询是数据库中最常用的操作。对于以及定义的表和视图,用户通过查询操作得到所需的信息。
要从表中查询数据,请使用SELECT语句,以下是SELECT语句最基本的形式:
SELECT(查询) *(全部) from(指定的表) table—_name
SELECT colum_name(列名) from table_name
from>where>group by>having>select>order by
通过关键字的执行顺序可以发现一下语法错误
where用于过滤查询结果中满足条件的结果,格式为:
SELECT column_name from table_name
where<条件表达式>
where子句:指出查找条件,可以使用以下运算符来限定查询结果:
(1)比较运算符:=,>,<,>=,<=,<>,!=,!>,!<
(2)字符匹配运算符:like,not like
(3)确定范围运算符:between and,not between and
(4)逻辑运算符:not,and,or
(5)集合运算符:union(并),intersect(交),except(差)
(6)集合成员运算符:in,not in
(7)聚合函数:avg(列名),min(列名),max(列名),sum(列名),count(列名/*/1)
注:逻辑运算符若要使用多个的话要考虑要求用括号来决定查询范围
代码示例:
- --查询单价大于等于1000的物品
- select product_name from product
- where sale_price>=1000
-
- --查询所以年龄在20到23的学生姓名,专业,及年龄
- select sage,sname,sdept from student
- where sage between 20 and 23
- --查询不在20到23岁之间的
- --where sage not between 20 and 23
-
- --查询厨房用具大于等于3000的商品
- select product_name from product
- where product_type='厨房用具' and sale_price>=3000
-
- --查询软件工程,电子电工的学生,查询不是的学生则在in的前面加not
- select sname,ssex from student
- where sdept='软件工程' or sdept='电工电子';
- --where sdept in('软件工程','电子电工');
-

--查询姓为林的学生
select sname,sno,ssex from student
where sname like '林%';
--查询名字中第二个字为涛的学生
select sname,sno from student
where sname like '_涛%';
like关键字中的"_","%"表示可以匹配0个或多个字符
--查询产品类别的数量
select count(distinct product_type)from product
distinct 去重关键字写在列名的前面
--查询成绩表中前三行的数据
select top 3 * from course
--查询成绩表中一半的数据
select top 50 percent * from coursepercent百分数
order by用于把数据进行有序输出,格式如下:
SELECT column_name from table_name
order by column_name [desc |asc]
desc降序关键字,asc升序关键字
SELECT语句中,order by子句是要最后处理的一个子句
group by用于查询数据过程对数据先进行分组,然后再对每个小组进行计算,而不是全表,格式如下:
SELECT column_name,expression[聚合函数...] from table_name
group by column_name
代码展示:
- --查询产品表中每个类型的数量
- select product_type,count(*) as product_type_num from product
- group by product_type
- --查询产品表中每个类型的平均价格
- select product_type,avg(sale_price)as sale_price_avg from product
- group by product_type
group by后面的列名不能使用列别名因为group by的执行顺序大于select的执行顺序
如果希望在分组的基础上要筛选满足条件的组,可以在GROUP BY子句后跟一个HAVING的子句来限定分组,格式如下:
having[ 条件]
代码展示:
- --查询产品表中类型数量大于4
- select product_type,count(*) from product
- group by product_type
- having count(*)<4
代码执行顺序为:先找到product表,然后对表中产品类型数量进行分组,再找到分好的组中产品类型数量小于4的,最后在输出
from>group by>having>select
我们可以发现有两个限定查询的关键字(where,having),让我们来分析一下二者的区别
--where作用于基本表或者视图,从中选取满足的元组,having作用于分组,从中选取满足条件的组
--where不可以使用聚合函数,而having可以使用聚合函数
--having子句总是跟在group by子句后的,不可以单独使用,而where可以独立使用
聚合函数可对一组值进行计算并返回一个单值。计算时可以满足WHERE子句条件的记录,也可以对满足的分组进行计算。聚合函数有
--COUNT(*):计算元组的个数
--COUNT(列名):计算单列中的值的计算个数
--SUM(列名):求某一列值的总和
--AVG(列名):求某一列值的均值
--mMAX(列名):求某一列值的最大
--MIN(列名):求某一列值的最小
聚合函数和算数运算符的区别
聚合函数使用若表中有NULL值则会自动跳过,算数运算符有空值计算结果就为空。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。