본문 바로가기

SQL

권한(GRANT, REVOKE) --시스템(DBA) 권한 CREATE USER : 사용자를 생성하는 권한 DROP USER : 사용자를 삭제하는 권한 DROP ANY TABLE: 임의의 테이블을 삭제할 수 있는 권한 .... --시스템(일반 사용자를 관리하기 위한) 권한 CREATE SESSION : 데이터베이스에 접속할 수 있는 권한 CREATE TABLE : 사용자 스키마(계정)에서 테이블을 생성할 수 있는 권한 CREATE VIEW : 사용자 스키마에서 뷰를 생설할 수 있는 권한 CREATE SEQUENCE: 사용자 스키마에서 시퀀스를 생성할 수 있는 권한 CREATE PROCEDURE: 사용자 스키마에서 함수를 생성할 수 있는 권한(PL,SQL) ; --WITH ADMIN OPTION: 관리자가 아니여도 부여받은 시스템 권한을 .. 더보기
시퀸스(SEQUENCE) --시퀸스 생성 CREATE SEQUENCE EMPNO_SEQ INCREMENT BY 1 --얼마씩 증가하는지 START WITH 1000 --시작점 MAXVALUE 5000 -- 최대 숫자 MINVALUE 0 -- 최소 숫자 CYCLE; --최대 숫자 도달시 다시 순환 SELECT EMPNO_SEQ.CURRVAL FROM SYS.DUAL; --시퀀스 수정 ALTER SEQUENCE EMPNO_SEQ MAXVALUE 3000; ALTER SEQUENCE EMPNO_SEQ START WITH 1000; --에러 ---내가 만들었던 시퀀스 보기 SELECT * FROM SYS.user_sequences; --시퀀스 초기화 SELECT EMPNO_SEQ.CURRVAL FROM DUAL; ALTER SEQUEN.. 더보기
뷰(VIEW) 뷰(VIEW): 논리적(가상) 테이블 쓰는 이유-> 보안과 검색 유리, 쿼리문 단순 CREATE OR REPLACE VIEW EMP_VIEW100(NAME,DNO,SAL) --OR REPLACE 쓰면 DROP으로 생성된 뷰를 지우지 않고도 똑같은 이름으로 만들수 있다 AS SELECT EMPNO,ENAME,DEPTNO FROM EMP WHERE DEPTNO=10; SELECT * FROM emp_view100; -->DROP VIEW EMP_VIEW100; //생성된 뷰를 지운다 --부서별 최대 급여를 받는 사원 조회(이름, 부서명, 최대급여) SELECT E.ENAME, D.DNAME, M.SAL FROM EMP E JOIN DEPT D ON E.DEPTNO=D.DEPTNO JOIN MAX_SAL M .. 더보기
DB 기본 정리(데이터 삭제, 변경 등) DQL: 데이터 질의어(SELECT) DML: 데이터 조작어(INSERT, UPDATE, DELETE) DDL: 데이터 정의어(CREATE, DROP, ALTER, TRUNCATE) DCL: 데이터 제어어(COMMIT, ROLLBACK, GRANT, REVOKE) --테이블 구조 변경(ALTER) SELECT * FROM EMP; --컬럼 추가 ALTER TABLE EMP ADD EMAIL NVARCHAR2(20); --컬럼 수정 ALTER TABLE EMP MODIFY EMAIL NVARCHAR2(40); --컬럼 삭제 ALTER TABLE EMP DROP COLUMN EMAIL; --테이블 구조 확인 DESC EMP; --컬럼이름 변경 ALTER TABLE EMP RENAME COLUMN SAL TO.. 더보기
상관관계 서브쿼리 상관관계 서브쿼리 1. 외부 쿼리가 먼저 실행 2. 외부쿼리에서 사용된 테이블의 한 행이 내부 쿼리에서 사용되어 내부 쿼리가 실행됨 3. 2번 작업이 한 행씩 처리되어 마지막 행까지 처리된 후 다시 외부 쿼리가 최종 완료됨 --메인쿼리의 컬럼 중 하나가 서브쿼리의 조건에 이용되며, 서브쿼리의 결과는 메인쿼리로 반환되어 실행된다. SELECT ENAME 직원, (SELECT ENAME FROM EMP WHERE E.MGR=EMP.EMPNO) 상사 FROM EMP E; --상관관계 서브쿼리는 메인 쿼리가 먼저 돈 다음 서브쿼리가 돈다 --메인쿼리에 있는 처음 한 행이 서브쿼리로 넘어가고 서브쿼리에 있는 WHERE절을 실행 그렇게 한 행이 실행되고 --최종적으로 완료됨 --서브쿼리에 메인쿼리를 이용한 조건절이.. 더보기
서브쿼리 서브(SUB) 퀴리:메인 쿼리 내부에 존재하며,서브쿼리->메인쿼리 순으로 실행 SELECT DNAME FROM DEPT WHERE DEPTNO=(SELECT DEPTNO FROM EMP WHERE ENAME='FORD'); ->이름이 'FORD'인 사원을 검색하는 서브쿼리 --JONES보다 급여를 많이 받는 사원의 이름,급여 검색 SELECT ENAME,SAL FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='JONES'); 서브 쿼리 위치 1.WHERE 절 : 그냥 서브쿼리 또는 상관관계 서브쿼리 2.FROM 절 : 인라인 뷰(가상의 테이블) 3.SELECT 절: 상관관계 서브쿼리 --10번 부서의 근무하는 사원이름, 부서이름 검색 --서브쿼리 사용 SELE.. 더보기
조인(join) 조인(JOIN):두 개 이상의 테이블간의 결합 1.내부 조인(INNER): 동일(EQUI)조인, 비동일(NON-EQUI)조인 -오라클 조인(오라클에서만 사용 가능) SELECT ENAME,SAL,DEPT.DEPTNO,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO; -표준 SQL 조인 SELECT E.ENAME, E.SAL, D.DEPTNO, D.DNAME FROM EMP E INNER JOIN DEPT D ON E.DEPTNO=D.DEPTNO -- 조인 조건 WHERE E.ENAME='FORD'; -- 일반조건 -내부 조인(비동일 조인) -> 비동일 조인이란? 동등비교를 사용하지 않는 조인을 말한다. SELECT * FROM SALGRADE; --사번,이름,급여,.. 더보기
GROUP BY ,HAVING, ORDER BY 절, SELECT문 검색 순서 SELECT DEPTNO, MAX(SAL) FROM EMP GROUP BY DEPTNO; -->부서별로 묶는다 예제1) 각 부서 내에서 담당 직급별 최대 급여 검색 SELECT DEPTNO, JOB, MAX(SAL) FROM EMP GROUP BY DEPTNO, JOB ORDER BY DEPTNO, JOB; ->DEPTNO, JOB으로 묶은다음 DEPTNO, JOB로 정렬한다 HAVING절: 그룹화 한 후 조건절 SELECT DEPTNO, AVG(SAL) FROM EMP WHERE DEPTNO>=20 --묶기전에 거른다 GROUP BY DEPTNO; --HAVING AVG(SAL)>=2000; 에제2) JOB이 SALESMAN이 아닌 사원중에서 JOB별로 JOB,급여합계를 출력 급여합계가 5000이상만 .. 더보기