Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 레노버 노트북
- 오라클
- SQL
- 데이터베이스 JOIN
- 코린이
- 오라클 DELETE
- 데이터베이스 DELETE
- 슬림3
- 코딩입문
- 데이터베이스 집합연산자
- IdeaPad 3 15ABA7
- 사무용 노트북
- 데이터베이스기초
- 레노버 슬림3
- 개발자준비
- 데이터베이스
- 레노버 아이디어패드 슬림3
- 데이터베이스 UPDATE
- 데이터베이스 예제
- 티모장인
- 자바초보
- 자바입문
- 라이젠노트북
- 가성비 노트북
- lenovo ideapad 3
- 탑마이장인
- 오라클UPDATE
- 코딩일기
- 데이터베이스 기초
- 코딩초보자
Archives
- Today
- Total
스퐁지송 개발노트
데이터베이스 연습하기 예제--집합연산자(UNION ,INTERSECT,MINUS ),JOIN,서브쿼리 본문
728x90
ANY
EX)
직책이 SALESMAN인 급여보다 큰사람들을 조회
SELECT *
FROM EMP
WHERE SAL > ANY( SELECT SAL FROM EMP WHERE JOB = 'SALESMAN' );
EX) 부서번호가 30번 인 사람들의 급여보다 작은 급여를 받는 사람들을 조회
정렬은 급여와 사원번호를 기준으로 오름차순 정렬
SELECT *
FROM EMP
WHERE SAL < ( SELECT SAL FROM EMP WHERE DEPTNO = 30 );
ALL
모두 만족하는 경우만 TRUE
EXISTS
서브쿼리의 결과 값이 하나라도 있으면 TRUE(서브쿼리가 TURE가 되면서 모든 레코드데이터가 나온다)
서브쿼리의 결과 값이 하나도 없으면 FALSE
SELECT *
FROM EMP
WHERE EXISTS(SELECT ENAME FROM EMP WHERE DEPTNO = 10);
서브쿼리에 조건에 맞는 데이터가 있으므로 모든 레코드데이터가 나온다
다중 열 서브 쿼리
SELECT
* FROM EMP
WHERE (DEPTNO, SAL) IN(SELECT DEPTNO, SAL --컬럼은 같지 않아도 되지만 형식은 같아야한다
FROM EMP
WHERE DEPTNO = 30);
SELECT DEPTNO, SAL
FROM EMP
WHERE DEPTNO = 30
(서브쿼리가 열이2개이다)
다중 쿼리 위치를 다른 곳에 넣어보기
SELECT *
FROM (SELECT * FROM EMP WHERE DEPTNO=10) E,
--부서번호가 10인 데이터들 중에서 검색을 시작
(SELECT * FROM DEPT) D
--여러개의 서브쿼리작성가능(두개이상을 사용하면 합쳐져서 하나의 테이블로 만들어진다 하나하나 조건비교아님)
WHERE SAL >= 2000 AND E.DEPTNO = D.DEPTNO;
예제
EX) (EMP,DEPT테이블)사원중에 ALLEN과 같은 직책인 사람들의
직책, 사원번호, 이름, 급여, 부서번호, 부서이름을 출력
SELECT JOB, EMPNO, ENAME, SAL, DEPTNO, DEPTNO
FROM EMP
WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'ALLEN');--'ALLEN'의 직책데이터 뽑아내기
--INNER JOIN으로
SELECT JOB, EMPNO, ENAME, SAL, EMP.DEPTNO, DEPT.DEPTNO, DNAME
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO = DEPT.DEPTNO
WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'ALLEN');
EX) EMP,SALGRADE테이블 사원번호, 이름, 급여, 급여등급 출력
SELECT EMPNO, ENAME, SAL, GRADE, LOSAL, HISAL
FROM EMP, SALGRADE
WHERE SAL BETWEEN LOSAL AND HISAL
-- 모든 경우의수가 나오기때문에 맞는 데이터를 뽑기위해 조건추가
ORDER BY ENAME, GRADE;
--INNER JOIN 사용
SELECT EMPNO, ENAME, SAL, GRADE
FROM EMP INNER JOIN SALGRADE
ON SAL BETWEEN LOSAL AND HISAL
EX) 부서번호가 10번인 사람들 중에서 부서번호가 30번인 부서에 없는 직책을 가진 사람들의
사원번호, 이름, 직책, 부서번호, 부서명, 부서위치를 출력
SELECT EMP.EMPNO,ENAME,JOB,EMP.DEPTNO,DNAME,LOC
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.DEPTNO = 10
AND JOB NOT IN(SELECT DISTINCT JOB --부서번호가 30번인 직책들(중복제거)
FROM EMP WHERE DEPTNO=30);
--SELECT DISTINCT JOB FROM EMP WHERE DEPTNO=30;
--부서번호가 30번인 직책들(중복제거)
EX) 직책이 SALESMAN인 사람들의 최고급여보다 큰 급여를 받는 사람들의 이름,직책,급여,급여등급을 출력
급여를 기준으로 내림차순 정렬
SELECT ENAME, JOB, SAL, SALGRADE.GRADE
FROM EMP INNER JOIN SALGRADE
ON SAL BETWEEN LOSAL AND HISAL
WHERE SAL > (SELECT MAX(SAL) FROM EMP WHERE JOB = 'SALESMAN')
ORDER BY SAL DESC;
--SALESMAN중 최고급여를 불러오기
SELECT MAX(SAL) FROM EMP WHERE JOB = 'SALESMAN';
728x90
'DATABASE' 카테고리의 다른 글
데이터베이스 오라클 데이터 정의어(CREATE, DROP, ALTER) (0) | 2023.01.13 |
---|---|
데이터베이스 오라클 UPDATE 데이터 수정문, DELETE 데이터 삭제문 (0) | 2023.01.13 |
데이터베이스 집합연산자(UNION ,INTERSECT,MINUS ),JOIN,서브쿼리 (0) | 2023.01.11 |
데이터베이스 정규화 해보기 예제 (0) | 2023.01.11 |
데이터베이스 제1,2,3 정규화/정규형 (0) | 2023.01.11 |
Comments