MEMO

27일차 메모(오라클 3일차_SELECT/INSERT/UPDATE/DELETE/SUBQUERY/단일행서브쿼리/복수행단일쿼리/TOP-N절/ROWID/ROWNUM)

alea90 2020. 3. 9. 17:44

다음 회차 배울 내용: 조인, 테이블생성, 제약조건

 

금일메모 : 

 

검색키워드
게시판 생성시 사용되는 내용
-  # ROWID,ROWNUM
       - 오라클에서 테이블을 생성하면 자동으로 생성되는 컬럼
       - ROWID : ROW의 고유번호(중간에 ROW를 삭제해도 변하지 않음)-> 물리저장소의 위치 나타냄_숫자가 크므로 16진수로 보여짐
       - ROWNUM : 행의 인덱스번호(중간에 ROW를 삭제하면 변함)
중복제거
DISTINGT

제약조건주기(외래키)

복습
IN 뜻
ANY(복수의 인자 중 한 가지만 맞으면 참)
ALL(복수의 인자 모두 맞아야함)
GROUP
HAVING

***SELECT/INSERT/UPDATE는 가장 자주 쓰이는 명령어***

1)기본키(PK; PRIMARY KEY)는 NULL값이 올 수 없고 삭제될 수 없음
예; (SCOTT/TIGER SCHEME 에서 EMP테이블의 EMPNO / DEPT테이블의 DEPTNO)

2)외래키(FK; 참조키) 모순되지 않는 데이터를 관리하기 위해 사용됨.
COMMIT; --> 실행되면 데이터베이스에서 날라가므로 ROLLBACK; 해도 복구안됨 ->다시 생성해야함.

//
ED --cmd 창 콘솔 입력어를 메모장으로 확인 가능)
/ --실행

SQL> INSERT INTO EMP<EMPNO, ENAME, DEPTNO)
  2  VALUES(1990, 'DASEUL', 10>;
INSERT INTO EMP<EMPNO, ENAME, DEPTNO)
               *
ERROR at line 1:
ORA-00926: missing VALUES keyword

SQL> ED
Wrote file afiedt.buf

  1  INSERT INTO EMP(EMPNO, ENAME, DEPTNO)
  2* VALUES(1990, 'DASEUL', 10)
SQL> /

1 row created.
//

 

예4) 급여가 2000이상인 사원들의 부서별 급여총합 구하기,급여합이 높은순으로 출력

SELECT DEPTNO_(단행연산자),SUM(SAL)_(다행연산자) 급여합 -->단행연산자와 다행연산자가 같이 쓰일려면 GROUP필요
FROM EMP
WHERE SAL>=2000
GROUP BY DEPTNO
ORDER BY 급여합 DESC; --ORDER BY 절에 ALIAS 사용가능(급여합 자리 SUM(SAL) 넣어도 같은 결과)
--ORDER절이 맨 마지막에 실행되므로 가능

그룹핑하기 전에 비교 함(HAVING X)

 Q1) 부서별 최대급여,최소 급여를 구하세요.

SELECT DEPTNO,MIN(SAL) "가장낮은급여",MAX(SAL) "가장높은급여" FROM EMP   
GROUP BY DEPTNO;   

    DEPTNO 가장낮은급여 가장높은급여
---------- ------------ ------------
        30          950         2850
        20          800         3000
        10         1300         5000

예5) 사원들의 부서별 평균급여를 구하시오. 단 급여평균이 2000이상인
          부서만 출력되도록 하세요.

SELECT DEPTNO,AVG(SAL) "평균급여"
FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL)>=2000;

그룹을 한 상태로 비교를 함 (HAVING)

    DEPTNO   평균급여
---------- ----------
        20 2258.33333
        10 2916.66667

 

메모_20200309.txt
0.00MB
오라클_3.txt
0.01MB