数据库表的查询
单表查询:
一 关键字的执行优先级:
from #来自表
where #来自字段 可以用 [字段名] like(regexp) 'ab%'(正则) 选择以该字段数据以'ab'开头的
group by #分组; 想拿到别的字段必须和group_concat(函数一起使用)
having #过滤; 必须是在分组之后进行的进一步的过滤,而且可以使用聚合函数
select #查询,选择
distinct #去重
order by #排序 asc #升序,默认的 desc #降序
limit #限制条数
二 单表查询的语法:
select * from, #这个select * 指的是要查询所有字段的数据。
select distinct 字段1,字段2... from [库名.表名] #from后面是说从库的某个表中去找数据,mysql会去找到这个库对应的文件夹下去找到你表名对应的那个数据文件,找不到就直接报错了,找到了就继续后面的操作
where #条件 #从表中找符合条件的数据记录,where后面跟的是你的查询条件
group by [字段名] #分组
注意:我们按照post字段分组,那么select查询的字段只能是post,想要获取组内的其他相关信息,需要借助函数group_concat().例如: 查询t1表中岗位名称以及岗位中所包含的员工名字
select post,group_concat(name) from t1 group by post
having 筛选 #过滤,过滤之后执行select后面的字段筛选,就是说我要确定一下需要哪个字段的数据,你查询的字段数据进行去重,然后在进行having过滤的操作
order by [字段名] #将结果按照后面的字段进行排序
limit 限制条数 #将最后的结果加一个限制条数,就是说我要过滤或者说限制查询出来的数据记录的条数
三 函数
concat('姓名:' , [字段名] , '年薪:' , [字段名]*12) #函数用于连接字符串,且只有一个字段
concat('姓名:' , [字段名]),concat('年薪:' , [字段名]*12) #设置了两个字段来显示连接的字符串
select count(*) from [表名]; #count是统计个数用的
select count(*) from [表名] where depart_id=1; #后面跟where条件的意思是统计一下满足depart_id=1这个的所有记录的个数
select max([字段名]) from [表名]; #max()统计分组后每组的最大值,这里没有写group by,那么就是统计整个表中所有记录中薪资最大的,薪资的值
select min([字段名]) from [表名]; #最小值
select avg([字段名]) from [表名]; #平均值
select sum([字段名]) from [表名]; #和
多表查询:
select [字段名] from [表名1] <inner | left | right> join [表名2] on [两个表关联的条件] where [过滤条件];
一定要注意:(查询出来的虚拟表,一定要赋予一个新名字才可以被查询拿值)
sql逻辑查询语句的执行顺序: select语句关键字的定义顺序 join模式有inner ,left ,right
select distinct <select_list>
from <左边表>
<join模式> join <右边表>
on <join条件>
where <where条件>
group by <group_by条件>
having <having条件>
order by <order_by条件>
limit <limit条件(索引,数字)>