SQL Server 查询语句

注:数据库对字母的大小写没有强烈要求

目录

1、 SELECT语句中关键字执行顺序

2、限定查询范围关键字:WHERE

 (1)模糊查询关键字:LIKE

(2)过滤重复关键字:DISTINCT

(3)查询前几行数据的关键字:TOP

3、ORDER BY排序查询

4、GROUP BY分组查询

 (1)分组后限定查询关键字:HAVING

5、聚合函数

查询是数据库中最常用的操作。对于以及定义的表和视图,用户通过查询操作得到所需的信息。

要从表中查询数据,请使用SELECT语句,以下是SELECT语句最基本的形式:

SELECT(查询) *(全部) from(指定的表) table—_name
SELECT colum_name(列名) from table_name

1、 SELECT语句中关键字执行顺序

from>where>group by>having>select>order by

通过关键字的执行顺序可以发现一下语法错误 

2、限定查询范围关键字:WHERE

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('软件工程','电子电工');

 (1)模糊查询关键字:LIKE

--查询姓为林的学生
select sname,sno,ssex from student
where sname like '林%';
--查询名字中第二个字为涛的学生
select sname,sno from student
where sname like '_涛%';

like关键字中的"_","%"表示可以匹配0个或多个字符

(2)过滤重复关键字:DISTINCT

--查询产品类别的数量

select count(distinct product_type)from product

distinct 去重关键字写在列名的前面

(3)查询前几行数据的关键字:TOP

--查询成绩表中前三行的数据

select top 3 * from course

--查询成绩表中一半的数据
select top 50 percent * from course

percent百分数

3、ORDER BY排序查询

order by用于把数据进行有序输出,格式如下:

SELECT column_name from table_name 

order by column_name [desc |asc]

desc降序关键字,asc升序关键字

SELECT语句中,order by子句是要最后处理的一个子句 

4、GROUP 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的执行顺序

 (1)分组后限定查询关键字:HAVING

如果希望在分组的基础上要筛选满足条件的组,可以在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可以独立使用

5、聚合函数

聚合函数可对一组值进行计算并返回一个单值。计算时可以满足WHERE子句条件的记录,也可以对满足的分组进行计算。聚合函数有

 --COUNT(*):计算元组的个数

 --COUNT(列名):计算单列中的值的计算个数

 --SUM(列名):求某一列值的总和

 --AVG(列名):求某一列值的均值

 --mMAX(列名):求某一列值的最大

 --MIN(列名):求某一列值的最小

聚合函数和算数运算符的区别

聚合函数使用若表中有NULL值则会自动跳过,算数运算符有空值计算结果就为空。


你可能感兴趣的:(数据库,sql,oracle)