SQL 13

[leetcode] Day 2. SELECT & Order

1873. Special Bonus 출처 - https://leetcode.com/problems/calculate-special-bonus/ Write an SQL query to calculate the bonus of each employee. The bonus of an employee is 100% of their salary ,if the ID of the employee is an odd number and the employee name does not start with the character 'M'. The bonus of an employee is 0 otherwise. Return the result table ordered by employee_id. The query resul..

Chapter 02. JPA 시작하기

2.1 프로젝트 생성 H2 데이터베이스 설치와 실행 H2는 웹 용 Query tool을 제공하는 가벼운 실습용 데이터 베이스이다. 시퀀스, auto increment 기능 지원 데이터베이스 시뮬레이션 기능이 있다. H2 데이터베이스를 설치한다. https://www.h2database.com/html/main.html maven 프로젝트 생성 maven - 라이브러리 자동 다운로드 및 의존성 관리 아까 사이트에서 다운받은 2.1.214 버전과 같은 드라이버를 사용해야한다. 4.0.0 jpa-basic ex1-hello-jpa 1.0.0 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 JPA 설정 - persisten..

Chapter 03. DB에 작업하기

3.1 ORM 개념 이해하기 Persistence Framework란? persistance: 영속성 데이터의 영속성: 휴대폰을 새로 구매해도 기존에 있던 데이터를 끌어올 수 있는 것처럼 데이터가 없어지지 않는 특성을 말한다. Persistance Framework는 DB와의 연동되는 시스템을 빠르게 개발하고 안정적인 구동을 보장해주는 프레임워크를 말한다. 장점: 재사용, 유지 보수에 용이하다. 코드가 직관적이다. 종류 SQL Mapper: SQL을 개발자가 직접 작성한다. 매핑: 쿼리 수행 결과 객체 단점: DB 종류 변경 시에 쿼리 수정해야한다. 비슷한 쿼리를 반복적으로 작성해야한다. ORM(Object Relation Mapping): Object와 DB 테이블을 매핑한다. Java 함수를 사용하면..

Chapter 10. 회원 목록

10.1 회원 목록 구현 Ex) 관리자 페이지에서 회원 목록 구현하기 - list 파일 - 리스트 만들고 스타일을 적용한다. - style: border-collapse: collapse (테이블 간격 없애기) - 예를 들어, 테이블 안에 아래와 같은 방식으로 회원 데이터를 넣을 예정이다. (jpa로 가져오고 MyBatis를 이용할 것이다.) 관리자 회원 관리 관리자 메인 | 회원 관리 | 카테고리 관리 | 강의 관리 | 로그 아웃 No 아이디(이메일) 이름 연락처 이메일 인증 여부 가입일 관리자 여부 1 goran@kakao.com ran 010-0000-9999 y 2022.08.20 Y Note) 실행 결과 Ex) MemberService에 메서드 추가 /** * 회원 목록을 가져온다. - 관리자에..

[6주차] 강의노트 DML (Data Manipulation Language)

1. 6주차 세션 리뷰 1.0. 지난 과제 리뷰 - 엔지니어로 근무하기위해 SQL은 기본이다. - WITH절 쓰면 CTE라고 한다. - 재귀함수에서 1초가 넘어가면 거기까지만 출력한다. - SQL에서 피벗 기능은 가장 높은 수준이고 많이 쓰인다. - 피벗은 행렬에서 transpose (전치)의 개념과 비슷하다. - 집단함수 Vs 윈도우함수 -> GROUP BY + SUM => 집단함수 (통계치를 구한다.) -> SUM(noOfCustomers) OVER (PARTITION BY office) => 윈도우함수 - 적용되는 범위마다의 합을 투플마다 모두 나타낸다. - 윈도우함수에서 프레임이 가장 중요하다. - 프레임 정의하는 방법이 어렵다. (ROWS절: 행의 개수 / RANGE절: ORDER BY절의 ) ..

Chapter 12 윈도우 함수와 그룹함수

1. SQL 내장 함수 - 단일행 내장 함수: 함수의 입력이 단일행 -> 문자형/ 숫자형/ 날짜형/ 변환형/ NULL관련, 정규식 함수 - 다중행 내장 함수 -> 집단함수: 그룹 별로 통계치 -> 윈도우 함수: 투플 별로 통계치 + PARTITION BY, 모든 투플에 각각 적용, 파티션의 모든 투플들을 리턴한다. -> 그룹함수: 레벨 별로 통계치 제공 (그룹마다 하나의 결과 리턴) - 윈도우 함수는 서브쿼리로 바꿀 수 있다. 1) 집단함수: SUM(), AVG(), COUNT(), MIN(), MAX() 2) 순위함수 - RANK(): -> 1 2 3 3 5 5 7 7 7 7 7 7 ... - DENSE_RANK(): 동점자 처리, 순위는 이어지게한다. -> 1 2 3 3 4 4 5 5 5 5 5 5 ..

Chapter 09 DML : 서브쿼리(Subquery)

Def) 서브 쿼리: SQL문 (주로 SELECT문) 안에 포함되는 SELECT문 - 질의문 / 갱신문 위치에 사용가능하다. 1. 주의 사항 1) 컬럼참조 시 주의 사항: 메인쿼리에서 볼 때, 서브쿼리는 블랙 박스 - inline view(FROM절 서브쿼리)의 경우, 메인쿼리는 inline view의 컬럼을 자유롭게 참조한다. 2) ORDER BY절 사용 제한 - WHERE절 서브쿼리에서는 ORDER BY절을 사용하지 못한다. - inline view의 경우, 사용 가능. - WHERE절 서브쿼리 1) 단일값 서브쿼리 (scalar sunquery) 2) 다중값 서브쿼리 (column subquery): ANY | SOME | ALL 3) 다중행 서브쿼리 (table subquery): 여러 개의 투플..

[4주차] 강의노트 DML(다중 테이블 쿼리)

2022-03-19 프로그래머스 4주차 강의 1. 3주차 세션 리뷰 1.0. 지난 과제 리뷰 - DB에서 가장 중요한 개념 "JOIN"을 활용하는 문제로 구성됐다. - JOIN을 완벽히 이해해야 서브쿼리 알 수 있다. - 99%의 조인은 PK, FK 사이에서 이뤄진다. - 프로그래밍에서 for반복문이 중첩되서 돌아가는 것과 같다. - where절 조인은 검색 조건과 조인 조건이 섞여 있어서 가능하다면 FROM절 조인을 쓰는 게 좋다. - 과제할 때 WHERE절에 조인 조건을 깜빡해서 오답이 있었다. - LEFT JOIN에 WHERE 절을 적용하면 조인의 의미가 사라진다. -> customers LEFT JOIN payments ... 하면 결제액 없는 고객도 출력 - OUTER JOIN에 WHERE절을 ..

Chapter 08 DML : 조인 연산을 사용한 검색문 (다중 테이블 검색문)

- WHERE절 조인: INNER JOIN만 제공 - FROM절 조인 1) (INNER) JOIN -> ON절/ USING절 2) NATURAL JOIN 3) LEFT/RIGHT/FULL (OUTER) JOIN -> ON절/ USING절 4) CROSS JOIN - CTAS로 저장 -> ON절 조인을 CTAS로 저장하려면 에러가 난다. (office code가 두 개) -> USING절 조인은 정상 실행된다. (office code가 한 개) - OUTER조인: 조인 조건을 만족하지 않는 투플도 결과에 포함된다. -> FULL [OUTER] JOIN: LEFT 및 RIGHT JOIN 결과의 합집합(UNION) -> MySQL은 FULL [OUTER] JOIN을 지원하지 않는다. - CROSS JOIN: ..

[3주차] 강의노트 DML- Function & Update

2022-03-12 프로그래머스 3주차 강의 1. 3주차 세션 리뷰 1.0. 지난 과제 리뷰 - GROUP BY절 주의사항 - PPT 10쪽 ->productLine을 기준으로 GROUP BY 했지만 name, scale을 select할 수 는 있다. -> 이 부분에 대해 MySQL에서는 에러 여부 옵션 설정이 가능. (ONLY_FULL_GROUP_BY) -> MySQL의 디폴트 SQL mode 중 하나인 ONLY_FULL_GROUP_BY: GROUP BY란? -> ONLY_FULL_GROUP_BY: GROUP BY 기준 컬럼 혹은 기준 컬럼에 종속되지 않은 컬럼이 SELECT, HAVING, OREDER BY절에서 사용되면 질의 실행을 거부한다. -> 표준SQL에서는 에러이다. - 윈도우 함수(중요!)..