프로그래밍/DBMS
-
PL/SQL 기본 문법프로그래밍/DBMS 2021. 8. 24.
시작하기에 앞서 VScode에서 DBMS를 출력하기 위해서 SET SERVEROUTPUT ON 를 ON 시켜 준다. DECLARE vname VARCHAR2(30); vpay NUMBER; BEGIN SELECT name, sal+bonus INTO vname, vpay FROM emp WHERE empNo = '1001'; DBMS_OUTPUT.PUT_LINE(vname||':'||vpay); END; / DECLARE = 함수 선언하겠다. - vname, vpay (형식 뒤에 세미콜론; 붙여야함) BEGIN = 구문을 실행 하겠다. - emp 테이블에서 어떤걸 가져올지 정하고 INTO를 사용해서 아까 선언했던 변수에 넣어준다. (순서 주의) - DBMS_OUTPUT = 출력하겠다 (변수에 값이 들어갔..
-
트랜잭션 Trasaction프로그래밍/DBMS 2021. 8. 19.
트랜잭션은 쉽게 말하면 안정성의 보장이다. 은행 업무에서 A가 B에게 100만원을 송금한다면 A -> B A의 계좌에서는 -100만원 B의 계좌에서는 +100만원 이 작업이 이루어질때 어떤 문제가 생기면 모든 작업을 원상태로 되돌린다. 이것이 트랜잭션 이다. 트랜잭션을 하기 위해서 필요한 명령어 커밋(Commit): 작업을 완료하면 변경사항을 한꺼번에 DB에 반영한다. 롤백(Rollback): 부분 작업이 실패하면 트랜잭션 실행 전으로 되돌림. (걍 하다가 데이터 잘못 넣으면 롤백하고 다시 대신 커밋을 안했다면 이전에 넣었던 데이터가 다 날아갈 수 있으니 조심) SAVEPOINT : 일반적으로 ROLLBACK을 명시하면 작업 전체가 취소됨. SAVEPOINT를 사용하면 전체가 아닌 특정 부분에서 트랜잭션..
-
고급 쿼리 / 정규식프로그래밍/DBMS 2021. 8. 18.
테이블 및 데이터 추가 -- reg 테이블 CREATE TABLE reg ( num NUMBER(5) PRIMARY KEY ,name VARCHAR2(30) ,email VARCHAR2(100) ); INSERT INTO reg (num, name, email) VALUES (1, '한라산', 'hanlasan@abc.co.kr'); INSERT INTO reg (num, name, email) VALUES (2, '백두산', 'backdusan@abc.co.kr'); INSERT INTO reg (num, name, email) VALUES (3, '금강산', 'gumgangsan@xyz.co.kr'); INSERT INTO reg (num, name, email) VALUES (4, '김선생', 'k..
-
고급 쿼리 / 계층적 쿼리 / PIVOT프로그래밍/DBMS 2021. 8. 18.
계층적 쿼리 쉽게 얘기하자면 결과 값들을 계단과 같이 층을 지어서 보여준다. (눈으로 봤을때 더 알아보기 쉽게) -- soft 테이블 CREATE TABLE soft ( num NUMBER PRIMARY KEY ,subject VARCHAR2(100) NOT NULL ,parent NUMBER ); INSERT INTO soft(num, subject, parent) VALUES (1, '소프트웨어', NULL); INSERT INTO soft(num, subject, parent) VALUES (2, '프로그래밍', 1); INSERT INTO soft(num, subject, parent) VALUES (3, '데이터베이스', 1); INSERT INTO soft(num, subject, parent..
-
시퀀스 SEQUENCE프로그래밍/DBMS 2021. 8. 18.
SEQUENCE 유일한 정수 값을 연속적으로 생성 시퀀스 번호는 커밋 또는 롤백과 상관없이 증가 시퀀스 생성 CREATE SEQUENCE test_seq1 INCREMENT BY 1 START WITH 1 NOMAXVLAUE NOCYCLE NOCACHE; -- 1부터 1씩 증가하는 시퀀스 INCREMENT BY = 몇씩 증가하나? START WITH = 몇 부터 시작하나? NOMAXVLAUE = MAX값 지정 안함 NOCYCLE = 반복 안함 NOCACHE = 캐시 없음 시퀀스 확인 하기 SELECT * FROM user_sequences; SELECT * FROM seq; 만든 시퀀스로 시퀀스 값 가져오기 SELECT test_seq1.NEXTVAL FROM dual; -- 1 SELECT test_s..
-
VIEW(뷰), SYNONYM(시노님)프로그래밍/DBMS 2021. 8. 17.
SYNONYM (시노님) 사용자가(지금 사용중인 user 계정) 다른 사용자의 테이블이나 객체를 참조하는 방법. 일반 유저들은 권한이 없으니 먼저 관리자 계정에서 권한을 줘야 한다. 윈도우 키 + R > cmd > cmd창 띄우기 명령어 입력 : sqlplus / as sysdba 이후에 GRANT CREATE SYNONYM TO sky -- 시노님 만들기 위한 권한 부여 GRANT SELECT ON employees TO sky; -- 시노님을 sky계정에서 보기 위한 권한 부여 GRANT CREATE VIEW TO sky; -- VIEW를 만들기 위한 권한 부여 명령어 입력 권한이 잘 들어갔는지 확인 해보기위해 본인이 사용중인 계정 (저는 sky)가서 입력 SELECT * FROM user_sys_p..
-
서브쿼리 Subquery프로그래밍/DBMS 2021. 8. 16.
WITH 서브 쿼리 WITH tmp AS ( SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, bPrice * qty amt FROM book b JOIN pub p ON b.pNum = p.pNum JOIN dsale d ON b.bCode = d.bCode JOIN sale s ON d.sNum = s.sNum JOIN cus c ON s.cNum = c.cNum ) SELECT bCode, bName, SUM(amt) FROM tmp GROUP BY bCode, bName; 단일 행 서브쿼리 SELECT empNo, sal FROM emp WHERE sal < (SELECT AVG(sal) FROM emp); 다중 행 ..