leftjoin⼦查询_MYSQL查询语句
环境:
employees表:
departments表:
查询所有:
select * from 表名;
查询指定字段:
select 字段 from 表名;
去重查询:
select distinct * from 表名;
别名查询:
select name as '书名' from t_book;
select name '书名' from t_book;
条件查询:
select 查询列表 from 表⾯ where 筛选条件;
#搭配条件表达式:> < = != <> >= <=  && || ! and or not
#如:查询id值为1的书名
select name from book where id = 1;
模糊查询:
#查询书名中包含字符a的书籍信息
select * from book where name like '%a%';
#查询员⼯编号在100到120之间的员⼯信息
scrapy源码下载
select * from employees where employee_id between 120 and 100;mysql语句多表查询
#查询员⼯的⼯种编号是 IT_PROG、AD_VP、AD_PRES中的⼀个员⼯名和⼯种编号select * from employees where job_id in( 'IT_PROT' ,'AD_VP','AD_PRES');
#is null 和 is not null
#查询有奖⾦的员⼯名
select * from employees where commission_pct is not null;
排序查询:
# 语法
select 查询列表
from 表名
【where  筛选条件】
order by 排序的字段或表达式;
#其中:
asc代表的是升序,可以省略
desc代表的是降序
#案例:查询员⼯信息,要求先按⼯资降序,再按employee_id升序
select *
from employees
order by salary desc,emp_id asc;
分组函数:
#sum 求和、avg 平均值、max 最⼤值、min 最⼩值、count 计算个数
select sum(salary) from emp;
select avg(salary) from emp;
select min(salary) from emp;
select max(salary) from emp;
select count(*) from emp;
分组查询:
from 表
【where 筛选条件】
group by 分组的字段
【order by 排序的字段】;
特点:
1、和分组函数⼀同查询的字段必须是group by后出现的字段
2、筛选分为两类:分组前筛选和分组后筛选
针对的表位置连接的关键字
分组前筛选原始表    group by前 where
分组后筛选 group by后的结果集      group by后 having
# 每个⼯种有奖⾦的员⼯的最⾼⼯资>6000的⼯种编号和最⾼⼯资,按最⾼⼯资升序SELECT MAX(salary),job_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>6000
ORDER BY MAX(salary);
连接查询:(sql99语法)
from 表1 别名【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
#内连接(★):inner
#外连接
左外(★):left 【outer】
html5如何嵌入视频右外(★):right 【outer】
全外:full【outer】
#交叉连接:cross
#.查询哪个部门的员⼯个数>3的部门名和员⼯个数,并按个数降序(添加排序) select count(*),dept_name
from emp e
inner join dept d
on e.dept_id = d.dept_id
group by dept_name
having count(*) > 3
order by count(*) desc;
#⾮等值连接练习:查询⼯资级别的个数>20的个数,并且按⼯资级别降序select count(*),grade_level
from emp e
join job_grades g
on e.salary between g.lowest_sal and g.highest_sal
group by grade_level
having count(*) > 20
order by grade_level desc;
#⾃连接:查询姓名中包含字符k的员⼯的名字、上级的名字
select e.last_name,m.last_name
from employees e
join employees m
on e.manager_id = m.manager_id
where e.last_name like '%k%';
#查询哪个部门没有员⼯
#左外
select d.*,employee_id
from departments d
left outer join employees e
on d.department_id =e.department_id
ployee_id is null;
#右外
SELECT d.*,e.employee_id
FROM employees e
RIGHT OUTER JOIN departments d
ON d.`department_id` = e.`department_id`
WHERE e.`employee_id` IS NULL;
分页查询:
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;
offset要显⽰条⽬的起始索引(起始索引从0开始)
size 要显⽰的条⽬个数
#查询第11条——第25条
select * from employees limit 10,15;
#有奖⾦的员⼯信息,并且⼯资较⾼的前10名显⽰出来
select * from employees
where commission_pct is not null
order by salary desc
limit 10;
socket+多客户端连接
联合查询:
语法:
查询语句1
union
查询语句2
union
...
vlookup根据姓名匹配学号#查询部门编号>90或邮箱包含a的员⼯信息
select * from employees where email like '%a%' or department_id >90; #使⽤联合:
SELECT * FROM employees  WHERE email LIKE '%a%'
主流java开发工具UNION
SELECT * FROM employees  WHERE department_id>90;
⼦查询:
分类:
按⼦查询出现的位置:
select后⾯:
仅仅⽀持标量⼦查询
from后⾯:
⽀持表⼦查询
where或having后⾯:★
标量⼦查询(单⾏) √
列⼦查询  (多⾏) √
⾏⼦查询
exists后⾯(相关⼦查询)
表⼦查询
按结果集的⾏列数不同:
标量⼦查询(结果集只有⼀⾏⼀列)
列⼦查询(结果集只有⼀列多⾏)
⾏⼦查询(结果集有⼀⾏多列)
表⼦查询(结果集⼀般为多⾏多列)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。