【数据库MySQL笔记】查询

一、简单查询
1.查询一个字段

select 字段名 from 表名;

2.查询多个字段

使用逗号","隔开

3.查询所有字段

方式一:把每个字段都写上
方式二:使用 *
select * from 表名;
方式二缺点:效率低、可读性差、实际开发不建议

4.给查询的列起别名

使用as关键字起别名
例:在这里插入图片描述

as可省略
例:在这里插入图片描述
假设起别名时,别名里有空格:加“ ”或‘ ’
在这里插入图片描述

注:只是将显示的查询结果列名显示为别名,原表列名还是原名。
在所有的数据库中,字符串统一使用单引号括起来。
select 语句永远不会进行修改操作,只负责查询。

5.列参与数学运算

在这里插入图片描述
字段可以使用数学表达式
在这里插入图片描述
在这里插入图片描述

二、条件查询

查询出符合条件的数据。
语法格式:select 字段 from 表名 where 条件;
在这里插入图片描述
注:and和or同时出现时,and的优先级比or高。如果想让or先执行,需要加小括号
在这里插入图片描述
in不是一个区间,in后面跟的是具体的值

三、模糊查询

%:任意多个字符
下划线 _ :任意一个字符
例:找出名字含有‘O’的
在这里插入图片描述
例:找出名字以‘T’结尾的
在这里插入图片描述
例:找出名字第三个字母是‘R’的
在这里插入图片描述
例:找名字中含下划线‘_’
在这里插入图片描述

四、排序
1.升序

升序 :select 字段 from 表名 order by 字段; //默认是升序!
指定升序 :select 字段 from 表名 order by 字段 asc;
降序 :select 字段 from 表名 order by 字段 desc;

2.多个字段排序

例:select ename,sal from emp order by sal asc,ename asc;
//sal在前起主导,只有sal相等时,才会考虑启用ename排序

3.根据字段位置排序

例:select ename,sal from emp order by 2; // 2表示第二列
不建议在开发中使用,不健壮。

五、分组查询

select…from…group by…
将之前关键字组合,它们的顺序:select…from…where…group by…having…order by…
执行顺序:
1.from
2.where
3.group by
4.having
5.select
6.order by
例:显示每个工作岗位的工资和

例:显示每个部门,不同工作岗位的最高薪资
技巧:两个字段联合成一个字段看(两个字段联合分组)
在这里插入图片描述
例:显示每个部门最高薪资,要求最高薪资大于3000
使用having可对分完组的数据进一步过滤
having不能单独使用,不能代替where,必须和group by联合使用
在这里插入图片描述
以上语句执行效率低,可考虑:先找出大于3000,然后分组查询
在这里插入图片描述
例:找出每个岗位的平均薪资,要求显示平均薪资大于1500的,除manager之外,要求按照平均薪资降序排
在这里插入图片描述

六、连接查询

也称跨表查询,多张表联合起来查询数据
笛卡尔积现象:当两张表进行连接查询,没有任何条件限制时,最终查询结果条数是两张表条数的乘积

1.内连接

(1)等值连接
例:查询每个员工所在部门名称,显示员工名和部门名
在这里插入图片描述
SQL99优点:表连接的条件是独立的,连接之后,如果还需进一步筛选,再往后继续添加where
(2)非等值连接
例:找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级
在这里插入图片描述

(3)自连接
例:查询员工的上级领导,要求显示员工名和对应的领导名
技巧:一张表看成两张表
在这里插入图片描述

2.外连接

(1)右外连接(右连接)
right表示将join关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表
在这里插入图片描述
(2)左外连接(左连接)
left表示将join关键字左边的这张表看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询右边的表
在这里插入图片描述

3.多张表连接

在这里插入图片描述
一条SQL中内连接和外连接可以混合出现
例:找出每个员工的部门名称、工作等级、上级领导,要求显示员工名、领导名、部门名、薪资、薪资等级
在这里插入图片描述

七、子查询

select语句中嵌套select语句,被嵌套的select语句称为子查询

1.where子句中的子查询

例:找出比最低工资高的员工姓名和工资
select ename,sal from emp where sal > (select min(sal) from emp);

2.from子句中的子查询

注:from后面的子查询,可以将子查询的查询结果当做一张临时表
例:找出每个岗位的平均工资的薪资等级
在这里插入图片描述

3.select子句中的子查询

例:找出每个员工的部门名称,要求显示员工名,部门名
在这里插入图片描述
注:对于select后面的子查询,这个子查询只能返回1条结果,多于1条就报错

八、limit

作用:将查询结果集的一部分取出来,通常使用在分页查询中
完整用法:limit startIndex,length //起始下标,长度
缺省用法:limit length //前length
例:按照薪资降序,取出排名在前5的员工
在这里插入图片描述
注:MySQL中limit在order by之后执行
在这里插入图片描述

总结
在这里插入图片描述
执行顺序:
1.from
2.where
3.group by
4.having
5.select
6.order by
7.limit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值