반응형

Database 19

[MySQL] 테이블 분할 & 분석(PARTITION BY)

순위함수를 이용하여 순위 매기기 SELECT 컬럼 이름, 순위함수() OVER (ORDER BY 컬럼이름) FROM 테이블 이름 순위함수 설명 RANK() 중복 순위 적용, 다음 순위가 중복 순위 적용 후 순위 예) 1, 2, 2, 4 DENSE_RANK() 중복 순위 적용, 다음 순위는 중복 순위 적용 + 1 예) 1, 2, 2, 3 이전 행, 다음 행 가져오기 SELECT 컬럼이름, 이동함수(컬럼이름, offset) OVER (ORDER BY 컬럼이름) FROM 테이블이름 이동함수 설명 LAG() 이전 행 가져오기 LEAD() 다음 행 가져오기 테이블 분할 & 분석(PARTITION BY) SELECT 컬럼이름, 함수() OVER(PARTITION BY 컬럼이름 [ORDER BY 컬럼이름]) FROM..

Database 2023.11.25

[오라클DB] PL/SQL 프로시저 반복문 - 0329 2교시

--0329 DB7 2교시 : 프로시저 반복문 -- FOR ~ LOOP, END LOOP --부서번호를 받아서 해당 부서사람의 사번, 이름, 급여 정보 출력 SET SERVEROUTPUT ON; SELECT * FROM EMP; CREATE OR REPLACE PROCEDURE LOOP_TEST1 ( P_DEPTNO IN EMP.DEPTNO%TYPE) IS TYPE EMPNO_TABLE IS TABLE OF EMP.EMPNO%TYPE INDEX BY BINARY_INTEGER; TYPE ENAME_TABLE IS TABLE OF EMP.ENAME%TYPE INDEX BY BINARY_INTEGER; TYPE SAL_TABLE IS TABLE OF EMP.SAL%TYPE INDEX BY BINARY_INT..

Database 2023.03.29

[오라클DB] 프로시저 복습문제 - 0329 1교시

--0329 DB7 1교시 : 프로시저 복습 2 문제 --1. 프로시저 이름 : UPDATE_TEST1 --2. 호출 방법 : EXECUTE UPDATE_TEST1(101, 5); --3. 결과 : ENROL 테이블의 SUB_NO가 101인 학생들의 GRADE를 5증가 SELECT * FROM ENROL; CREATE OR REPLACE PROCEDURE UPDATE_TEST1 ( P_NO IN ENROL.SUB_NO%TYPE, P_GRADE IN ENROL.ENR_GRADE%TYPE) IS BEGIN UPDATE ENROL SET ENR_GRADE = ENR_GRADE + P_GRADE WHERE P_NO = SUB_NO; COMMIT; END UPDATE_TEST1; / EXECUTE UPDATE_T..

Database 2023.03.29

[DB] SQL 기본

데이터 조작어 - 검색 SELECT 문의 문법 SELECT 속성이름(들) FROM 테이블이름(들) [WHERE 검색조건(들)] [GRUOP BY 속성이름] [HAVING 검색조건(들)] [ORDER BY 속성이름 [ASC | DESC]] 데이터 정의어 CREATE 문 CREATE TABEL 테이블 이름 ALTER 문 ALTER TABLE 테이블 이름 DROP 문 DROP TABLE 테이블 이름 데이터 조작어 - 삽입, 수정, 삭제 INSERT 문 INSERT INTO 테이블이름[(속성리스트)] VALUES (값리스트); UPDATE 문 UPDATE 테이블 이름 SET 속성이름 1=값 1 [, 속성이름 2=값 2, ... ] [WHERE ]; DELETE 문 DELETE FROM 테이블 이름 [WHERE ..

Database 2023.03.29

[오라클DB] 뷰 VIEW

-- 뷰(VIEW) 하나 이상의 테이블을 합쳐 만든 가상의 테이블 -- UPDATE로 수정하면 안됨. 원본 테이블 회손하면 안됨. --뷰 생성 : 사번, 이름, 직책, 사수번호, 급여, 입사일, 부서번호, 부서명, 부서위치, 급여 등급 CREATE VIEW VI_EMP2 AS SELECT EMPNO,ENAME,JOB,MGR,SAL,HIREDATE,E.DEPTNO,DNAME,LOC,GRADE FROM EMP E LEFT JOIN SALGRADE S ON SAL BETWEEN LOSAL AND HISAL LEFT JOIN DEPT D ON D.DEPTNO = E.DEPTNO; -- 뷰 확인 SELECT * FROM VI_EMP2; --뷰 생성 : VI_EMP3 (읽기 전용) CREATE VIEW VI_EMP..

Database 2023.03.28

[오라클DB] 시퀀스 SEQUENCE

--시퀀스 --숫자를 자동으로 증가시켜줌 SELECT * FROM DUAL; SELECT * FROM TEST_BOARD; --DELETE FROM TEST_BOARD; INSERT INTO TEST_BOARD VALUES (T_SEQ.NEXTVAL,'곤니치와'); --DROP SEQUENCE T_SEQ; CREATE SEQUENCE T_SEQ2 INCREMENT BY 1 -- 1씩 증가 START WITH 1 -- 시작값 MINVALUE 1 -- 최소값 MAXVALUE 1000 -- 최대값 NOCYCLE; --순환 (CYCLE, NOCYCLE) -- 다음값 SELECT T_SEQ2.NEXTVAL FROM DUAL; -- 시퀀스 현재값 SELECT T_SEQ2.CURRVAL FROM DUAL;

Database 2023.03.28

[오라클DB] 쿼리 연습문제

SELECT *FROM EMP; SELECT * FROM DEPT; SELECT * FROM SALGRADE; SELECT * FROM EMP E INNER JOIN SALGRADE S ON E.SAL BETWEEN S.LOSAL AND HISAL; --1. 각 부서별 급여 등급 평균 구하기 SELECT DEPTNO, ROUND(AVG(GRADE),2) FROM EMP INNER JOIN SALGRADE ON SAL BETWEEN LOSAL AND HISAL GROUP BY DEPTNO; -- 2. 각 부서별 급여 등급이 3등급 이상인 사람의 수 구하기 SELECT DEPTNO, COUNT(*) FROM EMP INNER JOIN SALGRADE ON SAL BETWEEN LOSAL AND HISAL W..

Database 2023.03.28

[오라클DB] TO_DATE 문제

--날짜 데이터를 문자 데이터로 변환 (TO_CHAR) SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL; --문자 데이터를 날짜 데이터로 변환 (TO_DATE) SELECT TO_DATE('20230328','YYYYMMDD') FROM DUAL; --1981년 1월 1월 이후 입사한 사람 데이터 출력 SELECT * FROM EMP WHERE HIREDATE > TO_DATE('19810101','YYYYMMDD'); --JONES라는 사원보다 늦게 입사한 사람 출력 SELECT * FROM EMP WHERE HIREDATE > ( SELECT HIREDATE FROM EMP WHERE ENAME = 'JONES' ); -- 1. 각 부서 별 입사..

Database 2023.03.28
반응형