분류 전체보기 102

[SQL/실습] 뷰 생성 / 뷰 적용 실습해보기

-- 사원(employee) 테이블에 부서번호 30인 사원들의 뷰 생성하기 create view v_emp as select * from employee where dno='30'; select * from v_emp; -- 뷰를 이용하여 부서번호 30인 사원들 중 급여가 500이상인 사원들의 이름 구하기 select * from v_emp where dno >= 500; -- 사원(employee)테이블에서 평균연봉을 구하는 뷰 생성하기 create view salavg as select avg(salary) as salavg from employee; select * from salavg; select * from v_emp ; select * from salavg; -- 아래에 있는 sql문장은 u..

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] 인덱스 - 생성 / 삭제 / 종류 ( 고유 / 비고유 / 단일 / 결합 / DESCENDING / 집중 / 비집중 )

인덱스 인덱스 검색 성능을 향상 시키기 위한 부가적인 자료 구조 -- 질의 명령문의 검색 속도를 향상시키기 위해 칼럼에 대해 생성하는 객체 -- 포인터를 이용하여 테이블에 저장된 데이터를 랜덤 액세스하기 위한 목적으로 사용함 인덱스가 효율적인 경우 -- WHERE 절이나 조인 조건절에서 자주 사용되는 칼럼의 경우 -- 전체 데이터 중에서 10~15% 이내의 데이터를 검색하는 경우 -- 두 개 이상의 칼럼이 WHERE 절이나 조인 조건에서 자주 사용되는 경우 -- 테이블에 저장된 데이터의 변경이 드문 경우 색인은 부가적인 자료 구조임 데이터 삽입 시 비효율적임 인덱스 생성 / 삭제 구문 -- 색인 생성 CREATE INDEX 색인명 ON 테이블명 ( 속성명 , 속성명,…) -- 색인 삭제 DROP INDE..

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] 집단연산자 - 집단함수( sum / avg / count /max / min / stdev / var ) , group by / having

집단 함수 : 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 그룹화하여 해당 그룹 별 통계 값을 출력하는 함수 (통계함수, 그룹함수라고도함) -- select 절에만 사용가능 from/where 자리에 사용불가 SUM 그룹의 합계 AVG 그룹의 평균 COUNT 그룹의 개수 MAX 그룹의 최대값 MIN 그룹의 최소값 STDEV 그룹의 표준편차 VAR 그룹의 분산으로 집단 함수 예) employee 테이블에서 전체 월급합계sum , 전체 월급평균avg, 전체 최대 월급 max, 전체 최소월급min, 전체 사원수count를 조회하라 select sum(salary) as '전체 월급합계', avg(salary) as '전체 월급평균', max(salary) as '전체 최대월급', min(salary) as..

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

[SQL/실습] 트랜잭션의 활용

트랜잭션의 활용 -- 트랜잭션 모드 (기본) : 자동 커밋 트랜잭션 update employee set salary = salary + commission where eno='103' ; -- 트랜잭션 모드 : 명시적 트랜잭션 start transaction; -- 명시적 트랜젝션 시작 -- delete from employee; -- insert into employee(eno,ename,job,manager,hiredate,salary,commission,dno) -- values('117','e17','chief','101','2020-11-02',1500,0,30); -- rollback; -- 취소하기 (되돌리기) -- commit; -- 반영하기 커미션하면 롤백이 안됨 insert into e..

Programming/SQL 2020.12.17

[SQL] 트랜잭션 제어문 (TCL) / 트랜잭션 모드

트랜잭션 제어문 (TCL) COMMIT -- 트랜잭션의 마지막 명령어가 수행되었음을 나타냄 -- 트랜잭션에 의한 변경을 확정 -- COMMIT 된 트랜잭션은 철회가 불가능함 -- COMMIT 명령문 실행하기 전에 하나의 트랜잭션 변경한 결과를 다른 -- 트랜잭션에서 접근할 수 없도록 방지하여 일관성을 유지함 ROLLBACK -- 트랜잭션의 변경을 취소하고 트랜잭션 종료 SAVEPOINT -- 현재 트랜잭션에서 ROLLBACK 시킬 위치 지정 -- 대규모 트랜잭션 ( 복수개의 명령어들로 이루진 트랜잭션 ) 에서 오류 발생이 전체 트랜잭션을 취소 시키는 것이 큰 부담이 될 수 있음 -- 실패한 일정부분만 취소 시키도록 함 ㅁ 트랜잭션 모드 1. 자동 커밋 트랜잭션 -- 하나의 명령문이 하나의 트랙잭션이 됨 ..

Programming/SQL 2020.12.17

[SQL] 트랜잭션(Transaction) - 트랜잭션의 활용 / 특성 / ACID

트랜잭션 : 논리적인 일의 단위 기본 설정 하나의 SQL 은 하나의 트랜잭션임 여러 개의 SQL 문들이 합쳐져서 하나의 트랜잭션이 될 수도 있음 트랜잭션의 활용 동시성 -- 대규모 데이터베이스를 수백 , 수천 명 이상의 사용자들이 동시에 접근함 -- 많은 사용자들이 동시에 데이터베이스의 서로 다른 부분 또는 동일한 부분을 접근하면서 데이터베이스를 사용함 동시성 제어 -- 동시에 수행되는 트랜잭션들이 데이터베이스에 미치는 영향 = 이들을 순차적으로 수행하였을 때 데이터베이스에 미치는 영향과 같도록 보장함 -- 다수 사용자가 데이터베이스를 동시에 접근하도록 허용하면서 데이터베이스의 일관성을 유지함 -- 여러 사용자나 여러 응용 프로그램들이 동시에 수행되어도 서로 간섭하지 못하도록 보장함 -> 트랜잭션 단위 ..

Programming/SQL 2020.12.17