MySQL 28

SELF JOIN - 2

💡 Self join은 하나의 테이블 내에서 자기 자신을 조인하는 것을 의미합니다. 이는 동일한 테이블에서 서로 다른 행을 비교하고 조작하는 데 사용됩니다. Self join을 사용하면 동일한 열을 가진 두 개의 서로 다른 인스턴스 간의 관계를 파악하거나 계층적인 구조를 나타낼 때 유용합니다. 예를 들어, 조직 구조에서 각 직원이 직속 상급자의 정보를 확인해야 할 때 self join을 사용할 수 있습니다. 각 직원은 같은 테이블에 저장되어 있지만, 상급자와 직속 부하 직원 간의 관계를 파악하기 위해 자기 자신과의 조인을 수행합니다.  Column Name Data Type Descriptionemployee_idINT직원의 식별자employee_nameVARCHAR직원의 이름employee_phone..

MySQL/MySQL 활용 2024.06.14

정규화란(1단계) - 1

정규화란데이터베이스에서 정규화는 데이터를 조직화하고 중복을 최소화하기 위해 데이터베이스 테이블의 설계를 시스템적으로 개선하는 과정입니다. 정규화를 통해 데이터의 무결성과 일관성을 유지하면서 효율적인 데이터 관리가 가능해집니다 정규화(Normalization)의 기본 목표테이블 내에서 발생할 수 있는 데이터의 중복을 최소화하여 이상 현상을 방지하고, 데이터 무결성을 유지하는 것입니다.  💡 데이터의 무결성(Integrity)은 데이터베이스 관리 시스템에서 데이터의 정확성, 일관성 및 신뢰성을 유지하는 특성을 말합니다. 데이터베이스 내의 정보가 정확하고 일관된 상태로 유지되고 시스템에서 정의한 규칙, 제약 조건, 비즈니스 규칙을 준수하여 데이터의 품질을 보장하며, 응용 프로그램과 사용자가 신뢰할 수 있는 ..

MySQL/MySQL 활용 2024.06.14

1일 1쿼리 - 0610

1조 1일 1쿼리 문제 (24.06.10) -- 재직중인 사원들 중 평균 연봉이 가장 큰 3명의 first_name, 평균 연봉(소숫점 제거),부서, 근무 년수 을 추출하시오. select em.first_name, round((sa.salary)) as '평균 연봉', dep.dept_name, de.from_date, year(now()) - year(sa.from_date) + 1 as '근무 년수' from dept_emp as de join salaries as sa on de.emp_no = sa.emp_no join employees as em on de.emp_no = em.emp_no join departments as dep on de.dept_no = dep.dept_no where ..

1일 1쿼리 - 0607

-- 1조 -- 문제 1 매니저들의 최고 급여를 추출하세요. select em.emp_no, dp.dept_name ,em.first_name, Max(salary) from dept_emp as de join employees as em on de.emp_no = em.emp_no join salaries as sa on sa.emp_no = de.emp_no join departments as dp on de.dept_no = dp.dept_no join dept_manager as dem on dem.emp_no = de.emp_no where dem.to_date = '9999-01-01' group by de.emp_no;  -- 문제 2 퇴사자와 재직자를 구분 하며 퇴사자의 경우 재지년수를 출..

1일1쿼리 - 0605

-- 1조 문제  -- 전직원 2000년도의 연봉을 출력하세요(출력 예시 :  id , firstname, lastname,slalary) select e.emp_no, e.first_name, e.last_name , s.salary from employees as e join salaries as s on e.emp_no = s.emp_no where s.from_date like '2000%';-- 'd004'  부서의 남자직원의 이름을 출력하세요 (출력예시 : firstname , M , 'd004' )  select e.first_name , e.gender , d.dept_no  from employees as e join dept_emp  as d on e.emp_no = d.emp_no w..

DML, DDL, DCL 이란? - 22

DML 이란?(Data Manipulation Language) - (데이터 조작어)데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말한다.​SELECT INSERTUPDATEDELETE  DDL 이란? (DDL : Data Definition Language) - (데이터 정의어)테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말한다. CREATEALTERDROPRENAMETRUNCATE​: TRUNCATE는 SQL에서 사용하는 명령어로, 테이블의 모든 데이터를 빠르고 효율적으로 삭제하는 데 사용됩니다. TRUNCATE 명령어는 테이블 내의 데이터를 삭제할 때 DELETE 명령어보다 훨씬 빠르게 작동하며, ..

MySQL/MySQL 기본 2024.06.10

MySQL 계정 생성 및 권한 - 21

MySQL에서 새 사용자 계정을 생성하고, 해당 사용자에게 데이터베이스 권한을 부여하는 과정은 데이터베이스 보안과 관리의 중요한 부분입니다. 이러한 과정을 통해 각 사용자가 접근할 수 있는 데이터를 통제하고, 시스템을 보다 안전하게 유지할 수 있습니다.계정을 생성 및 권한 부여 방법(버전에 따라 방식이 조금 달라졌다.)사용자 생성: 먼저 CREATE USER 명령을 사용하여 사용자를 생성하고 비밀번호를 설정합니다.권한 부여: 사용자 생성 후, GRANT 명령을 사용하여 해당 사용자에게 권한을 부여합니다.권한 부여의 범위전체 권한 부여: 사용자에게 모든 데이터베이스의 모든 테이블에 대한 모든 권한을 부여합니다. 이는 매우 강력한 권한이며 주로 데이터베이스 관리자에게 부여됩니다.특정 데이터베이스에 대한 권한..

MySQL/MySQL 기본 2024.06.10

SQL 쿼리의 일반적인 처리 순서 - 20

FROM 절가장 먼저 실행되며, 쿼리에서 참조하는 테이블 또는 뷰를 식별합니다. 여러 테이블이 조인되는 경우, 이 절에서 어떻게 테이블들이 결합되는지 정의됩니다.ON 절조인이 수행될 때 사용됩니다. FROM 절에서 정의된 테이블들이 결합하는 방식을 구체적으로 명시합니다. 이 절은 조인 조건을 평가하여 조인할 행을 결정합니다.JOIN여러 테이블을 조합할 때 사용되며, ON 절 다음에 평가됩니다. 지정된 조인 조건에 따라 행들이 결합됩니다.WHERE 절FROM 절에서 생성된 결과 테이블에 대해 필터링 조건을 적용합니다. 이 조건은 개별 행에 대해 평가되며, 조건을 만족하는 행만이 다음 단계로 전달됩니다.GROUP BY 절조건을 만족하는 행들을 그룹화합니다. 이 절은 특정 열 또는 열의 조합을 기준으로 데이터..

MySQL/MySQL 기본 2024.06.10

Groub By 와 having 절 - 19

GROUP BY 절이란?GROUP BY 절은 SQL에서 특정 열의 값에 따라 행 집합을 요약된 그룹으로 나누는 데 사용됩니다. 이 절은 주로 집계 함수(예: SUM, AVG, MAX, MIN, COUNT 등)와 함께 사용되어, 각 그룹에 대한 요약 정보를 제공합니다.GROUP BY 절은 데이터들을 원하는 그룹으로 나눌 수 있다나누고자 하는 그룹의 컬럼명을 SELECT절과 GROUP BY절 뒤에 추가하면 된다.집계 함수와 함께 사용되는 상수는 GROUP BY 절에 추가하지 않아도 된다. (많이 실수 하는 부분)HAVING 절이란?HAVING 절은 GROUP BY 절과 함께 사용되며, 특정 조건을 만족하는 그룹만을 필터링하는 데 사용됩니다. WHERE 절이 개별 행에 대해 조건을 적용하는 반면, HAVING..

MySQL/MySQL 기본 2024.06.10