冻冻玖  

(1)MySQL的查询

(2)WEB服务器

 

Order:  订单、排序

Set:设置、集合

Table:表、桌子

 

1.MySQL中的简单查询 —— 查询结果的排序

示例:查询出所有员工信息,要求按工资由到大排序

  SELECT  *  FROM  emp

  ORDER  BY  salary ;  #默认是由小到大 

  #ORDER  BY  salary  ASC;  #ascendant升序

示例:查询出所有员工信息,要求按工资由排序

  SELECT  *  FROM  emp

  ORDER  BY  salary  DESC ;   #descendant降序

练习:查询出所有员工信息,按照姓名由小到大排序

  SELECT  *  FROM  emp

  ORDER  BY  ename  ;

练习:查询出所有员工信息,按照姓名由大到小排序

  SELECT  *  FROM  emp

  ORDER  BY  ename  DESC;

练习:查询出所有员工信息,按照年龄由大到小排序

  SELECT  *  FROM  emp

  ORDER  BY  birthday  ASC ;  #生日由小到大排列

练习:查询10号部门中员工的所有信息按工资由大到小排列

  SELECT  *  FROM  emp

  WHERE  deptId=10   

  ORDER  BY  salary  DESC ;

  #注意where子句order by子句的顺序问题

练习:查询出所有员工信息,按工资由排列工资相同的,再按姓名由小到大排列

  SELECT  *  FROM  emp

  ORDER BY  salary  DESC,   ename  ASC ;

练习:查询所有员工信息,按生日由大到小排列——前提是:所有女员工必须排在所有男员工之前

  SELECT  *  FROM  emp

  ORDER BY  sex  ASC ,  birthday  DESC ;

 

2.MySQL中的简单查询 —— 分页查询 —— 重点&面试重点

  分页查询:用于分批次的显示大量的数据。语法

  SELECT .... FROM ... WHERE ... ORDER BY ....

  LIMIT  start, count ;

(1)start是一个数字,表示从哪一行开始获取数据

(2)count:是一个数字,表示一次最多获取的行数,即页面大小

假设每页显示5行记录,则

1页 LIMIT  0,  5

2 LIMIT  5,  5

3 LIMIT  10,  5

4 LIMIT  15,  5

5 LIMIT  20,  5

....

n LIMIT  (n-1)*5,  5

练习分页查询出员工信息,页面大小为5,显示第1页

  SELECT  *   FROM  emp  LIMIT  0,  5 ;

练习分页查询出员工信息,页面大小为5,显示第2

  SELECT  *   FROM  emp  LIMIT  5,  5 ;

练习分页查询出员工信息,页面大小为5,显示第3

  SELECT  *   FROM  emp  LIMIT  10,  5 ;

练习分页查询出员工信息,页面大小为5,显示第4

  SELECT  *   FROM  emp  LIMIT  15,  5 ;

 

3.MySQL复杂查询 —— 子查询

示例:查询出研发部所有员工的信息

步骤1:查询研发部的部门编号   =>   10

  SELECT  did  FROM  dept  WHERE  dname='研发部';

步骤2:查询部门编号为10的员工信息

  SELECT  *  FROM  emp  WHERE  deptId = 10;

综合上述为一条语句:

  SELECT  *  FROM  emp  WHERE  deptId =(     #父查询

SELECT  did  FROM  dept  WHERE  dname='研发部'   #查询

  ) ;

练习查询出工资比TOM高所有员工信息

步骤1:查询TOM的工资   =>   6000

  SELECT  salary  FROM  emp  WHERE  ename='TOM';

步骤2:查询工资大于6000的员工信息

  SELECT  *  FROM  emp  WHERE  salary>6000;

综合上述两步:

  SELECT  *  FROM  emp  WHERE  salary>(

SELECT  salary  FROM  emp  WHERE  ename='TOM'

  );

练习:查询出比TOM年长的所有员工信息

步骤1:查询TOM的生日   =>  1990-1-1

  SELECT  birthday  FROM emp WHERE ename='TOM';

步骤2:查询出生日小于1990-1-1员工所有信息

  SELECT  *  FROM  emp  WHERE  birthday<'1990-1-1';

综合上述两步:

  SELECT  *  FROM  emp  WHERE  birthday<(

SELECT  birthday  FROM emp WHERE ename='TOM'

  );

练习:查询出TOM同年出生的所有员工信息

步骤1:查询TOM的生日的年份   =>  1990,提示:用year( )运算

  SELECT YEAR(birthday) FROM emp WHERE ename='TOM';

步骤2:查询出生日中年份等于1990的员工所有信息

  SELECT * FROM emp WHERE  YEAR(birthday)='1990';

综合上述两步:

  SELECT * FROM emp WHERE  YEAR(birthday)=(

SELECT YEAR(birthday) FROM emp WHERE ename='TOM'

  );

 

 

4.MySQL复杂查询 —— 聚合/分组查询

函数:Function,就是一个功能体,可以接收若干数据,加以处理,得到最终希望的结果——类似饺子机。

MySQL提供了几个聚合函数:

COUNT():计算若干数据的个数

SUM():计算数据总和

AVG():计算若干数据的平均值

MAX():计算干数据的最大值

MIN():计算若干数据的最小值

示例:查询出员工的总数

  SELECT  COUNT(eid)  FROM  emp; #14

  SELECT  COUNT(deptId)  FROM  emp;     #13NULL不算

  SELECT  COUNT(sex, deptId)  FROM  emp;

  SELECT  COUNT(ename, sex, deptId)  FROM  emp;

  SELECT  COUNT(*)  FROM  emp;    #推荐写法

示例:查询出所有员工工资的总和

  SELECT  SUM(salary)  FROM  emp;

练习:查询出所有员工工资的平均值两种方法)

  SELECT  SUM(salary) / COUNT(salary)  FROM  emp;

  SELECT  AVG(salary)  FROM  emp;

练习:查询出所有员工工资的最大值和最小值

  SELECT  MAX(salary), MIN(salary)  FROM  emp;

练习:查询出工资高于所有人平均工资的员工的数量 —— 难度系数5星

步骤1:查询出所有员工的平均工资   =>  6842

  SELECT  AVG(salary)  FROM  emp;

步骤2查询出工资大于6842的员工的数量

  SELECT  COUNT(*)  FROM emp  WHERE  salary>6842;

综合上述两步:

  SELECT  COUNT(*)  FROM emp  WHERE  salary>(

SELECT  AVG(salary)  FROM  emp

  );

示例:查询出每个部门的编号及该部门员工的数量——先分组再聚合计算

  SELECT  deptId, COUNT(*)   FROM  emp

  GROUP  BY  deptId ;   #按照部门编号分组

注意:分组查询要么查询分组条件列,要么是其它列的聚合函数——不能直接查询其它列。

练习按照性别分组,查询每组中工资的最大值、最小值、平均值

  SELECT  sex,  MAX(salary),  MIN(salary),  AVG(salary)

  FROM  emp

  GROUP  BY  sex;

 

5.MySQL复杂查询 —— 跨表/多表查询 —— 了解

查询结果集中的数据来自于多个不同的表。

示例:查询每个员工的姓名及其所在部门的名称

  SELECT  ename,  dname

  FROM  emp,  dept ;   #笛卡尔积!错误!

-----------------------------------------------------------

  SELECT  ename, deptId, did, dname

  FROM  emp,  dept

  WHERE   deptId = did ;   #跨表查询必须有连接条件

注意上述写法是SQL-92版本中的写法。存在一定的缺陷:

(1)无法显示没有部门的员工 —— KING

(2)无法显示没有员工的部门 —— 测试部

SQL-99标准对此进行了改变,但是SQL变得很复杂有四种写法:

(1)内连接查询:inner join ... on ...

  SELECT  ename, dname

  FROM  emp  INNER  JOIN  dept

  ON  deptId=did ;   

  #内连接的效果与SQL-92标准完全一样

(2)左外连接查询: left  outer  join ... on ...

  SELECT  ename, dname

  FROM  emp  LEFT  OUTER  JOIN  dept

  ON  deptId=did ;    #13+1

  #可以显示出左侧所有的记录即使右侧表中没有对应的记录

(3)右外连接查询:right  outer  join ... on ...

  SELECT  ename, dname

  FROM  emp  RIGHT  OUTER  JOIN  dept

  ON  deptId=did ;    #13+1

  #可以显示出右侧所有的记录即使左侧表中没有对应的记录

(4)全外连接查询:full  join ... on ...

  SELECT  ename, dname

  FROM  emp  FULL  JOIN  dept

  ON  deptId=did ;    #13+1+1

  #可以显示出右侧右侧表所有的记录—— MySQL不支持

 

课外小知识:如何解决MySQL不支持全连接的问题 —— 使用结果集的合并

select  ename, salary  from  emp_us ;

select  ename, salary  from  emp_cn ;

结果集的合并:UNION,把两条查询语句的结果合并为一个大结果

(select  ename, salary  from  emp_us)

UNION

(select  ename, salary  from  emp_cn) ;

  两个结果集中的相同数据只显示一次

(select  ename, salary  from  emp_us)

UNION   ALL

(select  ename, salary  from  emp_cn) ;

两个结果集中的相同数据各自显示

练习:查询出员工姓名及其所在部门的名字,要求必须显示出所有的员工和所有的部门:左外连接合并上右外连接

(

  SELECT  ename, dname  

  FROM  emp  LEFT OUTER JOIN dept

  ON deptId=did

)

UNION

(

  SELECT  ename, dname  

  FROM  emp  RIGHT OUTER JOIN dept

  ON deptId=did

) ;

 

 

6.WEB服务器

  

 WEB服务器负责接收客户端请求,查找需要的数据/文件,给客户端以响应Web服务器的分类:

 (1)静态WEB服务器:提供的内容任何时间任何人访问都是一样

常见静态WEB内容HTML/CSS/JS/图片/视频/Flash...

 (2)动态WEB服务器:提供的内容不同时间不同人访问可能不同,一般都需要访问数据库、复杂运算、访问其它服务器。

   常见的动态WEB技术

JSP = HTML + JAVA

PHP = HTML + php

ASP.NET = HTML + C#

Node.js

Python

.....

 

7.PHP简介

 1994年诞生,Personal Home Page语言用于记录自己的网页的访问统计。后来开源给社区,逐渐流行1999年,改名 PHP is Hypertext Preprocessor。特点开源、简单、跨平台、占用资源少。黄金组合:

LAMP = Linux + Apache + MySQL + PHP

 

8.搭建PHP开发和运行环境

  (1)服务器端:下载并安装PHP服务器——XAMPP

c:/xampp/apache/bin/httpd.exe  静态WEB服务器

c:/xampp/php/php.exe   PHP解释器

  (2)服务器端启动WEB服务器,保证端口被打开(默认80)

  (3)服务器端:编写网页,保存在WEB服务器的特定目录下

c:/xampp/htdocs/     

记得删除此目录下的index.php文件

  -----------------------------------------------

  (4)客户端:打开浏览器,访问远程的WEB服务器即可

127.0.0.1:80

 

 

课后练习:

(1)删除上面笔记中所有的SQL代码,根据注释重新写出示例代码——练习!

(2)创建3.php,在此网页中向客户端输出如下内容:

姓名:丁当

电话13501234567

邮箱dingdang@tedu.cn

————————————————————

版权所有® DINGDANG.COM

(3)创建4.php,在此网页中向客户端输出如下内容:

1*1=1

2*1=2   2*2=4

3*1=3   3*2=6   3*3=9

4*1=4   4*2=8   4*3=12   4*4=16

......

posted on 2018-05-12 10:51  醉里挑灯看码  阅读(603)  评论(0编辑  收藏  举报