当前位置: 首页 > news >正文

建设商城购物网站网站正在建设中中文

建设商城购物网站,网站正在建设中中文,为什么做的网站在谷歌浏览器打不开,做类似淘宝的网站一、子查询定义 当我们进⾏语句查询的时候#xff0c;总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏#xff0c;就是说A 查询语句需要依赖B 查询语句的查询结果#xff0c;B 查询就是⼦查询#xff0c;A 查询语句就是主查询#xff0c;⼀个SQL语句可以…一、子查询定义 当我们进⾏语句查询的时候总会遇到我们需要的条件需要通过另⼀个查询语句查询出来后才能进⾏就是说A 查询语句需要依赖B 查询语句的查询结果B 查询就是⼦查询A 查询语句就是主查询⼀个SQL语句可以包含多个⼦查询。 二、子查询出现的地方 在where⼦句中: ⼦查询的结果具体可⽤作条件筛选时使⽤的值。在from⼦句中: ⼦查询的结果可充当⼀张表或视图需要使⽤表别名。在having⼦句中: ⼦查询的结果可⽤作分组查询再次条件过滤时使⽤的值在select⼦句中: ⼦查询的结果可充当⼀个字段。仅限⼦查询返回单⾏单列的情况。这种情况下会输出没有结果的话结果会有null的情况 1、子查询出现在where子句中 1、查询⼯资⼤于10号部⻔的平均⼯资的⾮10号部⻔的员⼯信息 分析 110号部⻔的平均⼯资select avg(sal) from emp where deptno 10; 2查询员工信息select * from emp where deptno ! 10 and sal (select avg(sal) from emp where deptno 10);---------------------------------------------------------------- | empno | ename | job | mgr | hiredate | sal | comm | deptno | ---------------------------------------------------------------- | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | ----------------------------------------------------------------2、查询与7369同部⻔的同事信息select deptno from emp where empno 7369;select * from emp where deptno (select deptno from emp where empno 7369)and empno ! 7369;---------------------------------------------------------------- | empno | ename | job | mgr | hiredate | sal | comm | deptno | ---------------------------------------------------------------- | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | ----------------------------------------------------------------2、子查询出现在from子句中 1、查询员⼯的姓名⼯资及其部⻔的平均⼯资select ename,sal from emp ;思考每一个部门的平均工资是多少select deptno,avg(sal) from emp group by deptno; --------------------- | deptno | avg(sal) | --------------------- | 10 | 2916.666667 | | 20 | 2175.000000 | | 30 | 1566.666667 | | 100 | NULL | --------------------- 4 rows in set (0.09 sec) 查询员工信息 select * from emp; mysql select * from emp; ---------------------------------------------------------------------- | empno | ename | job | mgr | hiredate | sal | comm | deptno | ---------------------------------------------------------------------- | 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 | | 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 | 30 | | 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 | 30 | | 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 | | 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 | 30 | | 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850.00 | NULL | 30 | | 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450.00 | NULL | 10 | | 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 | | 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 | | 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 | 0.00 | 30 | | 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 | | 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950.00 | NULL | 30 | | 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 | | 7934 | MILLER | CLERK | 7782 | 1982-01-23 | 1300.00 | NULL | 10 | | 8000 | LaoYan | NULL | NULL | NULL | NULL | NULL | 100 | ----------------------------------------------------------------------此时查询出来的平均工资表可以当做一个虚拟的表和emp表关联起来mysql select * from ( select deptno,avg(sal) avgMoney from emp group by deptno ) avgTable; --------------------- | deptno | avgMoney | --------------------- | 10 | 2916.666667 | | 20 | 2175.000000 | | 30 | 1566.666667 | | 100 | NULL | ---------------------现在 avgTable 表 和 emp 通过 deptno 相关联 select ename,sal,avgMoney from emp , (select deptno,avg(sal) avgMoney from emp group by deptno) avgTable where emp.deptnoavgTable.deptno; ------------------------------ | ename | sal | avgMoney | ------------------------------ | SMITH | 800.00 | 2175.000000 | | ALLEN | 1600.00 | 1566.666667 | | WARD | 1250.00 | 1566.666667 | | JONES | 2975.00 | 2175.000000 | | MARTIN | 1250.00 | 1566.666667 | | BLAKE | 2850.00 | 1566.666667 | | CLARK | 2450.00 | 2916.666667 | | SCOTT | 3000.00 | 2175.000000 | | KING | 5000.00 | 2916.666667 | | TURNER | 1500.00 | 1566.666667 | | ADAMS | 1100.00 | 2175.000000 | | JAMES | 950.00 | 1566.666667 | | FORD | 3000.00 | 2175.000000 | | MILLER | 1300.00 | 2916.666667 | | LaoYan | NULL | NULL | ------------------------------ 最终的答案虚拟机的表解释--任何的查询结果都可以当做一个虚拟机的表来使用 mysql select ename,job,sal from emp where job is not null; ---------------------------- | ename | job | sal | ---------------------------- | SMITH | CLERK | 800.00 | | ALLEN | SALESMAN | 1600.00 | | WARD | SALESMAN | 1250.00 | | JONES | MANAGER | 2975.00 | | MARTIN | SALESMAN | 1250.00 | | BLAKE | MANAGER | 2850.00 | | CLARK | MANAGER | 2450.00 | | SCOTT | ANALYST | 3000.00 | | KING | PRESIDENT | 5000.00 | | TURNER | SALESMAN | 1500.00 | | ADAMS | CLERK | 1100.00 | | JAMES | CLERK | 950.00 | | FORD | ANALYST | 3000.00 | | MILLER | CLERK | 1300.00 | ---------------------------- 14 rows in set (0.09 sec)mysql select * from (select ename,job,sal from emp where job is not null) eemp; ---------------------------- | ename | job | sal | ---------------------------- | SMITH | CLERK | 800.00 | | ALLEN | SALESMAN | 1600.00 | | WARD | SALESMAN | 1250.00 | | JONES | MANAGER | 2975.00 | | MARTIN | SALESMAN | 1250.00 | | BLAKE | MANAGER | 2850.00 | | CLARK | MANAGER | 2450.00 | | SCOTT | ANALYST | 3000.00 | | KING | PRESIDENT | 5000.00 | | TURNER | SALESMAN | 1500.00 | | ADAMS | CLERK | 1100.00 | | JAMES | CLERK | 950.00 | | FORD | ANALYST | 3000.00 | | MILLER | CLERK | 1300.00 | ---------------------------- 14 rows in set (0.06 sec)3.子查询在select语句中 2、查询员⼯的姓名⼯资及其部⻔的平均⼯资 说一个情况 emp表和emp表也是可以自己关联自己的。select * from emp e1, emp e2 where e1.empno e2.empno;select ename,sal, (select avg(sal) from emp e2 where e2.deptno e1.deptno ) 部门平均工资 from emp e1; 拆解 select avg(sal) from emp e2 where e2.deptno 10; select avg(sal) from emp e2 where e2.deptno 20;最终的答案 ------------------------------- | ename | sal | 部门平均工资 | ------------------------------- | SMITH | 800.00 | 2175.000000 | | ALLEN | 1600.00 | 1566.666667 | | WARD | 1250.00 | 1566.666667 | | JONES | 2975.00 | 2175.000000 | | MARTIN | 1250.00 | 1566.666667 | | BLAKE | 2850.00 | 1566.666667 | | CLARK | 2450.00 | 2916.666667 | | SCOTT | 3000.00 | 2175.000000 | | KING | 5000.00 | 2916.666667 | | TURNER | 1500.00 | 1566.666667 | | ADAMS | 1100.00 | 2175.000000 | | JAMES | 950.00 | 1566.666667 | | FORD | 3000.00 | 2175.000000 | | MILLER | 1300.00 | 2916.666667 | | LaoYan | NULL | NULL | -------------------------------优化一下工资 保留小数点后2位 select ename,sal, round(( select avg(sal) from emp e2 where e2.deptno e1.deptno),2) 部门平均工资 from emp e1; ------------------------------- | ename | sal | 部门平均工资 | ------------------------------- | SMITH | 800.00 | 2175.00 | | ALLEN | 1600.00 | 1566.67 | | WARD | 1250.00 | 1566.67 | | JONES | 2975.00 | 2175.00 | | MARTIN | 1250.00 | 1566.67 | | BLAKE | 2850.00 | 1566.67 | | CLARK | 2450.00 | 2916.67 | | SCOTT | 3000.00 | 2175.00 | | KING | 5000.00 | 2916.67 | | TURNER | 1500.00 | 1566.67 | | ADAMS | 1100.00 | 2175.00 | | JAMES | 950.00 | 1566.67 | | FORD | 3000.00 | 2175.00 | | MILLER | 1300.00 | 2916.67 | | LaoYan | NULL | NULL | -------------------------------再来一遍仔细品味 mysql select ename,sal, ( select avg(sal) from emp e2 where e2.deptno 10 ) from emp; ----------------------------------------------------------------------- | ename | sal | ( select avg(sal) from emp e2 where e2.deptno 10 ) | ----------------------------------------------------------------------- | SMITH | 800.00 | 2916.666667 | | ALLEN | 1600.00 | 2916.666667 | | WARD | 1250.00 | 2916.666667 | | JONES | 2975.00 | 2916.666667 | | MARTIN | 1250.00 | 2916.666667 | | BLAKE | 2850.00 | 2916.666667 | | CLARK | 2450.00 | 2916.666667 | | SCOTT | 3000.00 | 2916.666667 | | KING | 5000.00 | 2916.666667 | | TURNER | 1500.00 | 2916.666667 | | ADAMS | 1100.00 | 2916.666667 | | JAMES | 950.00 | 2916.666667 | | FORD | 3000.00 | 2916.666667 | | MILLER | 1300.00 | 2916.666667 | | LaoYan | NULL | 2916.666667 | ----------------------------------------------------------------------- 15 rows in set (0.10 sec)mysql select ename,sal, ( select avg(sal) from emp e2 where e2.deptno emp.deptno ) from emp; ------------------------------------------------------------------------------- | ename | sal | ( select avg(sal) from emp e2 where e2.deptno emp.deptno ) | ------------------------------------------------------------------------------- | SMITH | 800.00 | 2175.000000 | | ALLEN | 1600.00 | 1566.666667 | | WARD | 1250.00 | 1566.666667 | | JONES | 2975.00 | 2175.000000 | | MARTIN | 1250.00 | 1566.666667 | | BLAKE | 2850.00 | 1566.666667 | | CLARK | 2450.00 | 2916.666667 | | SCOTT | 3000.00 | 2175.000000 | | KING | 5000.00 | 2916.666667 | | TURNER | 1500.00 | 1566.666667 | | ADAMS | 1100.00 | 2175.000000 | | JAMES | 950.00 | 1566.666667 | | FORD | 3000.00 | 2175.000000 | | MILLER | 1300.00 | 2916.666667 | | LaoYan | NULL | NULL | ------------------------------------------------------------------------------- 15 rows in set (0.11 sec)再来一题 查询每个员⼯的信息及其部⻔的平均⼯资⼯资之和部⻔⼈数 select *,(select avg(sal) from emp e1 where e1.deptno emp.deptno) 平均工资,(select sum(sal) from emp e2 where e2.deptno emp.deptno) 工资之和,(select count(*) from emp e3 where e3.deptno emp.deptno) 部门人数 from emp;尝试-- 这种不行报 Operand should contain 1 column(s) select *,(select avg(sal) 平均工资,sum(sal) 工资之和,count(*) 部门人数 from emp e1 where e1.deptno emp.deptno) from emp;改变思路在玩一种很新的东西mysql select deptno,avg(sal) 平均工资,sum(sal) 工资之和,count(*) 部门人数 from emp e1group by deptno ; ----------------------------------------- | deptno | 平均工资 | 工资之和 | 部门人数 | ----------------------------------------- | 10 | 2916.666667 | 8750.00 | 3 | | 20 | 2175.000000 | 10875.00 | 5 | | 30 | 1566.666667 | 9400.00 | 6 | | 100 | NULL | NULL | 1 | -----------------------------------------硬套进去失败了原因是这个地方只允许出现一列数据 select * , (select * from (select deptno,avg(sal) 平均工资,sum(sal) 工资之和,count(*) 部门人数 from emp e1group by deptno) pgb where pgb.deptno emp.deptno ) from emp;4.having后有子查询 查询平均⼯资⼤于30号部⻔的平均⼯资的部⻔号和平均⼯资 分析30号部⻔的平均⼯资 select avg(sal) from emp where deptno 30; 查询所有部门的平局工资 select deptno,avg(sal) from emp group by deptno;整合 select deptno,avg(sal) avgMoney from emp group by deptno having avgMoney (select avg(sal) from emp where deptno 30); --------------------- | deptno | avgMoney | --------------------- | 10 | 2916.666667 | | 20 | 2175.000000 | ---------------------三.关键字EXISTSANYALL的子查询 举个例子 1.EXISTS关键字 EXISTS关键字后面的参数可以是任意一个子查询它不产生任何数据只返回TRUE或FALSE。 当返回值为TRUE时外层查询才会执行。 假如王五同学在学生表中则从班级表查询所有班级信息 MySQL命令 select * from class where exists (select * from student where sname王五);2.带ANY关键字的子查询 ANY关键字表示满足其中任意一个条件就返回一个结果作为外层查询条件。 查询比任一学生所属班级号还大的班级编号 MySQL命令 select * from class where cid any (select classid from student);3.带ALL关键字的子查询 ALL关键字与ANY有点类似只不过带ALL关键字的子査询返回的结果需同时满足所有内层査询条件。 select * from class where cid all (select classid from student);
http://www.yutouwan.com/news/129417/

相关文章:

  • 交易网站模板福州帮人建网站公司
  • 网站改版提升总结免费ai写作网站
  • 西安做网站魔盒门店销售管理系统
  • 飞猪旅游的网站建设亿创电力建设集团有限公司网站
  • 药监局网站建设方案静态网站有什么用
  • 手机网站布局教程上海网站建设门户
  • 网上自己建网站app开发技术
  • 最新自助建站源码外网下载
  • wordpress站点字体修改京东自营入驻流程及费用
  • 连接器天津有公司做吗做新的网站seo
  • 免费的源代码分享有哪些网站图像放大网站
  • 如何自己学做网站网站建设落后发言
  • 对比色网站设计微信官网网站模板下载不了
  • 制作网站哪里好品牌宣传策略有哪些
  • 深圳深圳网站建设公司上海网站建设咨
  • 吉林电商网站建设价格几十万做网站平台
  • 妇女网站建设方案图书销售网站设计怎么做
  • 网站seo策划方案设计徐州网站建设制作工作室
  • 产品网站建设公司哪家好wordpress发不了邮件
  • wordpress 文字编辑seo顾问人
  • 最具价值的网站建设wordpress公共函数在哪里
  • 在华图做网站编辑网站开发考核
  • 网站群怎么做dede网站模板下载
  • 工信部网站备案通知网站建设和安全管理制度
  • 郓城网站建设价格怎么做百度网站会显示图片在旁边
  • 新建网站二级网页怎么做企业网站公示怎么做
  • 行业网站排名WordPress住小程序
  • 三亚网站开发公司微信网站怎么做的好处
  • 建设一个网站需要条件佛山新网站建设公司
  • 台州宇洋台州网站建设赣州网络公司排名