0
点赞
收藏
分享

微信扫一扫

MySQL之DOS学习

哈哈我是你爹呀 2022-02-14 阅读 76

![在这里插入图片描述](https://img-blog.csdnimg.cn/af625dcf519e4515b563589d238dea81.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluX0Rh5Yaw,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:以下查询都是基于以上三张表

什么是表

表:是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强,一个表包括行和列:

每个字段应该包括哪些属性?

  1. 字段名
  2. 数组类型
  3. 相关约束

SQL语句分类

在DOS窗口下使用的一些命令

查询语句

简单的查询语句(DQL)

语法格式:

条件查询

语法格式:

条件查询字符表

运算符说明
=等于
<>或!=不等于
<小于
<=小于等于
>大于
>=大于等于
between … and …两个值之间,等同于>= and <=
is null为null(is not null 不为空)
and并且
or或者
in包含,相当于多个or(not in 不在这个范围中)
notnot 可以去非,主要用在is 或 in 中
likelike称为模糊查询,支持%(代表任意多个字符)或下划线(_代表任意1个字符)匹配

数据排序(升序、降序)

语法:

分组函数

例子:找出工资总和?
select sum(sal) from emp;
例子:找出工资高于平均工资的员工?
注意:SQL语句当中有一个语法规则,分组函数不可直接使用在where子句当中,因为group by 是在where之后执行的
select ename from emp where sal > (select avg(sal) from emp)

单行处理函数

1、单行处理函数是输入一行,输出一行
2、ifnull() 空处理函数:ifnull(可能为null的数据,被当做什么处理):属于单行处理函数

group by 和 having(它们是搭档)

group by:按照某个字段或者某些字段进行分组
having:是对分组之后的数据进行再次过滤

> 1、找出每个部门的最高薪资,要求显示薪资大于2900的数据
> select max(sal),deptno from emp where sal > 2900 group by deptno;
> 2、找出每个部门的平均薪资,要求显示薪资大于2000的数据
> **注意where后面是不能使用分组函数的**
> select avg(sal),deptno from emp group by detpno having avg(sal) > 2000;

查询结果集的去重 distinct

select distinct job from emp;

distinct只能出现在所有字段的最前面,并且是所有字段联合去重

连接查询

1、什么是连接查询?
在实际开发中,大部分的情况下都不是从单表中查询数据,一般都是多张表联合查询取出最终的结果
在实际开发中,一般一个业务都会对应多张表,比如:学生和班级,起码两张表
2、连接查询的分类
(1)根据语法出现的年代来划分的话,包括:SQL92(一些老的DBA可能还在使用这种语法。)、SQL99(比较新的语法)
(2)根据表的连接方式来划分,包括:

内连接:等值连接、非等值连接、自连接
外连接:左外连接(左连接)、右外连接(右连接)
全连接(少用)

3、笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件限制时,最终的查询结果条数是两张表记录条数的乘积,可以加条件进行过滤

3张表以上连接查询

案例:找出每一个员工的部门名称以及工资等级(1)、以及上级领导(2)

(1)
select 
	e.ename,d.dname,s.grade
from
	emp e
join
	dept d
on
	e.deptno = d.deptno
join
	salgrade s
on
	e.sal between s.losal and s.hisal;

(2)外加条件上级领导
select 
	e.ename '员工',d.dname,s.grade,el.ename '领导'
from
	emp e
join
	dept d
on
	e.deptno = d.deptno
join
	salgrade s
on
	e.sal between s.losal and s.hisal
left join
	emp el
on
	e.mgr = el.empno;
举报

相关推荐

0 条评论