zoukankan      html  css  js  c++  java
  • 数据库-mysql语句-查-WEB服务器

    (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

    ......

  • 相关阅读:
    ps使logo背景色透明
    ps切图的基本操作
    json
    py3中reduce
    列表去重的多种方法
    python之小数据池
    基于中间件访问频率限制 每分钟时间间隔最多访问3次
    三种实现登录验证的方式
    时间复杂度
    importlib
  • 原文地址:https://www.cnblogs.com/QiliPING9/p/9027980.html
Copyright © 2011-2022 走看看