SQL 40

[SQL/실습] 트리거

-- 트리거 생성 -- TR1 테이블에서 삭제하기 전에 삭제한 레코드를 TB2 테이블에 추가하는 트리거 작성 DELIMITER // create trigger tri_tr BEFORE DELETE -- UPDATE AFTER 테이블명 트리거내용 순서대로 업데이트후에 테이블에 트리거내용대로 해라 ON tr1 FOR EACH ROW BEGIN; -- 트리거 내용 insert into tr2(number, name, age) values(old.number, old.name, old.age) ; END // -- tr1에있는것을 실행하면 트리거 내용이 자동 실행된다 라는 뜻 : 빽업 작업 DELIMITER ; show triggers ; -- drop trigger tri_tr1; -- show trigger..

Programming/SQL 2021.01.29

[SQL] 트리거 / 트리거 구동 / DDL트리거

트리거(trigger) dbms에서 특정 사건이 발생시 자동으로 일련의 과정이 수행되는 프로시저 프로시저 vs 트리거 프로시저 : 사용자가 직접 exec 명령어를 이용하여 프로시저를 수행함 트리거 : 특정 조건을 만족하면 자동으로 수행되도록 하는 저장 프로시저 -> 특정 사건이 발생될 때만 실행되는 프로시저 -> 사용자가 트리거를 따로 호출할 필요가 없음 무결성과 트리거 트리거는 데이터의 변경이 발생될 때 수행됨 -> 데이터 변경 시 무결성에 문제가 발생되면 이를 보완할 수 있도록 자동으로 프로시저를 수행하도록 트리거를 정의해 놓으면 무결성을 유지시킬 수 있음 단점 : 테이블 선언시 정의한 제약조건에 비하여 성능이 저하됨 장점 : 프로시저와 더불어 데이터베이스 내에 업무 규칙을 구현할 수 있음 수행기점에..

Programming/SQL 2021.01.29

[SQL] 무결성 규정

1. 무결성의 의미 무결성 정밀성,정확성,정당성 허가받은 사용자가 수행하는 갱신 작업에서 의미적 오류를 방지함 의미적 제약의 개념 무결성 서브 시스템 - 일관성 데이터베이스에서 병행 트랜잭션들이 상호 작용으로부터 의미상 모순이 없도록 하는 것 - 신뢰성 시스템의 오동작으로부터 오류가 발생하지 않도록 하는 것 - DBMS 의 한 구성 요소 - 무결성 규정을 유지 관리함 - 데이터베이스의 무결성을 유지함 - 트랜잭션이 수행하는 갱신 연산이 무결성 규정을 위반하지 않는가를 감시함 위반 시 거부 , 보고 , 취소 / 복귀를 수행함 2. 제약 조건 무결성 규정 대상 ① 도메인 - 형식 - 타입 - 범위 ② 기본키 , 외래키 - 개체 무결성 (Entity Integrity) - 참조 무결성 (Referencial ..

Programming/SQL 2021.01.29

[SQL/실습] 프로시저 실습

-- employee 테이블에서 사번이 109인 사원의 이름 ,직급 , 급여를 검색하는 -- emp_pro프로시저를 생성하기 ( 매개변수가 없는 프로시저 ) DELIMITER // -- 프로시저를 생성할때 프로시저 안에 있는 쿼리들이 ; 으로 인해 실행되면 안되기 때문에 -- 이를 막기 위해서 DELIMITER 이용하여 지정된 문자(//)가 나타나기 전까지는 ;를 만나도 실행되지 않게 막아준다. create procedure emp_pro() begin select ename, job, salary from employee where eno='109'; -- SQL문장에 ;세미콜론을 사용하기 위해서는 DELIMITER를 써줘야함 end // DELIMITER ; show create procedure e..

Programming/SQL 2020.12.20

[SQL] 프로시저의 매개변수 / 출력매개변수

프로시저의 매개변수 프로시저 실행 시 조건값 등을 변경 할 수 없을까 ? - 사원번호 109 번에 대한 정보를 추출하는 저장 프로시저를 생성하고 이를 110 번에 대한 정보를 추출하도록 저장 프로시저 변경 - 저장 프로시저 수행 시 사원번호를 입력으로 주어 해당 사원정보를 추출하도록 할 수 없을까 ? -> 매개 변수를 사용함 - 저장 프로시저 수행 시 수행 질의문에 특정 값을 매개변수로 전달할 수 있도록 하여 다양한 조건을 하나의 질의문으로 수행할 수 있도록 지원해 줌 입력 매개변수의 선언 생성 CREATE PROCEDURE 프로시저이름 @ 매개변수명 타입, … AS SQL 문 ; 실행 EXEC 프로시저이름 매개변수값; 출력 매개변수 - 입력 매개변수와 반대로 프로시저의 처리 결과값을 반환하는 매개변수 ..

Programming/SQL 2020.12.20

[SQL] 저장프로시저와 사용자정의함수

프로시저 -- 자주 자용되는 질의문들을 하나로 묶어서 저장해두고 필요할 때마다 명령문처럼 실행할 수 있도록 해주는 것 선택적으로 매개변수를 받아 일련의 질의문을 실행시켜 결과를 돌려주는 것 범용 언어의 프로시저 ⇨ 함수와 유사한 개념 일반 질의문과의 차이점 일반 질의 문 프로시저 사용자 또는 응용 프로그램이 실행하고자 하는 SQL 문을 DBMS 에 전송하고 그 결과를 받음 프로시저 내용은 DBMS 에 포함되어 있고 실행 방안도 미리 작성되어 있음 대량의 복잡한 질의문들이 반복적으로 입력되면 그만큼 시스템에 부담이 됨 사용자나 응용 프로그램은 프로시저 이름과 매개변수 값 ( 필요 시 ) 만을 전송하면 됨 -> 복잡한 SQL 문의 단순화 DBMS 에도 처리해야 하는 일이 늘어남 프로시저 생성 구문 CREAT..

Programming/SQL 2020.12.18

[SQL] 뷰(view) - 인라인 뷰 / with절

인라인 뷰 하나의 질의문 내에서만 생성되어 사용 되어지고 질의문 수행 종료 후에는 사라지는 뷰 -- 뷰의 명시적인 선언 ( 즉 , Create View 문 ) 이 없음 -- FROM 절에서 참조하는 테이블의 크기가 클 경우 , 필요한 행과 속성만으로 구성된 집합으로 정의하여 질의문을 효율적으로 구성함 -- FROM 절에서 서브 쿼리를 사용하여 생성하는 임시 뷰 예 ) 부서별 평균 급여 파악하기 -> 부서번호로 나와있음 -> 부서명도 알고싶음 -> 사원테이블과 부서테이블의 조인이 필요함 select dname, avg(salary) from department d, employdd e where d.dno=e.dno group by dname; 예) 인라인뷰를 이용하여 부서별 부서명, 평균급여 출력하기 s..

Programming/SQL 2020.12.17

[SQL] 뷰(view) - 뷰의 개념 / 필요성 / 장단점 / 구문 / 종류

뷰(view) : 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블 -- 기본 테이블은 디스크에 공간이 할당되어 데이터를 저장함 -- 뷰는 데이터 딕셔너리 (Data Dictionary) 테이블에 뷰에 대한 정의 (SQL 문) 만 저장되어 디스크 저장 공간 할당이 이루어지지 않음 -- 전체 데이터 중에서 일부만 접근할 수 있도록 함 -- 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용됨 -- 뷰를 정의한 기본 테이블에서 정의된 무결성 제약조건은 그대로 유지됨 뷰의 필요성 -- 사용자 마다 특정 객체만 조회할 수 있도록 할 필요가 있음 (모든 직원에 대한 정보를 모든 사원이 볼 수 있도록 하면 안 됨) -- 복잡한 질의문을 단순화 할 수 있음 -- 데이터의 중복성을 최소화할 수 ..

Programming/SQL 2020.12.17

[SQL/실습] 서브쿼리와 함수를 조합하여 문제풀기

서브쿼리와 함수를 조합하여 풀기 select*from employee; select * from department; -- 1. 사원명 'e3'가 속한 부서명을 조회하시오 -- 부서명을 알기위해서는 e3의 부서번호가 필요함 -- select 부서번호 from 사원테이블 where 사원명='e3'; -- select 부서명 from 부서테이블 where 부서번호 = (e3이라는 사원명의 부서번호 ) select dno from employee where ename='e3'; select dname from department where dno=(select dno from employee where ename='e3') ; select * from employee; -- 2. 평균 월급보다 더 많은 월급을..

Programming/SQL 2020.12.17

[SQL] 집합연산자 - union / intersect / except / union all

집합연산자 : 테이블을 구성하는 튜플 집합에 대한 테이블의 부분 집합을 결과로 반환하는 연산자 UNION 합집합 INTERSECT 교집합 EXCEPT 차집합(Oracle 에선 MINUS 로 사용 ) UNION 예) 부서 번호 10 인 사원들과 직급이 staff 인 사원들 검색 (select * from employee where dno=10) union(select * from employee where job='staff'); -- 결과정렬을 하고싶다면 쿼리끝에 해주면 됨. (select * from employee where dno=10) union(select * from employee where job='staff') order by salary; 예) null값을 넣을때 select eno, ..

Programming/SQL 2020.12.17