mysql中的查询和筛选查询
内容概要
一、单表下的简单查询(筛选查询)
二、多表下的联表查询
三、子查询
1、单表下的简单查询
-表的准备
create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int );
-记录的准备
insert into department values (200,'技术'), (201,'人力资源'), (202,'销售'), (203,'运营'); insert into employee(name,sex,age,dep_id) values ('egon','male',18,200), ('alex','female',48,201), ('wupeiqi','male',38,201), ('yuanhao','female',28,202), ('liwenzhou','male',18,200), ('jingliyang','female',18,204) ;
查询语句必要的语法部分
select * from table_name
concat() 方法
将select查询得到的结果进行字符串拼接
-练习:将id值大于8的员工的名字加上_sb符号
select concat(name,"_sb") from employee where id > 8;
group_concat() 方法
将经过group_by分组的字段的聚合记录进行拼接
-练习:展示分组后每组的员工的名字,用一个记录存储
select dep_id,group_concat(name,"__") from employee group by dep_id;
筛选条件(优先级从上到下)
where
select name from t1 where id > 10; # 查询id大于10的name字段对应的值
group by
select post avg(salary) from t1 group by post; # 根据port的值,将多条记录进行聚合(一般以谁为条件就搜索谁)
-group by 专门的分组函数
sum() 显示聚合后指定字段的各记录的总和
max() 显示聚合后指定字段的各记录的最大值
min() 显示聚合后指定字段的各记录的最小值
count() 显示聚合后指定字段的各记录的条数
avg() 显示聚合后指定字段的各记录的平均值
having
select group_concat(name,":") from t1 group by port having avg(salary > 10000);
按照部分字段记录进行分组后,筛选平均薪资大于10000元的名字
order by
select name from t2 order by salary asc(升序);
select name from t2 order by salary desc(降序);
将字段按照salary的记录值 升序 / 降序 排序
select name from t2 order by salary asc , age desc;
limit
select name from t3 order by salary limit 1;
限制记录的条数
获取最高薪资的员工姓名
2、多表下的的连表查询
- 左表 inner join 右表 on 条件
select * from employee inner join department on employee.dep_id = department.id;
使用inner join的联表查询,虚拟表中的记录必须是满足on后条件的,两张表中不满足的记录不会保留
在联表中
- 左表 left join 右表 on 条件
select * from employee left join department on employee.dep_id = department.id;
使用left join的联表查询,虚拟表中的记录一定包含所有左表(employee)的记录,不满足条件的记录中右表的字段值为Null
- 左表 right join 右表 on 条件
select * from employee right join department on employee.dep_id = department.id;
使用right join的联表查询,虚拟包中的记录一定包含所有右表(department)的记录,不满足条件的左表的字段值为Null
本文来自博客园,作者:口乞厂几,转载请注明原文链接:https://www.cnblogs.com/laijianwei/p/14493075.html

浙公网安备 33010602011771号