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

免费网站代理原创网站开发流程

免费网站代理,原创网站开发流程,优秀网站设计案例分析,培训课程ui设计子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里面主要还是针对查询的优化. 子查询是mysql4.1里面引入的,现在java用的比较多的是8.0,数据库和java企业都没有动力去更新,我们讲课的向下兼容的,虽然现在是8.0,但是讲的还是会涉及,当我们现在有一个需求,查询谁的工资比a高,所以我们要先查询abel的工资,然后再把这个工资放入查询条件中进行查询. 首先我们看到了这个需求,谁的工资比abel高,我们如何不用子查询来进行. SELECT last_name,salary FROM employees WHERE last_name’abel’ 我们可以看到abel工资的11000,我们现在就查询工资比11000高就行. 我们要和数据库服务器进行2次交互,效率肯定是比较低的,我们就像能不能用一条语句来进行.我们是不是可以用自连接来进行 SELECT T1.last_name,T1.salary FROM employees T1 JOIN employees T2 ON T1.salaryT2.salary AND T2.last_nameabel 这时我们利用自连接,把所有工资比abel高的字段筛选出来. 方式2自连接肯定要比方式1块 1虽然这个条件可以用多表查询,但是其他类似的条件就不能用自连接 2:这个不容易想出来,不够直观 那么我们就可以引入子查询 子查询介绍 我们先写WHERE条件,因为这个条件不是一个值,我们需要用另一个查询才能查询出来,所以我们直接把查询条件改成另一个查询结构SELECT last_name,salary FROM employees WHERE salary( SELECT salary FROM employees WHERE last_nameabel) 注意这里的查询条件只能出现一个值.由一个问题需求引入一个查询 首先我们谈谈一个名称,一个称谓,子查询包括了外查询,和内查询. 外面的查询就叫外查询,里面的就叫内查询,这是相对的叫法. 外查询也被叫做主查询,内查询也被叫子查询. 接下来我们看看有什么具体的要求, 1子查询是在主查询之前一次查询, 2子查询的结果被外查询使用 注意事项 1:子查询要被括号包裹,由于子查询比较复杂,用括号包裹会比较清晰 2子查询要放在比较条件的右侧 Ps,就是在比较符号的后面,如果在前面就是这样 SELECT last_name,salary FROM employees WHERE ( SELECT salary FROM employees WHERE last_nameabel)salary 我们会发现这样也行,但是为什么要这样呢,我们这是为了可读性和美观的考虑.头短尾长比较好. 3.单行操作费对应单行子查询,多行操作符对应多行子查询. 子查询分类 分类可以从不同的角度去分,第一个角度, 角度1: 出多个结果或者一个结 单行子查询,, 查询之后出一个结果的就是单行子查询 多行子查询 查询之后出多个结果的就是单行子查询 角度2内查询是否被执行多次 相关查询: 比如我们需要查询部门工资大于本部门平均工资的员工信息 里面的子查询会因为外查询记录部门的不同返回的值而改变.也就是返回不同的平均值. 比如白和白生的就是黑的, 不相关查询 比如需求我们要查询工资大于公司的平均工资的员工. 里面的子查询,或者说内查询条件,不会跟随外查询记录的改变而改变, 这里的就说清楚了,因为我们的子查询语句比较多,所以要写的行数也比较多,所以我们先做一个分类,我们下面要讲的就是单行子查询和多行子查询的案例. 我会把这两个查询的范围都限制在不相关子查询内容,所以下面的相关子查询把这个难度就调高起来 趁热打铁开始吧 也就是里面只有一个数据供我们外部使用, 子查询的编写技巧: 1从里往外写 2从外往里写 单行子查询 单行子查询操作符号 ! 也就是我们之前的逻辑操作符号 情况1 ”查询工资大于149号员工工资的员工信息 由于我们不知道149号员工的工资,我们就要进行子查询.” 这里因为比较简单,所以我们技巧1和技巧2都可以 我们就先写子查询 SELECT employee_id FROM employees WHERE employee_id149 再写外查询 没问题,我们就查询出来了 题目2返回job_id与141号员工相同,salary比143员工多的员工姓名 SELECT employee_id,job_id,salary FROM employees WHERE job_id( SELECT job_id FROM employees WHERE employee_id141) AND salary( SELECT salary FROM employees WHERE employee_id143) 如果我们看见了一个查询语句,我们可以把这个语句转换为中文吗,也就是要看出这个查询语句来看出它的需求.这个能力也要有,我们现在主要是做需求. 题目返回公司工资最少的员工last_name,job_id和salary SELECT last_name,job_id,salary FROM employees WHERE salary( SELECT MIN(salary) FROM employees) 注意这里可能是好几个员工,但是还是单行子查询,因为我们内查询只返回一条记录 情况2 查询与141号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id 我们先不用理过滤条件,查询其他员工的 employee_id,manager_id,department_id还是会写的把,我们就先写外查询 SELECT employee_id,manager_id,department_id FROM employees WHERE 然后补充内查询 SELECT employee_id,manager_id,department_id FROM employees WHERE manager_id ( SELECT manager_id FROM employees WHERE employee_id141) AND department_id ( SELECT department_id FROM employees WHERE employee_id141) 这是方式1: 方式1成对子查询 我们还有一个方式2,可以一次性把两个字段条件写在一起 SELECT employee_id,manager_id,department_id FROM employees WHERE (manager_id,department_id) ( SELECT manager_id,department_id FROM employees WHERE employee_id141) 结果是一致的,这叫我们的成对子查询.效率上差别不大,上面的适用性比较高,所以这个不会写也没事,了解就可以了.适用场景太窄了 情况3,HAVING中的子查询 题目:查询最低工资大于50号部门最低工资的 部门id和其最低工资 SELECT MIN(salary) SELECT department_id,MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary)( SELECT MIN(salary) FROM employees WHERE department_id50) 因为五十号部门工资是不确定的,所以我们要用到子查询 这里不行要空值我们就可以用外查询WHERE筛选掉 SELECT department_id,MIN(salary) FROM employees WHERE department_id IS NOT NULL GROUP BY department_id HAVING MIN(salary)( SELECT MIN(salary) FROM employees WHERE department_id50) 所以我们HAVING中我们也可以使用子查询 情况4:CASE中的子查询 显示员工的employee_id,last_name和location.其中若员工department_id与location_id为1800的department_id相同则location为canada,其余为USA 这里我们还是先写外查询再写内查询, SELECT employee_id,last_name,( CASE department_id WHEN ( SELECT department_id FROM departments JOIN locations T3 ON T3.location_iddepartments.location_id WHERE T3.location_id1800) THEN canada ELSE USA END ) location FROM employees 情况5:子查询中的空值问题. 如果子查询的结果是空值,那么不会报错,返回的会是一个空表比如下面这种情况 SELECT last_name,job_id FROM employees WHERE job_id(SELECT job_id FROM employees WHERE last_name102) 情况6:非法使用子查询 如果我们用单行操作符进行多行操作,会出现什么情况 这时会直接报错 下期介绍 如果多行子查询我们就应该用多行操作符号,IN或者BETWEEN.
http://www.w-s-a.com/news/829497/

相关文章:

  • 深圳专业设计网站公司国际网站建设经验
  • 网站产品页排名怎么做网站备案起名要求
  • 成都企业网站建设及公司ppt生活分类信息网站大全
  • 免费企业网站源码下载学服装设计需要什么条件
  • 淘宝网站开发方式深圳平面设计公司排名榜
  • 品牌网站建设收费情况登陆页面模板
  • 十大免费cms建站系统介绍科技网站欣赏
  • 自学做网站需要多久semir是什么品牌
  • 南通网站搜索引擎优化网站首页seo关键词布局
  • 东莞市国外网站建设多少钱wordpress 多媒体插件
  • c2c商城网站建设公司做水果生意去哪个网站
  • 做网站服务器有哪些电子商务网站建立
  • 网站开发的具体流程原材料价格查询网站
  • 深圳响应式网站建设深圳网站建设定制开发 超凡科技
  • 网站建设报价怎么差别那么大wordpress产品属性搭配
  • 高校网站建设情况报告范文pc建站网站
  • 做网站美工要学什么广东省建设厅网站首页
  • 深圳网站设计十年乐云seo网站建设 竞赛 方案
  • 新乡移动网站建设wordpress输出某一分类的文章
  • 花店网站开发设计的项目结构重庆网站建设培训班
  • 做网站的技术体系投资者互动平台官网
  • 北京网站建设公司哪家实惠企查查在线查询入口
  • 毕业设计做网站怎么样非微信官方网页自己做的网站
  • 昆明网站多端小程序设计重庆市住房和城乡建设厅网站
  • 网站制作技术人员国际新闻最新10条
  • 做同城特价的网站wordpress后台能修改模板文件
  • 网站信息可以边建设边组织产品展示网站源码php
  • 电子商务网站规划从哪些方面入手途牛企业网站建设方案
  • 莱阳网站定制易语言可以做网站嘛
  • 购物网站开发意义上海中小企业服务中心官网