Day73(92标准连接查询)

2024-02-25 14:18
文章标签 查询 连接 标准 92 day73

本文主要是介绍Day73(92标准连接查询),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

92标准连接查询

#连接查询/*
含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
笛卡尔乘积现象:表1 有m行,表2有n行,结果=m*n行
发生原因:没有有效的连接条件
如何避免:添加有效的连接条件
分类:按年代分类:sql92标准:仅仅支持内连接sql99标准【推荐】:支持内连接+外连接(左外和右外)+交叉连接按功能分类:内连接:等值连接非等值连接自连接外连接:左外连接右外连接全外连接	交叉连接
*/
USE girls;SELECT*
FROMbeauty;SELECT*
FROMboys;SELECT`name`,boyname
FROMbeauty,boys
WHERE beauty.boyfriend_id = boys.id;#一、sql92标准
#1、等值连接/*
① 多表等值连接的结果为多表的交集部分
②n表连接,至少需要n-1个连接条件
③ 多表的顺序没有要求
④一般需要为表起别名
⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选
*/
#案例1:查询女神名和对应的男神名SELECTboyname,`name`
FROMboys,beauty
WHERE boys.id = beauty.boyfriend_id;#案例2:查询员工名和对应的部门名USE myemployees;SELECTlast_name,department_name
FROMemployees,departments
WHERE employees.department_id = departments.department_id;#2、为表起别名/*
①提高语句的简洁度
②区分多个重名的字段
注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定
*/
#查询员工名、工种号、工种名SELECTe.last_name,e.job_id,j.job_title
FROMemployees e,jobs j
WHERE e.job_id = j.`job_id`;#3、两个表的顺序是否可以调换
#查询员工名、工种号、工种名SELECTe.last_name,e.job_id,j.job_title
FROMjobs j,employees e
WHERE e.job_id = j.`job_id`;#4、可以加筛选
#案例1:查询有奖金的员工名、部门名SELECTlast_name,department_name
FROMemployees e,departments d
WHERE e.`commission_pct` IS NOT NULL;#案例2:查询城市名中第二个字符为o的部门名和城市名SELECTdepartment_name,city
FROMdepartments d,locations l
WHERE d.location_id = l.location_idAND city LIKE '_o%';#5、可以加分组
#案例1:查询每个城市的部门个数SELECTCOUNT (*),city
FROMdepartments d,locations l
WHERE d.`location_id` = l.`location_id`
GROUP BY city;#案例2:查询有奖金的每个部门的部门名和部门的领导编号和该部门的最低工资SELECTdepartment_name,e.manager_id,MIN (salary)
FROMdepartments d,employees e
WHERE e.department_id = d.`department_id`AND e.`commission_pct` IS NOT NULL
GROUP BY department_name,d.manager_id;#6、可以加排序
#案例:查询每个工种的工种名和员工的个数,并且按员工个数降序SELECTjob_title,COUNT (*)
FROMjobs j,employees e
WHERE j.`job_id` = e.`job_id`
GROUP BY job_title
ORDER BY COUNT (*) DESC;#7、可以实现三表连接?
#案例:查询员工名、部门名和所在的城市SELECTe.last_name,d.department_name,l.city
FROMemployees e,departments d,locations l
WHERE e.`department_id` = d.`department_id`AND d.`location_id` = l.`location_id`;#2、非等值连接
#案例1:查询员工的工资和工资级别SELECTsalary,grade_level
FROMemployees,job_grades
WHERE salary BETWEEN lowest_salAND highest_sal;/*
select salary,employee_id from employees;
select * from job_grades;
CREATE TABLE job_grades
(grade_level VARCHAR(3),lowest_sal  int,highest_sal int);
INSERT INTO job_grades
VALUES ('A', 1000, 2999);
INSERT INTO job_grades
VALUES ('B', 3000, 5999);
INSERT INTO job_grades
VALUES('C', 6000, 9999);
INSERT INTO job_grades
VALUES('D', 10000, 14999);
INSERT INTO job_grades
VALUES('E', 15000, 24999);
INSERT INTO job_grades
VALUES('F', 25000, 40000);
*/
#3、自连接
#案例:查询 员工名和上级的名称SELECTe.last_name,m.last_name
FROMemployees e,employees m
WHERE e.manager_id = m.employee_id;

这篇关于Day73(92标准连接查询)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745737

相关文章

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构