SQL语句之查询

一、 查询(select)

1.简单查询

select  *  from 表名;  (查询所有列)

在这里插入图片描述

select 字段1,字段2,… from 表名; (查询指定列)
在这里插入图片描述
在select语句中可使用as语句(起别名):select 字段 as 别名 from 表名;
在这里插入图片描述

2.带where子句的查询

2.1比较运算符

(1) > < <= >= = <> 大于、小于、大于(小于)等于、不等于
在这里插入图片描述
在这里插入图片描述
(2)between … and … 显示在某一区间的值

对float类型数据,between…and…取值范围是左开右闭区间(>最小值,<=最大值)
对int类型数据,between…and…取值范围是闭区间(>=最小值,<=最大值)

在这里插入图片描述
在这里插入图片描述
(3)in() 显示在in列表中的值
在这里插入图片描述
在这里插入图片描述
(4)like ‘_a%’ 模糊查询
like语句中,%代表零个或多个任意字符,_代表一个字符,例:‘_a%’ 表示第二个字符是a的字符串。
在这里插入图片描述
在这里插入图片描述
(5)is null 判断是否为空
在这里插入图片描述

2.2逻辑运算符

(1)and 多个条件同时成立
在这里插入图片描述
(2)or 多个条件任一成立
在这里插入图片描述
(3)not 不成立
例:not like; is not null
在这里插入图片描述

二、 数据表的排序、聚合、分组命令

1. 排序子句(order by)

语句:

order  by  指定排序的列   (asc 升序(默认) / desc 降序)

order by子句对查询结果进行排序,order by子句一般位于select语句的结尾。
在这里插入图片描述

2. 常用聚合函数

(1) distinct 对某一列数据去重

select  distinct 列名 from 表名; (显示此列不重复的数据)

在这里插入图片描述

(2) count 统计总行数

count(*):包括所有列,返回表中的总行数,在统计结果的时候,不会忽略列值为null的行数。
count(1):包括所有行,1表示一个固定值,没实际含义,在统计结果的时候,不会忽略列值为null的行数,和count(*)区别是执行效率不同。

在这里插入图片描述

count(列名):只包括列名指定列,返回指定列的行数,在统计结果的时候,不统计列值为null,即列值为null的行数不统计在内。

在这里插入图片描述

count(distinct 列名):返回指定列的不重复的行数,在统计结果的时候,会忽略列值为null的行数(不包括空字符串和0),即只有列值为null的行数不统计在内。

在这里插入图片描述

(3) max/min/avg/sum 最大值/最小值/平均值/求和

max/min函数返回满足where条件的一列的最大/最小值;

select  max(列名)  from 表名  where 条件;
select  min(列名)  from 表名  where  条件;

在这里插入图片描述
avg函数返回满足where条件的一列的平均值;

select  avg(列名)  from  表名  where  条件;

sum函数对返回满足where条件的一列求和。

select  sum(列名)   from  表名   where  条件;

在这里插入图片描述

3. limit 限制返回的行数目

select  *  from  表名  limit  m,n;

注:

	m是指从哪行开始,m从0开始取值,0表示第一行;(limit  n 等价于  limit  0,n)
	n是指从m+1条开始,取n条;

在这里插入图片描述

4.分组(group by)

使用group by子句对列进行分组,还可以使用having子句过滤,having通常跟在group by 后,它作用于组。
注:使用group by后只能展示分组的列名+聚合函数结果,因为其余列已经基于分组这一列合并。
(1) 不加having过滤:

select  列名,聚合函数  from  表名  where  子句  group  by 列名;

在这里插入图片描述

(2) 加上having过滤:

select  列名,聚合函数  from  表名  where  子句  group  by  列名 having  聚合函数  过滤条件;

在这里插入图片描述

三、 数据表连接查询和子查询(嵌套查询)

1. 连接查询

(1) inner join(内连接)

获取两个表中字段匹配关系的行的所有信息。

select  *  from  表名 a  inner  join  表名  b  on  a.列名=b.列名

在这里插入图片描述

(2) left join(左连接)

获取左表所有行的信息,即使右表没有对应匹配的行的信息。右表没有匹配部分用null代替。

select  *  from  表名 a  left  join  表名  b  on  a.列名=b.列名

在这里插入图片描述

(3) right join(右连接)

获取右表所有记录,即使左表没有对应匹配的行的所有信息,左表没有匹配部分用null代替。

select  *  from  表名 a  right  join  表名  b  on  a.列名=b.列名

在这里插入图片描述

2. 子查询(嵌套查询)

select  列名1  from  表1  where  列名2  in(select  列名2  from  表2  where  列名3 =xx);

注:一般在子查询中,程序先运行在嵌套在最内层的语句,再运行外层。因此在写子查询语句时,可以先测试下内层的子查询语句是否输出了想要的内容,再一层层往外测试,增加子查询正确率。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值