SQL查询语句分步详解——SELECT…FROM...

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值