FROM命令:
1.执行顺序:
mysql共有七个查询命令,FROM命令永远是第一个执行的查询命令
2.执行作用:
FROM命令相当于一个读取流;负责将硬盘上表文件加载到内存中生成一个【临时表】,供后续查询命令使用。
*****由于查询命令对临时表数据进行操作,因此查询命令执行时,是不会修改表文件原有的数据*****
|
硬盘上EMP.frm | |||||||
|
EMPNO |
ENAME |
JOB |
MGR |
HIREDATE |
SAL |
COMM |
DEPTNO |
|
7369 |
SMITH |
CLERK |
7902 |
1980/12/17 |
800 |
NULL |
20 |
|
7499 |
ALLEN |
SALESMAN |
7698 |
1981/2/20 |
1600 |
300 |
30 |
|
7521 |
WARD |
SALESMAN |
7698 |
1981/2/22 |
1250 |
500 |
30 |
|
7566 |
JONES |
MANAGER |
7839 |
1981/4/2 |
2975 |
NULL |
20 |
|
7654 |
MARTIN |
SALESMAN |
7698 |
1981/9/28 |
1250 |
1400 |
30 |
|
7698 |
BLAKE |
MANAGER |
7839 |
1981/5/1 |
2850 |
NULL |
30 |
|
7782 |
CLARK |
MANAGER |
7839 |
1981/6/9 |
2450 |
NULL |
10 |
|
7788 |
SCOTT |
ANALYST |
7566 |
1987/4/19 |
3000 |
NULL |
20 |
|
7839 |
KING |
PRESIDENT |
1981/11/17 |
5000 |
NULL |
10 | |
|
7844 |
TURNER |
SALESMAN |
7698 |
1981/9/8 |
1500 |
0 |
30 |
|
7876 |
ADAMS |
CLERK |
7788 |
1987/5/23 |
1100 |
NULL |
20 |
|
7900 |
JAMES |
CLERK |
7698 |
1981/12/3 |
950 |
NULL |
30 |
|
7902 |
FORD |
ANALYST |
7566 |
1981/12/3 |
3000 |
NULL |
20 |
|
7934 |
MILLER |
CLERK |
7782 |
1982/1/23 |
1300 |
NULL |
10 |
需求:在EMP表中查询所有职员的姓名、工作岗位及薪水
对应的SQL语句:SELECT ENAME,JOB,SAL FROM EMP;
第一步执行: FROM EMP
from emp命令执行时会在内存中生成第一个临时表,临时表名称与硬盘上表文件名称保持一致。
生成的第一个临时表如下:
|
第一个临时表 | |||||||
|
EMPNO |
ENAME |
JOB |
MGR |
HIREDATE |
SAL |
COMM |
DEPTNO |
|
7369 |
SMITH |
CLERK |
7902 |
1980/12/17 |
800 |
NULL |
20 |
|
7499 |
ALLEN |
SALESMAN |
7698 |
1981/2/20 |
1600 |
300 |
30 |
|
7521 |
WARD |
SALESMAN |
7698 |
1981/2/22 |
1250 |
500 |
30 |
|
7566 |
JONES |
MANAGER |
7839 |
1981/4/2 |
2975 |
NULL |
20 |
|
7654 |
MARTIN |
SALESMAN |
7698 |
1981/9/28 |
1250 |
1400 |
30 |
|
7698 |
BLAKE |
MANAGER |
7839 |
1981/5/1 |
2850 |
NULL |
30 |
|
7782 |
CLARK |
MANAGER |
7839 |
1981/6/9 |
2450 |
NULL |
10 |
|
7788 |
SCOTT |
ANALYST |
7566 |
1987/4/19 |
3000 |
NULL |
20 |
|
7839 |
KING |
PRESIDENT |
1981/11/17 |
5000 |
NULL |
10 | |
|
7844 |
TURNER |
SALESMAN |
7698 |
1981/9/8 |
1500 |
0 |
30 |
|
7876 |
ADAMS |
CLERK |
7788 |
1987/5/23 |
1100 |
NULL |
20 |
|
7900 |
JAMES |
CLERK |
7698 |
1981/12/3 |
950 |
NULL |
30 |
|
7902 |
FORD |
ANALYST |
7566 |
1981/12/3 |
3000 |
NULL |
20 |
|
7934 |
MILLER |
CLERK |
7782 |
1982/1/23 |
1300 |
NULL |
10 |
第二步执行: SELECT ENAME,JOB,SAL
1.SELECT由于在FROM之后执行的,因此操作的是由FROM命令在内存中生成的第一个临时表。
2.SELECT像切蛋糕一样,将指定字段下所有的数据读取出来,并在内存中将读取数据组成一个全新的临时表。
下面的临时表就是由SELECT语句生成的第二个临时表,该临时表生成以后,由FROM命令生成的第一个临时表就会被销毁,然后MySQL就会将最后生成的临时表推送到客户端,供操作者查阅。到此查询语句完成查询任务。
|
ENAME |
JOB |
SAL |
|
SMITH |
CLERK |
800 |
|
ALLEN |
SALESMAN |
1600 |
|
WARD |
SALESMAN |
1250 |
|
JONES |
MANAGER |
2975 |
|
MARTIN |
SALESMAN |
1250 |
|
BLAKE |
MANAGER |
2850 |
|
CLARK |
MANAGER |
2450 |
|
SCOTT |
ANALYST |
3000 |
|
KING |
PRESIDENT |
5000 |
|
TURNER |
SALESMAN |
1500 |
|
ADAMS |
CLERK |
1100 |
|
JAMES |
CLERK |
950 |
|
FORD |
ANALYST |
3000 |
|
MILLER |
CLERK |
1300 |
1230



被折叠的 条评论
为什么被折叠?



