常用查询sql
自学 sql 网站
www.xuesql.cn/
www.w3school.com.cn/
自带sql语句库,语句解析
此文章是在里面的练习答案和个人笔记 (偶尔更新)
模糊查询(like)
like
like 是用来模糊查询使用的,如果没有使用通配符的话,那效果和 = 一样
通配符 % 匹配零或多个字符
通配符 _ 匹配一个字符
通配符在查询条件的前后面都可以使用
条件查询 (and,between,or,in)
and
and 是并且的意思,需要满足多个条件才可以查询出来
select * from 表名 where id = 1 and uid =3
查询 id 等于1并且 uid 等于3的数据
between
between 是之间的意思,在条件范围内的数据都查询出来
select * from 表名 where id between id 1 and 3
查询 id 1到3 之间的的数据,包含 1和3
select * from 表名 where id not between id 1 and 3
查询 id 1到3 之间的的数据,包含 1和3
or
or 是或者的意思,满足一条条件就可以查询出来,这点和and的效果相反
select * from 表名 where id = 1 or id = 2;
查询id等于 1 或者等于 2 的数据库
in
1、in 是等于的意思,可以想成=号的意思,但筛选的条件需要使用()括起来,in主要用于多表查询
2、多表查询的时候,会先执行()括起来的sql,反馈结果显示的是两个表都符合()里面的sql查询条件的数据
select * from 表名 where id in (1,)
查询将id等于1的数据
select * from 表名 where id in (1,2,3)
查询id等于1,2,3的三条数据,效果和 or 类似
select * from 表名 where id not in (1,2,3)
查询 id 不等于1,2,3的三条数据,效果和 != 类似
select * from 1表名 where uid in (select * from 2表名 where id=1)
查询的结果显示的是1表uid为1和2表id为1的数据
查询是否空值(is null , is not null)
is null
is null 查询结果可以为空的
selete * from 表名 where 字段 is null
is not null
is not null 查询结果去掉空值
selete * from 表名 where 字段 is not null
统计(count)
count
count 有使用方式
表里只有一个字段count(*
)会执行的快一些,多字段count(1)执行快一些
1、count(*
) 会统计表中的所有的记录数, 包含字段为null 的记录。
2、count(1) 会统计表中的所有的记录数, 包含字段为null 的记录。
3、count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即 不统计字段为null 的记录。
select count(查询条件) from 表名
查询有多少行数据
排序(limit,order by )
limit
limit是范围的意思
select * from 表名 limit 5
查询这个表的前五条数据
order by
order是顺序的意思
asc是升序(默认)
desc是降序
select * from 表名 order by 字段 asc/desc
去重(distinct,group by)
distinct
distinct是不同的意思
select distinct 字段,字段。。。。 from 表名
group by
group是集合的意思,将同样的数据放在一个集合里,也有去重是效果
select 字段 from 表名 group by 字段
聚合后查询(having)
having有,拥有的意思
由于where无法于合计函数一起使用,可以用having代替使用
SELECT 字段1,COUNT(字段1) AS 假名 FROM 表名 GROUP BY 字段1 HAVING(COUNT(字段1)>1)