컴퓨터 과학 79

Chapter 11 CTE와 통계 테이블

1. CTE(Common Table Expression) - 질의 내에서 이름을 갖는 중간 결과를 임시로 생성한다. - CTAS와 다르게 테이블을 생성하지 않는다. - FROM절 서브쿼리와 기능이 동일하다. 2. 재귀 CTE (Recurrsixe CTE) - 초기값으로 주어진 투플을 이용햇 재귀적으로 연속해서 다음 투플을 생성한다. Ex) Date Series 생성 (중요) - GROUP BY orderDate - SELECT COUNT(*) .. 주문횟수 -> 모든 날짜를 생성하려면? -> SELECT date + INTERVAL 1 DAY 3. pivot 기능 - 피벗 컬럼 값으로 새로운 컬럼을 생성한다. - CASE절과 집단 함수 / GROUP BY절을 이용해서 구현 4. 집단함수에서의 NULL처리..

[5주차] 강의노트 SubQuery & DDL

2022-03-26 프로그래머스 5주차 강의 1. 5주차 세션 리뷰 1.0. 지난 과제 리뷰 - 10장 DDL 내용 !가장! 중요하므로 꼭 실습을 해봐야한다. - 질의의 결과는 항상 테이블이다. (단일값 서브쿼리도 테이블) - 연관서브쿼리는 조인과 비슷하다. 차이점을 정확히 파악한다. -> 연관 서브쿼리가 훨씬 효율적이다. (메인 메모리의 사이즈를 줄여주기 때문에) -> 조인은 두 개의 테이블이 같이 나오는 반면, 서브쿼리는 메인쿼리의 투플을 필터링한다. -> WHERE절의 연관 서브쿼리가 가장 많이 쓰인다. 메인 테이블의 필터 역할 -> FROM절 보다는 WITH절 쓰는 것이 가독성이 좋다. - 10장의 9쪽 메커니즘 아주 중요! - RESTRICT는 NO ACTION과 동일 - 9장은 실습 문제가 있..

Chapter 10 DDL : 무결성 유지 메카니즘, 뷰와 데이터 사전

- 하나의 테이블에서 FK는 여러 개 가질 수 있다. - FK제약 조건 유지를 위한 DBMS의 동작 1) 자식테이블에 대한 INSERT / UPDATE문에서 부모의 PK에 존재하지 않는 값이 시도될때 DBMS가 거부 2) 부모테이블에 대한 DELETE/ UPDATE문에서 부모 테이블의 PK값을 삭제/수정할 때, -> NO ACTION, RESTRICT: DBMS가 실행을 거부 -> SET NULL, SET DEFAULT: 자식테이블에서 해당 PK값 갖는 모든 FK를 NULL 또는 DEFAULT로 수정 -> CASCADE: 자식테이블에서 FK에 해당 PK값을 갖는 모든 투플을 연속적 삭제/ 수정 - 참조무결성 옵션 1) NO ACTION(표준SQL) / RESTRICT(MySQL) 2) SET NULL /..

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: ..

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

- 조인 -> WHERE절 조인: SELECT문의 WHERE절에서 INNER JOIN 기능 제공 -> FROM절 조인: SELECT문의 FROM절에서 다양한 조인 기능 제공 Ex) INNER JOIN, NATURAL JOIN, OUTER JOIN, CROSS JOIN -> 카티션 프로덕트: CROSS JOIN - JOIN 일반 형식 SELECT 컬럼명 FROM 테이블 WHERE 조건식 GROUP BY 컬럼명 { UNION [DISTINCT | ALL] } | INTERSECT | EXCEPT SELECT FROM WHERE GROUP BY ORDER BY { 컬럼명 | 컬럼별칭 | 컬럼위치 [ ASC | DESC],}+ ; -> SELECT에서는 ALL 이 디폴트, UNION에서는 DISTINCT가 디폴..

[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에서는 에러이다. - 윈도우 함수(중요!)..

Chapter 06 DML : 내장 함수와 갱신문

1. 단일행 내장함수(Single-Row Built-In Functions) 1-1. SQL 내장 함수 - 단일행 내장 함수(SINGLE-ROW BUILT-IN FUNCTIONS): 함수의 입력이 단일 행 -> 각 행에 대해 개별적으로 적용, 단 하나의 결과를 리턴 (SELECT, ORDER BY, WHERE절에 사용) -> 함수의 인자(argument)로 컬럼명, 표현식, 상수가 가능 -> 함수의 인자로 함수를 사용하는 함수의 중첩(nesting)이 가능하다. Ex) 문자형 - ASCII(char), CHAR(integer): 아스키 코드 값, 아스키 문자를 리턴 - INSTR(str, substr): str에서 첫번째 나타나는 substr의 시작위치를 리턴 - SUBSTR(str, position[,..

Chapter 05 DML : 단일 테이블 검색문 (Part 2)

3. 검색문의 GROUP BY 절과 HAVING절 - SELECT문의 GROUP BY절과 HAVING절 -> HAVING을 이용하면 원하는 특정 그룹만 선택 가능하다. -> 집단 함수를 함께 사용해서 그룹별 통계치를 생성한다. (1) 집단함수(Aggregate Functions) - 집단함수명 ( [ALL 또는 DISTINCT] 컬럼명 또는 표현식 ) ex) COUNT, SUM, AVG, MIN, MAX, STDDEV, VARIAN - 집단 함수는 WHERE절에 사용할 수 없다. (HAVING 절에는 가능) (2) GROUP BY절 - 표준SQL에서는 WHERE, GROUP BY절에서 alias 사용 불가능 - MySQL에서는 GROUP BY절 사용 가능 - 집단 함수의 중첩은 허용하지 않는다. - GR..