계층 구조 질의 - 내용이 계층구조를 이루고 있을때 레벨별 조회 가능 - START WITH, CONNECT BY, PRIOR 절 사용 START WITH -> 첫번째로 조회할 행의 조건, 레벨 1 CONNECT BY, PRIOR --> 다음 번 조회할 행의 조건 ( prior id-->직전레벨에 찾아진 행들의 id 값) ex) select level, last_name from s_emp start with manager id is null conncect by prior id = manager_id order by level;
집합연산자 -테이블들을 집합시킴 UNION, UNION ALL : 합집합 union 합치는데 중복제거(정렬하고나서) (연결되는 두 문장의 칼럼수가 같아야되고, 같은칼럼순서는 데이터 타입도 같아야함) ex) select * from s_ord08 union // 합치는데 중복제거(정렬하고나서) select * from s_ord09 union all 둘 합침 ex) select * from s_ord08 union all //둘 합침 select * from s_ord09 INTERSECT 교집합(두 행의 집합중 공통된 행을 반환) ex) SELECT deptno FROM emp INTERSECT SELECT deptno FROM dept; MINUS 차집합(첫 번째 SELECT문에 의해 반환되..
subquery -안쪽 먼저 실행 -모르는 값에대해 조건을 줄때 (알려지지 않은 값을 알기 위해 사용) (쿼리문 안에있는 쿼리 그래서 서브쿼리) ex) allen과 같은 부서에 근무하는 직원 출력 select ename, deptno from emp where deptno = (select deptno from emp where ename='ALLEN'); -----> () 안에 있는게 서브쿼리 단일행 subquery - subquery 수행 결과 한 개의 값을 리턴할때 쓴다 - 단일행 연산자만 사용 가능 복수행 subquery - 한 개 이상의 값을 리턴받을때 - 단일행 연산자 말고 in같은거 씀(in,any,all,exists) FROM 절의 subquery - FROM절 뒤에 사용 ( in-li..
exists - 말그대로 존재하는지 안하는지 알아보는 연산자 in 이랑 역할은 비슷하지만 좀다름. ex) in을 쓸 경우 select department_id, employee_id from employees where department_id in (30,60,90) ex2) exists를 쓸 경우 select emp.department_id, emp.employee_id from employees emp where exists (select dep.department_id from departments dep where dep.department_id in (30, 60, 90) and emp.department_id=dep.department_id) 1)exists 는 뒤에 서브쿼리만 올..
ROLLUP -그룹핑된 결과에 그룹별 합계 정보를 추가 CUBE -그룹핑된 컴럼의 모든 가능한 조합에 대한 합계 정보 추가 EX) ROLLUP SELECT job, SUM(sal) FROM emp GROUP BY job; JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000 SELECT job, SUM(sal) FROM emp GROUP BY ROLLUP(job); JOB SUM(SAL ---------- ---------- ANALYST 6000 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000 52125 --> ..
DECODE 함수 -조건에 해당하는 값을 추출하고자 할 때 주로 사용 ex) 부서번호가 10이면 ACCOUNTING, 20이면 RESEARCH, 30이면 SALES 나머지는 OPERATIONS를 출력 SELECT deptno, DECODE(deptno, 10 , 'ACCOUNTING' , 20 , 'RESEARCH' , 30 , 'SALES', 'OPERATIONS') name FROM dept; DEPTNO NAME ------ ---------- 10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS DECODE(VALUE, IF1, THEN1, IF2, THEN2...) DECODE(VALUE,'조건',같으면실행,다르면실행) CASE -DECODE 와 비슷한..
비교연산자 =, >= , 레코드 제외하고 나머지 where 칼럼 ^=레코드 ; ---> 레코드 제외하고 나머지 where 칼럼 레코드 ; ---> 레코드 제외하고 나머지 * 모든 운영체제 가능. 그니까 이거써 논리연산자 and -둘다 true or - 하나만 true SQL 비교연산자 1) BETWEEN, IN - between A and B - in (a.b); ---> or 이랑 같음 2) LIKE - 일부분이나 특정패턴 찾을때 사용 ( 와일드 카드---> %, _ ) like 'A%'; ----> A로 시작하는놈만 찾아라 like '%A'; ----> A로 끝나는놈만 찾아라 like '%A%'; ---->A 가지고있놈은 다찾아라 like '_A%'; ----> _하나제까고 A가2번째있는놈 찾아라 l..
JOIN -두개 이상의 테이블을 하나 이상의 조건을 걸어 합치는거. 테이블의 관계 1) 1:다 1-부모테이블 다-자식테이블 primary key = 테이블의 레코드를 식별할 수 있는 칼럼(기준) 부모-->자식 넘어감 // '다'를 기준으로 하면 쉬움 2) 다:다 -중간테이블을 하나 새로 생성해 중복제거 최소화 (즉 테이블 3개) (1) EQUI JOIN - 값을 일치시켜 두개의 테이블을 연걸하는 기본 조인방법 ex) select e.ename , d.dname from emp e , dept p where e.deptno=d.deptno; (2) NON-EQUI JOIN - 값을 비교(연산자)하면서 두개의 테이블을 연결하는 조인방법 ex) select e.ename, e.job, e.sal , s...
DQL : 질의어 select [distinct] {*, column [alias],...} from (테이블명) ; ※ []-생략가능한것들 ※ 산술표현 --> +, - , * , / from 절을 제외하고 다 가능 //산술 여러개있을땐 괄호 쓰는게 가시성이 좋아 쓰는게좋음 1) select = 데이터 조회할때 (sql 명령어) // select * from tab; ---> table 목록을 볼 수 있음 2) distinct = 중복값제거 3) * = 모든칼럼 4) [alias] = as = 칼럼별칭변경 // as []라서 생략가능하나 칼럼많으면 헷갈리니까 as쓰는게 좋음 // 기본적으로 대문자고 ""안에넣으면 소문자 5) 그외 = 리터럴문자--> 레코드 수정,합성 ex) '날짜,문자값', ||(합..
사용자와 권한 관리 1)시스템 권한 - 새로운 사용자 생성,사용자 삭제,테이블 삭제,테이블 백업 등 --> 사용자에게 시스템적인 권한을 줌 [SY] GRANT 권한 [, 권한...] TO 사용자 [, 사용자...]; ** 롤(Role)이란? ---> 사용자에게 허가할 수 있는 권한들의 그룹. 롤을 생성해 관련권한들을 롤에부여하고 필요한 사용자에게 롤을 부여한다. [SY] CREATE ROLE RoleName; GRANT 권한 TO RoleName; GRANT RoleName TO 사용자; 2)객체 권한 --> 사용자에게 객체에 관한 권한을 줌 (ex.다른 사용자가 내가 지정한 테이블을 select 할 수 있는권한) [SY] GRANT 객체권한[,객체권한...] ON 객체 TO {사용자[,사..