연결 쿼리
다중 테이블 연결 쿼리를 수행할 때 필드가 속한 테이블을 지정해야 쿼리 효율성을 높일 수 있습니다. 각 테이블에서 필드를 검색합니다
e 필드 이름: emp 테이블의 특정 필드를 나타냅니다
emp: 테이블의 별칭 메커니즘, as를 생략하고 다음과 같이 직접 쓸 수 있습니다. emp e
연결 쿼리: 교차 테이블 쿼리라고도 하며, 이는 필수입니다. 여러 테이블을 연결하여 데이터를 함께 쿼리합니다.
emp 테이블과 dept 테이블을 결합하여 데이터를 쿼리하고, emp 테이블에서 직원 이름을 가져오고, dept 테이블에서 부서 이름을 가져옵니다
참고: 연결 쿼리를 수행할 때 반드시 연결 쿼리를 수행하세요. 데카르트 곱 현상을 피하기 위해 관련 조건을 작성해야 합니다
조인 쿼리
문법 시대에 따른 분류
SQL92:1992년에 등장한 문법
sql92의 단점: 구조가 명확하지 않고 테이블의 연결 조건, 조건이 이후 단계의 추가 필터링을 위해 모두 where
SQL99 뒤에 배치됩니다. 1999년에 등장한 구문(키 학습)
sql99 장점: 테이블 연결 조건 및 쿼리 조건부 분리, 추가 필터링이 필요한 경우 연결 후 계속해서 어디에 추가하면 여러 테이블을 연결할 때 더 명확해집니다
테이블 연결 방식에 따른 분류
내부 조인: 등호 조인, 비등호 조인 값 조인, 셀프 조인 , 내부는 생략 가능하며 일반적으로 추가되지 않습니다
테이블 A 내부 조인 연결 조건에 대한 테이블 B
외부 조인: 왼쪽 외부 조인(왼쪽 조인), 오른쪽 외부 조인(오른쪽 조인), 외부 가능 일반적으로 추가하지 않음 add
테이블 A 왼쪽 외부 조인 테이블 B 연관 조건
테이블 B 오른쪽 외부 조인 테이블 A 연관 조건
왼쪽 조인은 왼쪽 테이블을 기준으로 하고 테이블과 비교해야 합니다. 오른쪽에는 왼쪽 테이블과 동일한 부등식이 표시되고, 오른쪽 테이블에는 조건을 충족하는 부등식이 표시되고, 조건을 충족하지 않는 부등식은 표시되지 않습니다. (오른쪽 조인은 정반대입니다.) )
왼쪽 조인으로 완료할 수 있는 기능은 오른쪽 조인으로 확실히 완료할 수 있습니다
완전 조인, 연결된 두 테이블은 모두 메인 테이블이므로 쿼리할 수 있습니다
데카르트 곱 현상
쿼리를 위해 두 개의 테이블을 연결하고 연결 조건을 지정하지 않은 경우 쿼리 결과의 최종 개수는 두 개의 테이블 항목이 됩니다. 숫자의 곱, 이 현상을 데카르트 곱 현상이라고 합니다(데카르트가 발견한 수학적 현상입니다)
데카르트 곱 현상 방지: 여러 테이블 연결 시 연결 조건을 추가하고, 이 조건에 맞는 기록 레코드는 걸러냈습니다.
매칭 과정에서 일치 횟수는 줄지 않았지만, 최종 쿼리 결과의 개수는 줄어들었습니다. 연결 조건에 따라 필터링되었습니다
데카르트 곱 현상을 통해 테이블 연결 수가 많을수록 효율성이 떨어진다는 결론을 내릴 수 있습니다. 테이블 연결 수를 피하십시오
등가 조인. of Inner Joins
조건이 동일하므로 동등 조인(동일 조건을 조인하는 데이터)이라고 합니다
각 직원이 위치한 부서 이름을 쿼리하여 직원 이름과 부서를 표시합니다
emp e 및 dept d 테이블이 연결되어 있는 경우 연결 조건은 다음과 같습니다. e.deptno = d.deptno
--sql92的缺点:结构不清晰,表的连接条件,和后期进一步筛选的条件,都放到了where后面 select e.ename,d.dname from emp e, dept d where e.deptno = d.deptno; --sql99优点:表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后继续添加where select e.ename,d.dname from emp e --inner可以省略(带着inner可读性更好) (inner) join dept d on e.deptno = d.deptno;
Inner Join self-join
테이블 연결이 하나뿐이므로 구체적인 쿼리 방법은 하나의 테이블을 두 테이블로 처리하여 스스로 연결하는 것입니다. 이므로 self-join이 됩니다
직원의 상위 리더를 조회하려면 직원 이름과 해당 리더 이름을 표시해야 합니다
하나의 테이블은 두 개의 Zhang 테이블로 취급되며, emp e는 직원 테이블을 나타내고, emp m은 리더 테이블도 나타냅니다
연결 조건: e.mgr = m.empno 직원의 리더 번호 = 리더의 직원 번호
--SQL92 select e.ename, m.ename from emp e, emp m where e.mgr=m.empno; --SQL99 select a.ename as '员工名', b.ename as '领导名' from emp e join emp m on e.mgr = m.empno;
내부 조인의 비동등 조인
연결 조건은 등가 관계가 아니기 때문에 비등가접속이라고 합니다
연봉이 2000보다 큰 사원 정보를 표시하고, 그것이 속한 부서명을 표시합니다
--采用 SQL92 语法 select e.ename, e.sal, d.dname from emp e, dept d where e.deptno=d.deptno and e.sal > 2000; --采用 SQL99 语法 select e.ename, e.sal, d.dname from emp e (inner) join dept d on e.deptno=d.deptno where e.sal>2000;
각 사원의 급여 등급을 알아내어 사원 이름을 표시하도록 요구합니다. , 급여, 급여 등급
select e.ename, e.sal, s.grade from emp e (inner) join salgrade s on e.sal between s.losal and s.hisal;
외부 조인
외부 조인: 외부 조인에서는 두 테이블을 연결하여 1차 및 2차 관계를 생성하며, 주 쿼리는 기본 테이블의 데이터이고 보조 테이블은 쿼리됩니다. 즉, 상대방이 내 메인 테이블과 일치하는 레코드가 없으면 기본 상대는 null이고 외부 키워드는 생략할 수 있습니다.
오른쪽 외부 조인: 오른쪽이 있는 것이 오른쪽입니다. 외부 조인, 즉 조인 키워드 오른쪽에 있는 테이블이 기본 테이블로 간주되어 주로 이 테이블의 모든 데이터를 쿼리하고 연관
왼쪽 외부 조인을 사용하여 왼쪽에 있는 테이블을 쿼리합니다. with left t는 왼쪽 외부 조인으로, 조인 키워드의 왼쪽에 있는 테이블을 본다는 의미입니다. 메인 테이블은 이 테이블의 모든 데이터를 쿼리하고 연관을 사용하여 오른쪽에 있는 테이블을 쿼리하는 것입니다
* *참고: 오른쪽 조인에는 왼쪽 조인이 있고 왼쪽 조인에는 오른쪽 조인이 있습니다. 연결 작성 방법**
查询每个员工的上级领导,要求显示所有员工的名字和领导名 , 如果某个员工没有领导 , 那么该员工也必须显示出来
--左连接 select a.ename as '员工名', b.ename as '领导名' from emp a left (outer) join emp b on a.mgr = b.empno; --右连接 select a.ename as '员工名', b.ename as '领导名' from emp b right (outer) join emp a on a.mgr = b.empno;
内连接和外连接的特点
内连接:A表和B表连接,A和B两张表没有主次关系是平等的 , 查询时只是将能够匹配上连接条件的数据查询出来 , 即如果没有匹配的就查询不出来 , inner关键字可以省略
外连接: 在外连接当中,两张表连接产生了主次关系 , 主要查询的是主表的数据 , 捎带着关联查询次表 , 即如果对方没有记录和我主表匹配 , 那么默认对方是null , outer关键字可以省略
注意: 区分内外连接的办法是通过 right 和 left 关键字 , 不是通过 inner 和 outer 因为它们都可以省略 , 并且外连接的查询结果条数一定是大于等于内连接的查询结果条数
显示员工信息,并显示所属的部门名称
select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno;
显示员工信息,并显示所属的部门名称,如果某一个部门没有员工,那么该部门也必须显示出来
--外连接(右外连接) select e.ename,d.dname from emp e --outer是可以省略的,带着可读性强 --right代表什么:表示将join关键字右边的这张表看成主表,主要是为了将这张表的数据全部查询出来,捎带着关联查询左边的表 right (outer) join dept d on e.deptno = d.deptno; --外连接(左外连接) select e.ename,d.dname from dept d --outer是可以省略的,带着可读性强 left (outer) join emp e on e.deptno = d.deptno;
多表连接
一条SQL中内连接和外连接可以混合 , 都可以出现
--表示一: a 和 b 进行内连接 , a 和 c 进行内连接 , a 和 d 进行右外连接(推荐) --表示二: a 和 b 的内连接结果去内连接 c 的结果再去右外连接 d select ... from a join b on a和b的连接条件 join c on a和c的连接条件 right join d on a和d的连接条件
找出每个员工的部门名称以及工资等级,要求显示员工名、部门名、薪资、薪资等级
select e.ename,e.sal,d.dname,s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
查询结果
+--------+---------+------------+-------+ | ename | sal | dname | grade | +--------+---------+------------+-------+ | SMITH | 800.00 | RESEARCH | 1 | | ALLEN | 1600.00 | SALES | 3 | | WARD | 1250.00 | SALES | 2 | | JONES | 2975.00 | RESEARCH | 4 | | MARTIN | 1250.00 | SALES | 2 | | BLAKE | 2850.00 | SALES | 4 | | CLARK | 2450.00 | ACCOUNTING | 4 | | SCOTT | 3000.00 | RESEARCH | 4 | | KING | 5000.00 | ACCOUNTING | 5 | | TURNER | 1500.00 | SALES | 3 | | ADAMS | 1100.00 | RESEARCH | 1 | | JAMES | 950.00 | SALES | 1 | | FORD | 3000.00 | RESEARCH | 4 | | MILLER | 1300.00 | ACCOUNTING | 2 | +--------+---------+------------+-------+
找出每个员工的部门名称以及工资等级,还有上级领导,要求显示员工名、领导名、部门名、薪资、薪资等级
select e.ename,e.sal,d.dname,s.grade,l.ename from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal left join emp l on e.mgr = l.empno;
查询结果
+--------+---------+------------+-------+-------+ | ename | sal | dname | grade | ename | +--------+---------+------------+-------+-------+ | SMITH | 800.00 | RESEARCH | 1 | FORD | | ALLEN | 1600.00 | SALES | 3 | BLAKE | | WARD | 1250.00 | SALES | 2 | BLAKE | | JONES | 2975.00 | RESEARCH | 4 | KING | | MARTIN | 1250.00 | SALES | 2 | BLAKE | | BLAKE | 2850.00 | SALES | 4 | KING | | CLARK | 2450.00 | ACCOUNTING | 4 | KING | | SCOTT | 3000.00 | RESEARCH | 4 | JONES | | KING | 5000.00 | ACCOUNTING | 5 | NULL | | TURNER | 1500.00 | SALES | 3 | BLAKE | | ADAMS | 1100.00 | RESEARCH | 1 | SCOTT | | JAMES | 950.00 | SALES | 1 | BLAKE | | FORD | 3000.00 | RESEARCH | 4 | JONES | | MILLER | 1300.00 | ACCOUNTING | 2 | CLARK | +--------+---------+------------+-------+-------+
위 내용은 MySql에서 연결 쿼리 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.
