标签:lang 限制 拼接 第一条 rtm 通配符 表单查询 err 一起
# 多个查询条件共同出现时使用顺序
"""
select ... from ... where ... group by ... having ... order by ... limit ...
查询的数据可以用 as 起别名
"""
# 一.where 条件的使用
功能:对表中的数据进行筛选和过滤
语法:
# 1.判断的符号
> < >= <= = !=( <>不等于 )
# 2.拼接不同条件的关键字
and or not
# 3.查询区间值
between 小值 and 大值 [小值,大值] 查询两者之间的范围
# 4.查询区间值
id in (1,2,3,4,5,6)
#5.模糊查询 like %通配符 _通配符
like "%b" 匹配以b结尾的任意长度字符串
like "a%" 匹配以a开头的任意长度字符串
like "%c%" 匹配字符串中含有c的任意长度字符串
like "__d" 匹配总长度为3位,而且以d结尾的字符串
like "e__" 匹配总长度为3位,而且以e开头的字符串
# 6. 去重 查询字段内种类
distinct(字段)
# 二. group by 子句 分类,分组 各个部门
"""注意点: 针对于当前表,by谁搜谁"""
select sex from employee group by sex
select emp_name from employee group by sex # error
# 解决办法 group_concat 按照分组把对应的字段拼接在一起
select group_concat(emp_name) from employee group by sex;
# 聚合函数 只能用在group by 中
# count 统计数量 * 号代表所有
select count(*) from employee
# max 统计最大值
select max(salary) from employee;
# min 统计最大值
select min(salary) from employee;
# avg 统计平均值
select avg(salary) from employee;
# sum 统计总和
select sum(salary) from employee;
# 三.having 对分类后的数据进行二次过滤[应用在group by这个场景里]
# 四.order by 排序
"""
正序 升序 asc
倒序 降序 desc
"""
#练习:order by
select * from employee order by age; #(默认升序)
select * from employee order by age asc; # 升序
select * from employee order by age desc; # 降序
# 五.limit 限制查询的条数
"""
limit m,n m代表从第几条搜索数据 , n 代表搜索几条 m=0 代表搜索第一条数据
limit n n 代表搜索几条
"""
# 网页分页浏览
select * from employee limit 0,10 # 0代表第一条 ,往后搜10条数据
select * from employee limit 10,10 # 10代表第11条,往后搜10条数据
# limit 数字 代表搜索条数
select * from employee limit 1;
# 搜索表里面最后一条数据
select * from employee order by id desc limit 1;
# 搜索表里面最后三条数据
select * from employee order by id desc limit 3;
# 六.(了解) 可以使用正则表达式 (不推荐使用)
select * from employee where emp_name regexp ".*n$"; #?号不识别
select * from employee where emp_name regexp "程咬.*";
# 1.内联查询(内联接): inner join ...on.. 至少两表以上做查询,把满足条件的所有数据查询出来(查询的是共同拥有的数据)
select 字段 from 表1 inner join 表2 on 必要的关联字段 (2张表)
select 字段 from 表1 inner join 表2 on 必要的关联字段1 inner join 表3 on 必要的关联字段2 ... inner join ...
# 语法:
select * from employee inner join department on employee.dep_id = department.id ;
# as 起别名 (推荐)
select * from employee as e inner join department as d on e.dep_id = d.id ;
# as 可以省略
select * from employee e inner join department d on e.dep_id = d.id ;
# where 写法默认等价于inner join ..on..也是内联查询
select * from employee , department where employee.dep_id = department.id ;
select * from employee as e, department as d where e.dep_id = d.id ;
# 2.外联查询(外联接)
# (1) left join ..on.. (左联接) : 以左表为主,右表为辅,完整查询左表所有数据,右表没有的数据补null
select * from employee left join department on employee.dep_id = department.id ;
# (2) right join ..on.. (右联接): 以右表为主,左表为辅,完整查询右表所有数据,左表没有的数据补null
select * from employee right join department on employee.dep_id = department.id ;
# 3.全联查询(全联接) left join +(union) right join
select * from employee left join department on employee.dep_id = department.id
union
select * from employee right join department on employee.dep_id = department.id ;
# 4.子查询
"""
子查询 : sql语句的嵌套
(1) sql语句当中嵌套另外一条sql,用括号()包起来,表达一个整体;
(2) 一般用在子句的后面 比如from , where ...身后 表达一个条件或者一张表
(3) 速度快慢 : 单表查询 > 联表查询 > 子查询
"""
# 带EXISTS关键字的子查询
"""
exists 关键字,表达数据是否存在,用在子查询里
如果内层sql 能够查到数据,返回True ,外层sql执行sql语句
如果内层sql 不能够查到数据,返回False ,外层sql不执行sql语句
"""
select * from employee where exists (select * from employee where id = 1);
"""
总结:
子查询可以作为临时表,也可以作为where子句的条件,通过()包括sql,表达一个整体;
一般用在各个子句后面 select .. from ... where ...
思路:
可以把临时搜索出来的数据变成临时表,在和其他表做联表,最后做单表查询;
"""
标签:lang 限制 拼接 第一条 rtm 通配符 表单查询 err 一起
原文地址:https://www.cnblogs.com/jia-shu/p/14263871.html