sql语句(查询)

desc a;查看a这个表的所有字段名
show tables查看表
数据库不使用;不会执行
字符串用单引号包裹,别名用中文也需要单引号包裹
字段可以使用数学运算符

条件查询 where
= 等于 != or <>不等于 小于 大于 小于不等于 大于不等于
查询范围
1 SELECT job, mgr from emp where sal >= 800 and sal <=1600
2 between and
SELECT job, mgr from emp where salbetween 800 and 1600
注意:使用between and必须左小右大
is null 为空 is not null 不为空
注意:数据库中null不能使用=进行衡量,因为null 不是一个值
or 或者 满足一个条件就可
and 和 or 同时出现,先执行and
SELECT job, mgr, sal, comm from emp where sal >=1100 and (mgr =7788 or mgr =7566)
会先执行()
in 包含
SELECT job, mgr, sal, comm from emp where sal in (3000, 1100)
like 模糊查询
select mgr from emp where mgr like ‘%6%’
排序: order by
默认升序
指定降序:select * from emp order by mgr desc
指定升序:select * from emp order by mgr asc
关键字执行顺序:
from where group by having select order by
为什么分组函数不能使用在where后面
因为分组函数在使用的时候,必须先分组再使用,where执行的时候还没分组。
分组函数
count 计数 sum求和 min 最小值 max 最大值 avg平均数 round(avg,1)保留平均数后面小数点
分组函数自动忽略null
count(字段名) count(*)不同前一个不会统计null 有一个统计
group by 分组
SELECT job ,sum(empno) from emp GROUP BY job
having 过滤
SELECT job, deptno, max(empno) from emp GROUP BY job , deptno
HAVING max(empno) >= 7876
where 与having优先选择where
在这里插入图片描述

SELECT job, AVG(sal)  from emp WHERE job != 'PRESIDENT' GROUP BY job HAVING avg(sal) > 1500 ORDER BY avg(sal) desc
查询结果去除重复记录 :distinct
distinct 只能出现字段前方
SELECT distinct job,sal from emp   联合去重

连接查询

在这里插入图片描述

笛卡尔积现象:当两张表没做任何限制的时候,会出现两张表的乘积
SELECT ename, dname from emp, dept WHERE emp.deptno =dept.deptno
连接时加条件可以避免 匹配的次数没有更新
尽量降低表链接的次数 连接越多,效率越低
内连接:
等值连接
sql92 结构不清晰
sql99 表链接是独立的 后面那需要加条件可以where
92 SELECT e.ename, d.dname from emp a , dept d WHERE e.deptno =d.deptno
95 select e.ename, d.dname from emp e join dept d on e.deptno =d.deptno
非等值链接
在这里插入图片描述
在这里插入图片描述

自连接
在这里插入图片描述

外连接:左连接 右连接
表示将join关键字left or right的看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表。在外链接当中,两张表链接,产生了主次关系。
在这里插入图片描述
三张表连接
在这里插入图片描述

子查询

select语句嵌套select语句,被嵌套的select语句叫做子查询。
where后面子查询
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
联合查询:
在这里插入图片描述
把查询的两张表的结果合并成一张表

多表查询的本质是把多表合并成一张表,然后在表中做各种条件筛选。

数据量大的数据库尽量少用join多表连接,为了性能,多用in
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值