찾다
데이터 베이스MySQL 튜토리얼Oracle学习笔记之高级查询

为列起别名 目的 我们进行查询时 经常查询某一列时使用的是表达式 SELECT enamme,sal*12 FROM emp 这样不好的地方是第二列在查询

为列起别名

目的 我们进行查询时 经常查询某一列时使用的是表达式 SELECT enamme,sal*12 FROM emp

这样不好的地方是第二列在查询后列用使用的就是sal*12.这样的可读性比较差为此我们会为列起别名,来增加可读性

别名本身不区分大小写,若希望区分,则别名需要使用双引号,当别名中含有空格,也应使用双引号

SELECT ename,sal*12 "Annual Salary" FROM emp;

WHERE子句

用于在查询数据的过程中过滤记录的,只有满足WHERE子句中的条件的记录才会被查询出来, 数据库在查询表的时候,每一条记录都要经过一次WHERE的过滤

查看工资小于2000的

SELECT ename,sal FROM emp WHERE sal

查看部门不属于10的员工信息

SELECT ename,sal,job FROM emp WHERE deptno !=10;

查询1980年出生的

SELECT ename,sal,hiredate FROM emp WHERE hiredate>TO_DATE('1980','YYYY');

查询sal大于1000 且工作为clerk

SELECT ename,sal,job FROM emp WHERE sal>1000 AND job='CLERK';

查询工资大于1500的CLERK 或者是不限制工资的所有SALESMAN

SELECT * FROM emp WHERE sal>1500 AND job='CLERK' OR job ='SALESMAN';

提高优先级的意思是 查看工资大于1500的CLERK 和SALESMAN

SELECT * FROM emp WHERE sal>1500 AND (job='CLERK' OR job ='SALESMAN');

查看emp表中ename 第二个字母的是A的名字

SELECT * FROM emp WHERE ename LIKE '_A%';

IN 比较符 可以比较等于列别中的其中之一

SELECT * FROM emp WHERE job IN('MANAGER','CLERK'); ==SELECT * FROM emp WHERE job='MANAGER' OR job='CLERK';

查询不等于MANAGER 和CKERK的所有工作

SELECT * FROM emp WHERE job NOT IN('MANAGER','CLERK');

SELECT * FROM emp WHERE sal BETWEEN 1500 AND 3000;

SELECT * FROM emp WHERE sal>ANY(3000,2000,4000);

SELECT * FROM emp WHERE sal*12>50000;

SELECT ename,sal FROM emp WHERE UPPER(ename) = upper('rose');

DISTINCT关键字用于去除给定列的重复数据 查看公司都有哪些职位,重复的去除

SELECT DISTINCT job FROM emp;

当我们对多个列进行去重复时,表示这几个列的值的组合没有重复的

SELECT DISTINCT deptno,job FROM emp;

ORDER BY子句,用于对结果集进行排序

ORDER BY子句只能出现在SELECT语句的最后。

ORDER BY 后面可以指定若干字段,排序优先级为从左到右,

ASC 表示升序,默认就是升序,所以可以不写

DESC表示降序

按照部门编号从小刀大进行排序结果集

SELECT * FROM emp ORDER BY deptno

查询emp表里部门为10的工资和姓名 并降序排列

SELECT ename,sal FROM emp WHERE deptno =10 ORDER BY  sal DESC;

在排序一个含有NULL值的字段时,NULL值被认为是无限大,所以在降序排序时,NULL值会出现在最前面

-------------------------------------------------------------------------------------------

聚合函数

MAX和MIN

SELECT MAX(sal) FROM emp;

***聚合函数都是忽略NULL值

SELECT MAX(sal) as "最大",MIN(sal) as "最小" FROM emp;

SELECT AVG(NVL(comm,0) ) as "平均值" FROM emp;

SELECT AVG(sal),SUM(sal) FROM emp;

SELECT COUNT(comm) FROM emp;--统计条数,不统计值

SELECT COUNT(*) FROM emp;--统计整张表有多少条记录

GROUP BY子句 用于将表里的数据进行 分组,分组原则为GROUP BY 后面给定的字段的值相同的记录看做一组

查看每个部门的最大工资 最小工资等:

SELECT MAX(sal),MIN(sal),AVG(sal),SUM(sal),deptno FROM emp GROUP BY deptno;

聚合函数又称组函数

SQL有一个要求

在SELECT子句红若出现了组函数,那么不在组函数中的其他字段,必须出现GROUP BY 子句中,但是反过来则不是必须的

若字段中每条疾苦的值都不重复,那么该字段通常不应该在GROUP BY子句中作为分组的参照。

若指定了GROUP BY子句,那么SELECT子句中不在组函数中的其他字段且不在GROUP BY子句中则不能出现

WHERE 与HAVING的区别

相同点,都是用作过滤,只不过HAVING是用在第二次过滤的,WHERE是用在第一次查询表的时候过滤条件的。

HAVING是在第一次查询后,得到结果的基础上再次进行过滤使用的。

---------------------------------------

查询优先级

from子句,执行顺序,从后往前,从右到左 数据量少的放后面

where子句 执行顺序为自上而下,从右到左,将能过滤掉最大数量记录的条件卸载where子句的最右

group by 执行顺序从左往右分组

select子句,少用*号 尽量取字段名

----------------------------------------------------------------------------

关联查询

N张表联合查询,,至少要有N-1个连接条件,否则会产生笛卡尔积:A表的记录总数*B表的记录总数,无意义的结果集

两张表联合查询,要添加至少一个连接条件。因为查询时很难避免两张表出现相同名字的字段,为了解决这个问题,可以

使用 表名.字段 来确认

若别名比较长,柯表名叫上别名来简化

SELECT e.ename,e.sal,d.dname,e.deptno FROM emp e,dept d WHERE e.deptno = d.pdeptno;

SELECT e.ename,e.sal,d.dname,e.deptno FROM emp e JOIN dept d ON(d.deptno=e.deptno);

SQL89标准时,弊端在于,连接条件与过滤条件都要写在where子句中,可读性相对较差,尤其多表查询加上过滤条件多的时候。

SELECT e.ename,d.DNAME  FROM emp e,dept d WHERE d.DEPTNO=e.DEPTNO AND d.DNAME='SALES';

SQL92建议多表连接用 用SELECT ... FROM JOIN...ON ...WHERE(只写条件)

SELECT e.ename,d.dname FROM emp e JOIN dept d ON e.deptno = e.deptno WHERE d.dname ='SALES'

SQL92标准建议我们在夺标连接时使用内连接形式

这样会发现,连接条件单独定义在ON子句中,而过滤条件卸载WHERE子句中,可读性比较强

SELECT e.ename,d.dname FROM emp e JOIN dept d ON e.deptno=d.deptno WHERE d.dname='SALES';

外连接

自连接

当前表中的数据关联 表中的其他数据。就构成了自连接。通常表被设计成自连接是为了表示同类型数据有存在上下级关系(树状结构的数据通常设计为自连接。)

例如:淘宝网的类别。就被设计为自连接。

设计表的时候以及关联关系时通常有两个字段很重要,他们被称为:主键外键

通常每张表的第一个字段就是主键,主键保存的数据一般与数据无关系,他只是用来标识每条数据的唯一性,所以主键的要求是

存储的值非空且唯一。

外键,用来保存关系表中记录的主键的值,例如

部门表中有一个字段叫做dept,它用来保存dept表中某条记录主键的值那么emp表的dept就是外键

在关联关系中,保存外键的表通常是“一对多”中“多”的一方

本文永久更新链接地址

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Docker에서 MySQL 메모리 사용을 줄입니다Docker에서 MySQL 메모리 사용을 줄입니다Mar 04, 2025 pm 03:52 PM

이 기사는 Docker에서 MySQL 메모리 사용을 최적화합니다. 모니터링 기술 (Docker Stats, Performance Schema, 외부 도구) 및 구성 전략에 대해 설명합니다. 여기에는 Docker 메모리 제한, 스와핑 및 CGroups와 함께 포함됩니다

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.Mar 04, 2025 pm 04:01 PM

이 기사에서는 MySQL의 "공유 라이브러리를 열 수 없음"오류를 다룹니다. 이 문제는 MySQL이 필요한 공유 라이브러리 (.so/.dll 파일)를 찾을 수 없음에서 비롯됩니다. 솔루션은 시스템 패키지 M을 통한 라이브러리 설치 확인과 관련이 있습니다.

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?Mar 19, 2025 pm 03:51 PM

이 기사는 MySQL의 Alter Table 문을 사용하여 열 추가/드롭 테이블/열 변경 및 열 데이터 유형 변경을 포함하여 테이블을 수정하는 것에 대해 설명합니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)Mar 04, 2025 pm 03:54 PM

이 기사는 Linux에 MySQL을 직접 설치하는 것과 Phpmyadmin이없는 Podman 컨테이너 사용을 비교합니다. 각 방법에 대한 설치 단계에 대해 자세히 설명하면서 Podman의 격리, 이식성 및 재현성의 장점을 강조하지만 또한

sqlite 란 무엇입니까? 포괄적 인 개요sqlite 란 무엇입니까? 포괄적 인 개요Mar 04, 2025 pm 03:55 PM

이 기사는 자체 포함 된 서버리스 관계형 데이터베이스 인 SQLITE에 대한 포괄적 인 개요를 제공합니다. SQLITE의 장점 (단순성, 이식성, 사용 용이성) 및 단점 (동시성 제한, 확장 성 문제)에 대해 자세히 설명합니다. 기음

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드Mar 04, 2025 pm 03:49 PM

이 안내서는 Homebrew를 사용하여 MacOS에 여러 MySQL 버전을 설치하고 관리하는 것을 보여줍니다. 홈 브루를 사용하여 설치를 분리하여 갈등을 방지하는 것을 강조합니다. 이 기사에는 설치, 서비스 시작/정지 서비스 및 Best Pra에 대해 자세히 설명합니다

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?Mar 18, 2025 pm 12:01 PM

기사는 인증서 생성 및 확인을 포함하여 MySQL에 대한 SSL/TLS 암호화 구성에 대해 설명합니다. 주요 문제는 자체 서명 인증서의 보안 영향을 사용하는 것입니다. [문자 수 : 159]

인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?인기있는 MySQL GUI 도구는 무엇입니까 (예 : MySQL Workbench, Phpmyadmin)?Mar 21, 2025 pm 06:28 PM

기사는 MySQL Workbench 및 Phpmyadmin과 같은 인기있는 MySQL GUI 도구에 대해 논의하여 초보자 및 고급 사용자를위한 기능과 적합성을 비교합니다. [159 자].

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전