Web develop 64

[SQL/ORACLE] 제약조건 설명 및 사용법 (NOT NULL, UNIQUE, PK, FK, CHECK)

: 무결성 제약조건 테이블에 부적절한 자료가 입력(INSERT, UPDATE) 되는 것을 방지하기 위해서 테이블 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙. (테이블 생성 후 컬럼에 규칙정의하는 것도 가능) NOT NULL 해당 컬럼값으로 NULL을 허용하지 않음 (행 단위)입력시 데이터를 무조건 받음 유일하지 않고 반드시 입력 또는 수정해야 할 컬럼에 설정 UNIQUE 테이블내에서 해당 컬럼값은 항상 유일무이한 값을 가질 것 중복을 허용하지 않음 중복데이터는 방지, NULL의 중복은 방지하지 못함 ADD NOT NULL은 불가능 =>테이블 내의 모든 컬럼은 특별한 설정(NOT NULL또는 PRIMARY KEY)을 하지 않았을 경우 NULL값이 기본으로 설정되어짐 PRIMARY KEY (기본키,..

Web develop/SQL 2019.06.15

[SQL/ORACLE] TOP-N 사용 예제

ROWID: 주소로서 row가 실제로 저장되어있는 공간을 표시 ROWNUM: 번호로서 row의 주소 순서대로 출력되어짐. 출력되는 행에 대해 첫 행부터 순차적인 번호를 부여 (1,2,3,...) SELECT empno, ename, sal, rownum FROM emp; SELECT empno, ename, rownum FROM emp WHERE rownum 해결: rownum을 먼저 1부터 출력하게 하고 그 결과에서 중간번호(1아닌 값)을 조회 SELECT empno, ename, sal FROM (SELECT empno, ename, sal, rownum rb FROM (SELECT empno, ename, sal FROM emp ORDER BY sal desc) --1차: 정렬 ) --2차: 출력된..

Web develop/SQL 2019.06.15

[SQL/ORACLE] VIEW 형식 및 사용법

VIEW : 물리적인 테이블을 근거한 논리적인 가상테이블 (가상: 실질적으로 데이터를 저장하고 있지 않는다.) ⇒ 독립적인 테이블은 아니다 기본테이블에 대한 하나의 쿼리문(text를 저장하는 객체) 자주 사용되는 복잡하고 긴 쿼리문을 저장하는 객체 특정컬럼만 보여지게끔 하여 보안을 목적으로 사용. 제한적인 데이터 조회 뷰는 기준테이블을 참조하는(바라보는) 논리적인 테이블이기에 기준테이블 수정시 같이 변동된다. 형식 CREATE VIEW 뷰이름; 옵션 CREATE \[OR REPLACE\] \[FORCE|NOFORCE\] VIEW 뷰이름 \[별명\] AS SELECT\_statement \[WITH CHECK OPTION \[CONSTRAINT 제약명\]\] \[WITH READ ONLY \[CONSTRA..

Web develop/SQL 2019.06.15

[SQL/ORACLE] CASCADE 사용법 및 예제

CREATE TABLE emp5( deptno NUMBER(2) REFERENCES 참조테이블명(참조컬럼명) ON DELETE CASCADE ALTER TABLE dept3 DROP CONSTRAINT dept3_uk CASCADE; DELETE CASCADE 사용시 자동으로 관련된 모든 FK를 먼저 삭제해줌 부모 (부서)테이블에서 특정 번호(예:10번 부서)를 삭제했을 때 자식 (사원)테이블에서 10번 부서에 근무하는 사원들을 삭제 CREATE TABLE emp5( deptno NUMBER(2) REFERENCES 참조테이블명(참조컬럼명) ON DELETE SET NULL ); DELETE SET NULL 사용시 부모 (부서)테이블에서 특정 번호(예:10번 부서)를 삭제했을 때 자식 (사원)테이블에서 ..

Web develop/SQL 2019.06.15

[SQL/ORACLE] 서브쿼리 , 다중행 서브쿼리 연산자

SUB QUERY : 특정 테이블에서 검색된 결과를 다른 테이블에 전달하여 새로운 결과를 검색할 때 사용 -- JAMES 사원이 근무하는 부서이름 출력 SELECT deptno FROM emp WHERE ename='JAMES'; --> 30번 부서 근무 SELECT dname FROM dept WHERE deptno = 30; --> 부서명 SALES 서브쿼리 사용 SELECT dname FROM dept WHERE deptno = --> 메인쿼리 (SELECT deptno FROM emp WHERE ename='JAMES'); -->서브쿼리 SELECT dname FROM (SELECT dname,loc FROM dept); -- 테이블명에도 객체로 사용가능. 인라인뷰라고 불림 다중행 서브쿼리 서브쿼..

Web develop/SQL 2019.06.15

[SQL/ORACLE] ORACLE JOIN & ANCI JOIN

ORACLE JOIN CROSS JOIN 특정한 조건(WHERE)을 주지 않는다면 조인시 각 테이블이 갖는 행의 수를 곱한 형태의 결과가 출력 SELECT ename, dname FROM emp,dept;--> 결과행 56행 EQUI JOIN 조인 대상이 되는 두 테이블에서 공통적으로 존재하는 컬럼의 값이 일치하는 행을 WHERE로 연결하여 결과를 생성하는 조인 SELECT ename, sal, loc FROM emp, dept WHERE emp.deptno = dept.deptno and loc ='NEW YORK'; SELECT ename, TO_CHAR(hiredate,'yyyy/mm/dd') hiredate, dname FROM emp, dept WHERE emp.deptno = dept.dept..

Web develop/SQL 2019.06.15

[SQL/ORACLE] CASE 함수 사용예제 (Simple / Searched)

CASE WHEN 조건식1 THEN 결과데이터1 WHEN 조건식2 THEN 결과데이터2 WHEN 조건식3 THEN 결과데이터3 ELSE 결과데이터 END SELECT empno, ename, deptno, CASE WHEN deptno=10 THEN 'ACCOUNTING' WHEN deptno=20 THEN 'RESEARCH' WHEN deptno=30 THEN 'SALES' ELSE 'OPERATIONS' END 부서명, CASE WHEN mod(empno,2)=0 THEN '짝수' WHEN mod(empno,2)=1 THEN '홀수' END 사원번호 FROM emp; Simple case expression SELECT t.id, CASE t.color WHEN 1 THEN 'RED' WHEN 2 T..

Web develop/SQL 2019.05.29

[SQL/ORACLE] 그룹함수, DECODE 함수

: 집계 함수 전체데이터를 그룹별로 구분하여 통계적인 결과를 구하기 위해 사용 결과값은 항상 단행 그룹함수와 단순컬럼은 함께 사용하는 것이 불가능 (만약 그룹함수와 함께 사용하고자 하는 컬럼이 그룹으로 묶여질 수 있다면 group by절과 함께 사용하는 것이 가능) NULL은 결과값에서 제외 GROUP BY / HAVING group by(그룹을 묶을 수 있는) 컬럼명 group by deptno--> (10번부서의 사원들) , (20번 부서의 사원들), (30번 부서의 사원들) having (그룹에 대한) 조건식--> group by와 반드시 함께 사용 having deptno = 10 --3개의 그룹중 10번부서의 사원들만 having avg(sal) >= 2000 -- 10번, 20번, 30번 부서..

Web develop/SQL 2019.05.29

[Algorithm] 검색, 스택과 큐 실습 (자바)

03. 검색 03-1. 검색 알고리즘 선형 검색: 무작위로 늘어놓은 데이터 모임에서 검색을 수행 이진 검색: 일정한 규칙으로 늘어놓은 데이터 모임에서 아주 빠른 검색을 수행 해시법 : 추가, 삭제가 자주 일어나는 데이터 모임에서 아주 빠른 검색을 수행 (체인법/오픈 주소법) => 용도나 목적, 실행속도, 자료구조 등을 고려하여 알고리즘을 선택하여야 함 03-2. 선형 검색 실습 3-1 실습 3-3 / 보초법 사용 03-3. 이진 검색 => 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘 실습 3-4 04. 스택과 큐 스택 : 데이터를 일시적으로 저장하기 위해 사용하는데이터 입력 순서는 LIFO(Last In First Out) push: 데이터를 넣는 작업 pop: 데이터를 꺼내는 작..

[SQL/ORACLE] 날짜 함수 , 형변환 함수

날짜함수 SYSDATE : 현재 날짜 구하기 SELECT sysdate 현재날짜 from dual; SELECT sysdate+1 내일날짜, sysdate-1 어제날짜, sysdate+7 일주일후 FROM dual; MONTHS_BETWEEN : 날짜와 날짜 사이의 개월을 계산해 주는 함수 MONTHS_BETWEEN(최근DATE, 오래전DATE) ADD_MONTHS : 특정날짜에 개월을 더한 날짜 계산 ADD_MONTHS(특정날짜,개월수) LAST_DAY : 월의 마지막 날짜를 계산 SELECT last_day(sysdate) "이번 달 마지막날짜" from dual; NEXT_DAY : 특정날짜 후의 첫 요일의 날짜를 계산 SELECT NEXT_DAY(sysdate,'월') from dual; 형변환 ..

Web develop/SQL 2019.05.28