전체 글 78

[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

[SQL] 다양한 중첩 질의문 - 다중 컬럼 서브쿼리 / 상호 연관 서브쿼리 / 중첩질의문 주의점

다중 컬럼 서브 쿼리 : 서브 쿼리의 결과가 여러 개의 속성들로 구성되어 주쿼리의 조건과 비교하는 서브 쿼리임 복수 개의 서브 쿼리들로 구성됨 메인 쿼리와 서브 쿼리의 비교 대상 칼럼을 분리하여 개별적으로 비교한 후 AND 연산에 의해 최종 결과를 출력함 예) 사원번호 101인 사원과 동일 부서에 동일한 급여를 지급받는 직원 구하기 select eno, ename, salary, dno from employee where dno in (select dno from employee where eno=101) and salary in (select salary from employee where eno=101) 상호 연관 서브 쿼리 메인 쿼리절과 서브 쿼리 간에 검색 결과를 교환하는 서브 쿼리 메인 쿼리와 ..

Programming/SQL 2020.12.17

[SQL] 중첩질의문 - 단일행 서브쿼리 / 다중행 서브쿼리 / 비교연산자

중첩질의문 중첩 질의문 : 하나의 SQL 문의 결과를 다른 SQL 문에 전달함 : 두 개의 SQL 문을 하나의 SQL 로 처리함 조인 질의문과 중첩 질의문 : 이론적으로 중첩 질의문은 조인 구문과 표현능력이 동일함 중첩질의문의 표현 : SQL 문 안에 SQL 문이 포함되어 있음 예) select dname from department where department.dno = (select dno from employee where employee.eno=103); 단일행 서브 쿼리 : 서브 쿼리의 결과로 하나의 튜플만이 반환 됨 서브 쿼리의 검색 조건이 후보키에 연관되어 있을 경우가 많음 예) 사원 번호 110 번과 같은 부서에 근무 하는 사원들의 사원 번호 와 부서번호 검색 사원번호가 기본키 임으로 사..

Programming/SQL 2020.12.17

[SQL/실습] 테이블 조인 - 연습문제 풀어보기 (답안)

답안 -- employee와 department 테이블을 조인하여 부서번호, 부서명, 이름, 급여를 급여가 높은 순으로 출력하라 select e.dno, dname, ename, salary from employee e, department d order by salary desc ; -- 이름이 e15인 사원의 사원번호, 급여 , 부서명을 급여가 낮은 순으로 출력하라 select eno, salary, dname from employee e, department d where ename='e5' ; -- 사원번호가 107인 사원의 사원명, 매니저, 부서명, 지역을 출력하라 select ename, manager, dname, loc from department ,employee where eno='10..

Programming/SQL 2020.12.17

[SQL/실습] 테이블 조인 - 연습문제 풀어보기 (문제)

* 첨부파일에 있는 데이터로 테이블로 만든 후 아래 문제를 푸세요 * 단 각 테이블의 컬럼의 데이터 유형은 데이터를 참조해서 설정하시오. 연습문제 -- employee와 department 테이블을 조인하여 부서번호, 부서명, 이름, 급여를 급여가 높은 순으로 출력하라 -- 이름이 e15인 사원의 사원번호, 급여 , 부서명을 급여가 낮은 순으로 출력하라 -- 사원번호가 107인 사원의 사원명, 매니저, 부서명, 지역을 출력하라 -- A회사가 이번에 새로운 부서에 직원을 채용한다. 이때 새로운 부서의 부서명, 지역을 출력하되 사원번호를 몇번으로 할 것인지에 대해서도 조사하라 답안 : reeme.tistory.com/43

Programming/SQL 2020.12.17