프로그래밍
-
트랜잭션 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); 다중 행 ..
-
JOIN (INNER JOIN / OUTER JOIN)프로그래밍/DBMS 2021. 8. 13.
JOIN - 둘 이상의 테이블의 행을 결합 자주 쓰이는 종류는 INNER, OUTER 이너와 아우터 이다. 실습 테이블 미리 추가해 두자 명령어 : @c:\db\book.sql INNER JOIN 이너 조인 종류 : EQUI JOIN / NATURAL JOIN / CROSS JOIN / SELF JOIN / NON-EQUI JOIN 네츄럴 크로스 셀프는 다루지 잘 안쓰인다. 많이 쓰이는데 EQUI JOIN이다. EQUI JOIN : 조인 대상 테이블의 컬럼 값들이 서로 정확하게 일치하는 경우에 사용 WHERE 절에 = 부등호를 이용한다. SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, bPrice * qty amt FROM..
-
제약 조건 / PRIMARY KEY / FOREIGN KEY프로그래밍/DBMS 2021. 8. 12.
PRIMARY KEY 1. 테이블당 한개만 만들 수 있음 2. 두개 이상의 컬럼을 조합해서 하나의 기본키를 가질 수 있다. 3. 중복값 안되고 NULL 안되고 테이블 생성하면서 같이 만들기 CREATE TABLE test1 ( id VARCHAR2(30) PRIMARY KEY, pwd VARCHAR2(30) NOT NULL, name VARCHAR2(30) NOT NULL, birth DATE ); 제약 조건을 줬으면 확인도 할 줄 알아야 한다. SELECT * FROM user_constraints WHERE table_name = 'TEST1'; -- 존재 유무 확인 및 P키가 있는 제약 조건 이름 확인 SELECT * FROM user_cons_columns WHERE table_name = 'TE..