MySQL 28

6월 11일 Query(4)

-- 1조 -- 재직중인 senior Engineer 들의 부서와 first_name 그리고 가장 최근 연봉을 출력하세요select d.dept_name, e.first_name, s.salaryfrom employees ejoin dept_emp deon e.emp_no = de.emp_nojoin departments don d.dept_no = de.dept_nojoin titles ton e.emp_no = t.emp_nojoin salaries son e.emp_no = s.emp_nowhere de.to_date = '9999-01-01' and t.title = 'Senior Engineer' and s.to_date = '9999-01-01'group by e.emp_no;-- 직급이 st..

MySQL/Query 2024.06.13

제 2정규화 ( Second Normal Form, 2NF )

제2정규형 (2NF)1NF를 만족하며, 모든 비기본 키 속성이 전체 기본 키에 대해 완전 함수적 종속을 가져야 합니다. 즉, 기본 키의 일부에만 종속된 속성이 없어야 합니다. 2NF를 만족하지 못하는 데이터 예제학생들이 수강하는 과목과 그 과목의 담당 교수에 대한 정보를 포함하는 테이블을 설계.여기서 pk는 {학생ID, 과목코드}의 복합 키입니다. 수강 정보 테이블학생ID과목코드 과목명 담당 교수1MAT101수학김교수1SCI101과학이교수2MAT101수학김교수2ENG101영어박교수 위 테이블에서 '과목명'과 '담당 교수'는 과목코드에 부분적으로 종속되어 있습니다. 즉, 학생ID와는 직접 적인 관련이 없습니다. 이는 2NF를 위반하는 데이터의 형태 입니다. 2NF 문제 해결2NF를 만족시키기 위해 부분 종..

MySQL/SQL 2024.06.13

제 1정규화 ( First Normal Form, 1NF )

테이블(Relation)이 제 1정규형을 만족했다는 것은 아래 세 가지 조건를 만족했다는 것을 의미합니다.어떤 Relation에 속한 모든 Domain이 원자값(atomic value)만으로 되어 있다.모든 attribute에 반복되는 그룹(repeating group)이 나타나지 않는다.기본 키를 사용하여 관련 데이터의 각 집합을 고유하게 식별할 수 있어야 한다. 1. 원자값이 아닌 데이터제 1정규형의 첫 번째 조건은 모든 도메인이 원자값으로 구성되어야 한다는 것원자값이 아닌 예 (수강 과목)학생ID이름수강 과목1홍길동수학, 과학2이순신역사, 미술, 음악위 표에서 '수강 과목' 필드에 여러 과목이 쉼표로 구분되어 들어가 있어, 이 필드가 원자값이 아님.  2. 반복 그룹이 있는 데이터제 1정규형의 두 ..

MySQL/SQL 2024.06.13

서브 쿼리

서브쿼리(subquery)는 SQL 문장 내에서 다른 SQL 쿼리를 내포하는 구문입니다. 서브쿼리의 개념서브쿼리는 보통 소괄호 () 안에 작성되며, 메인 쿼리(main query) 또는 외부 쿼리(outer query)라고 하는 더 큰 SQL 쿼리의 일부로 존재합니다. 서브쿼리는 메인 쿼리에 의해 반환된 데이터를 기반으로 추가적인 조건을 적용하거나, 메인 쿼리의 조건을 정의하는 데 사용됩니다. 문법의 형태 살펴 보기select * from reservationwhere name in( **select name from customer where address ='서울'** ); 서브쿼리를 사용하는 이유복잡성 감소: 복잡한 쿼리를 더 작고 관리하기 쉬운 부분으로 나누어 처리할 수 있습니다.재사용성: 같은 ..

MySQL/SQL 2024.06.13

6월 10일 Query(3)

-- 1조 -- 재직중인 사원들 중 평균 연봉이 가장 큰 3명의 first_name, 평균 연봉(소숫점 제거),부서, 근무 년수 을 추출하시오.select e.first_name, round(avg(s.salary)) as 평균연봉, d.dept_name as 부서, (year(current_date())-year(e.hire_date)) as 근무년수from salaries as sleft join employees as eon s.emp_no = e.emp_noleft join dept_emp as deon e.emp_no = de.emp_noleft join departments as don de.dept_no = d.dept_nowhere de.to_date = '9999-01-01'group b..

MySQL/Query 2024.06.12