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

在线ui设计网站一个网站怎么赚钱

在线ui设计网站,一个网站怎么赚钱,做pcr查基因序列的网站,假冒建设银行网站前面的第三章到第八章中#xff0c;我们讲的是查询#xff0c;查询的基本结构已经进行了介绍#xff0c;聚合函数学习完后已经介绍了查询语句的完整的执行流程。 子查询指一个查询语句嵌套在另一个查询语句内部的查询#xff0c;这个特性从MySQL 4.1开始引入。本章也是查询…前面的第三章到第八章中我们讲的是查询查询的基本结构已经进行了介绍聚合函数学习完后已经介绍了查询语句的完整的执行流程。 子查询指一个查询语句嵌套在另一个查询语句内部的查询这个特性从MySQL 4.1开始引入。本章也是查询的最后一章难度也达到了顶峰在实际开发中写查询是最多的。 查询中需要重点关注的是多表查询和子查询下篇中会讲到优化主要的还是针对的是查询的优化查询中也是更多关注多表查询和子查询。 文章目录 1. 需求分析与问题解决1.1 实际问题1.2 子查询的基本使用1.3 子查询的分类 2. 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING 中的子查询2.4 CASE中的子查询2.5 子查询中的空值问题2.6 非法使用子查询 3. 多行子查询3.1 多行比较操作符3.2 代码示例3.3 空值问题 4. 相关子查询4.1 相关子查询执行流程4.2 代码示例4.3 EXISTS 与 NOT EXISTS关键字4.4 相关更新4.5 相关删除 5. 抛一个思考题6. 第九章练习 SQL 中子查询的使用大大增强了 SELECT 查询的能力因为很多时候查询需要从结果集中获取数据或者需要从同一个表中先计算得出一个数据结果然后与这个数据结果可能是某个标量也可能是某个集合进行比较。 1. 需求分析与问题解决 1.1 实际问题 现有解决方式 #方式一 SELECT salary FROM employees WHERE last_name Abel;SELECT last_name,salary FROM employees WHERE salary 11000;#方式二自连接 SELECT e2.last_name,e2.salary FROM employees e1,employees e2 WHERE e1.last_name Abel AND e1.salary e2.salary#方式三子查询 SELECT last_name,salary FROM employees WHERE salary (SELECT salaryFROM employeesWHERE last_name Abel);1.2 子查询的基本使用 子查询的基本语法结构狭义上的子查询指的就是下图中红色方框框选部分整体结构上是包含了子查询所以整体可以广义的说其为子查询 子查询内查询在主查询之前一次执行完成。上图中红色方框框选内容子查询的结果被主查询外查询使用 。红色方框框选之外的内容注意事项 子查询要包含在括号内将子查询放在比较条件的右侧(美观和可读性考虑)单行操作符对应单行子查询多行操作符对应多行子查询 1.3 子查询的分类 分类方式1 我们按内查询的结果返回一条还是多条记录将子查询分为单行子查询、多行子查询。 单行子查询 多行子查询 分类方式2 我们按内查询是否被执行多次将子查询划分为相关(或关联)子查询和不相关(或非关联)子查询。 举例 上面“谁的工资比Abel的高”的例子就是一个不相关子查询外查询需要将所有符合的数据与内查询的结果比较外查询的结果不管谁来都是与 11000比较。相关子查询查询工资大于本部门平均工资的员工信息分析要查员工及工资需要将员工与其对应部门的平均工资比较不同部门的平均工资有差异而员工与其对应部门的平均工资是具有相关性的内查询的部门平均工资是与外查询员工数据相关的这种情况就称为相关子查询。不相关子查询查询工资大于本公司平均工资的员工信息子查询从数据表中查询了数据结果如果这个数据结果只执行一次然后这个数据结果作为主查询的条件进行执行那么这样的子查询叫做不相关子查询。 同样如果子查询需要执行多次即采用循环的方式先从外部查询开始每次都传入子查询进行查询然后再将结果反馈给外部这种嵌套的执行方式就称为相关子查询(外查询数据与内查询结果具有相关性例如上例中员工工资与部门平均工资之间存在相关性)。 以下介绍先从不相关子查询开始后对相关子查询单独做一节介绍。 2. 单行子查询 单行子查询即内查询只返回一个数据供外查询使用。涉及到了单行子查询的操作符。 2.1 单行比较操作符 操作符含义equal togreater thangreater than or equal toless thanless than or equal tonot equal to 2.2 代码示例 理论上的已经讲的差不多了下面将会以例子的方式来进行介绍 子查询的编写技巧 思路1从里往外写 思路2从外往里写 题目查询工资大于149号员工工资的员工的信息 题目返回job_id与141号员工相同salary比143号员工多的员工姓名job_id和工资 SELECT last_name, job_id, salary FROM employees WHERE job_id (SELECT job_idFROM employeesWHERE employee_id 141) AND salary (SELECT salaryFROM employeesWHERE employee_id 143);题目返回公司工资最少的员工的last_name,job_id和salary SELECT last_name, job_id, salary FROM employees WHERE salary (SELECT MIN(salary)FROM employees);题目查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_idmanager_iddepartment_id 实现方式1不成对比较 SELECT employee_id, manager_id, department_id FROM employees WHERE manager_id IN(SELECT manager_idFROM employeesWHERE employee_id IN (174,141)) AND department_id IN (SELECT department_idFROM employeesWHERE employee_id IN (174,141)) AND employee_id NOT IN(174,141);实现方式2成对比较(了解即可) SELECT employee_id, manager_id, department_id FROM employees WHERE (manager_id, department_id) IN(SELECT manager_id, department_idFROM employeesWHERE employee_id IN (141,174)) AND employee_id NOT IN (141,174);2.3 HAVING 中的子查询 首先执行子查询。向主查询中的HAVING 子句返回结果。 题目查询最低工资大于50号部门最低工资的部门id和其最低工资 SELECT department_id, MIN(salary) FROM employees GROUP BY department_id HAVING MIN(salary) (SELECT MIN(salary)FROM employeesWHERE department_id 50);2.4 CASE中的子查询 在CASE表达式中使用单列子查询 题目显式员工的employee_id,last_name和location。其中若员工department_id与location_id为1800的department_id相同则location为’Canada’其余则为’USA’。 SELECT employee_id, last_name,(CASE department_idWHEN(SELECT department_id FROM departmentsWHERE location_id 1800) THEN Canada ELSE USA END) location FROM employees;2.5 子查询中的空值问题 查询last_name为Haas的job_id然后看员工中与其job_id 相同的员工name和job_id 发现是没有数据因为公司中没有Haas这个人那么内查询中结果就是一个空值也就不会出现数据的情况这种不会报错只是最终不会返回结果。 SELECT last_name, job_id FROM employees WHERE job_id (SELECT job_idFROM employeesWHERE last_name Haas);子查询不返回任何行 2.6 非法使用子查询 下例中内查询查出的是各个部门的最低工资显然得到的是多行数据然后使用“来进行判断”属于单行操作符因此属于非法使用就会报错。 SELECT employee_id, last_name FROM employees WHERE salary (SELECT MIN(salary)FROM employeesGROUP BY department_id);多行子查询使用单行比较符 3. 多行子查询 也称为集合比较子查询内查询返回多行使用多行比较操作符 3.1 多行比较操作符 操作符含义IN等于列表中的任意一个ANY需要和单行比较操作符一起使用和子查询返回的某一个值比较ALL需要和单行比较操作符一起使用和子查询返回的所有值比较SOME实际上是ANY的别名作用相同一般常使用ANY 体会 ANY 和 ALL 的区别 3.2 代码示例 将上节最后一个例子使用IN关键字改写为正确形式查各个部门最低工资并且查询哪些员工的工资恰好是最低工资 SELECT employee_id, last_name FROM employees WHERE salary IN(SELECT MIN(salary)FROM employeesGROUP BY department_id);题目返回其它job_id中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary 是不等于 题目返回其它job_id中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id以及salary 题目查询平均工资最低的部门id #方式1 SELECT department_id FROM employees GROUP BY department_id HAVING AVG(salary) (SELECT MIN(avg_sal)FROM (SELECT AVG(salary) avg_salFROM employeesGROUP BY department_id) dept_avg_sal)#方式2 SELECT department_id FROM employees GROUP BY department_id HAVING AVG(salary) ALL (SELECT AVG(salary) avg_salFROM employeesGROUP BY department_id )3.3 空值问题 查询不是manager_id的last_name SELECT last_name FROM employees WHERE employee_id NOT IN (SELECT manager_idFROM employees);上述没查到的原因是因为内查询结果manager_id中存在一个null的外查询返回的就是一个空。 4. 相关子查询 4.1 相关子查询执行流程 如果子查询的执行依赖于外部查询通常情况下都是因为子查询中的表用到了外部的表并进行了条件关联因此每执行一次外部查询子查询都要重新计算一次这样的子查询就称之为关联子查询。 相关子查询按照一行接一行的顺序执行主查询的每一行都执行一次子查询。 说明子查询中使用主查询中的列 4.2 代码示例 题目查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id 方式一相关子查询 outer是表别名 方式二在 FROM 中使用子查询 SELECT last_name,salary,e1.department_id FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees GROUP BY department_id) e2 WHERE e1.department_id e2.department_id AND e2.dept_avg_sal e1.salary;from型的子查询子查询是作为from的一部分子查询要用()引起来并且要给这个子查询取别名 把它当成一张“临时的虚拟的表”来使用。 在ORDER BY 中使用子查询 题目查询员工的id,salary,按照department_name 排序 SELECT employee_id,salary FROM employees e ORDER BY (SELECT department_nameFROM departments dWHERE e.department_id d.department_id);题目若employees表中employee_id与job_history表中employee_id相同的数目不小于2输出这些相同id的员工的employee_id,last_name和其job_id SELECT e.employee_id, last_name,e.job_id FROM employees e WHERE 2 (SELECT COUNT(*)FROM job_history WHERE employee_id e.employee_id);4.3 EXISTS 与 NOT EXISTS关键字 关联子查询通常也会和 EXISTS操作符一起来使用用来检查在子查询中是否存在满足条件的行。如果在子查询中不存在满足条件的行 条件返回 FALSE继续在子查询中查找 如果在子查询中存在满足条件的行 不在子查询中继续查找条件返回 TRUE NOT EXISTS关键字表示如果不存在某种条件则返回TRUE否则返回FALSE。 题目查询公司管理者的employee_idlast_namejob_iddepartment_id信息 方式一 SELECT employee_id, last_name, job_id, department_id FROM employees e1 WHERE EXISTS ( SELECT *FROM employees e2WHERE e2.manager_id e1.employee_id);方式二自连接 SELECT DISTINCT e1.employee_id, e1.last_name, e1.job_id, e1.department_id FROM employees e1 JOIN employees e2 WHERE e1.employee_id e2.manager_id;方式三 SELECT employee_id,last_name,job_id,department_id FROM employees WHERE employee_id IN (SELECT DISTINCT manager_idFROM employees);题目查询departments表中不存在于employees表中的部门的department_id和department_name SELECT department_id, department_name FROM departments d WHERE NOT EXISTS (SELECT XFROM employeesWHERE department_id d.department_id);上面介绍的相关子查询我们是以查询为例说明的其实放到整个增删改查中内部是个查询外部可能不是查询此处因为还没有介绍增删改以下先做一个了解 4.4 相关更新 UPDATE table1 alias1 SET column (SELECT expressionFROM table2 alias2WHERE alias1.column alias2.column);使用相关子查询依据一个表中的数据更新另一个表的数据。 题目在employees中增加一个department_name字段数据为员工对应的部门名称 # 1 ALTER TABLE employees ADD(department_name VARCHAR2(14));# 2 UPDATE employees e SET department_name (SELECT department_name FROM departments dWHERE e.department_id d.department_id); 4.5 相关删除 DELETE FROM table1 alias1WHERE column operator (SELECT expressionFROM table2 alias2WHERE alias1.column alias2.column);使用相关子查询依据一个表中的数据删除另一个表的数据。 题目删除表employees中其与emp_history表皆有的数据 DELETE FROM employees e WHERE employee_id in (SELECT employee_idFROM emp_history WHERE employee_id e.employee_id);5. 抛一个思考题 问题 谁的工资比Abel的高 解答 #方式1自连接 SELECT e2.last_name,e2.salary FROM employees e1,employees e2 WHERE e1.last_name Abel AND e1.salary e2.salary#方式2子查询 SELECT last_name,salary FROM employees WHERE salary (SELECT salaryFROM employeesWHERE last_name Abel);问题 以上两种方式有好坏之分吗 解答 自连接方式好 题目中可以使用子查询也可以使用自连接。一般情况建议你使用自连接因为在许多 DBMS 的处理过程中对于自连接的处理速度要比子查询快得多。 6. 第九章练习 第九章练习见“章节练习”文件夹可作为知识点及面试题使用
http://www.zqtcl.cn/news/115196/

相关文章:

  • 织梦教育培训网站源码素材图下载
  • 内容网站外贸网站外贸网站建设行吗
  • 什么是网络营销定义北京网站关键词优化
  • 开奖视频网站开发成都优化官网公司
  • 网站开发培训学校互联网软件外包平台
  • 房屋网签查询系统官方网站建设网站总经理讲话范本
  • 创建网站好的平台罗湖网站建设优化
  • 青海兴远建设工程有限公司网站wordpress怎么设计网站
  • 泉州建站公司模板马云谈2025的房价
  • 动漫制作专业什么电脑最适合沈阳关键词优化报价
  • seo企业网站源码虚拟主机如何建设多个网站
  • 电商 网站模板借钱软件推广微信hyhyk1
  • 免费网站模板psd建网站程序工具
  • 企业建设网站专业服务网站设置文件夹权限
  • 用ip做网站威海市城乡建设局网站
  • 网页网站开发设计工作前景做网站 兼职
  • c 网站开发类似优酷乐山旅游英文网站建设
  • 网站空间租用哪家好小程序免费制作平台企业中心
  • 个人网站可以做哪些主题网站别人做的收到方正侵权
  • 网站seo最新优化方法网络营销做的好的企业
  • 做网站如何防止被坑做的网站第二年续费多钱
  • 做网站注意哪些方面聊城住房建设局网站
  • ftp wordpress 搬站太仓做网站公司
  • php美食网站开发背景天津微外卖网站建设
  • 如何建造企业网站北京金山办公软件公司
  • dedecms织梦搬家公司网站模板贵阳国家经济技术开发区门户网站
  • 网站架构设计师网络工程师的就业前景
  • 网站建设所需人员世界各国o2o响应式网站
  • 成都网站设计最加科技企业宣传片观后感
  • 人社门户网站建设方案非官方网站建设