반응형 database24 [SQL] 윈도우 함수 (WINDOW FUNCTION) WINDOW FUNCTION 개요 행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수입니다. 윈도우 함수는 분석 함수나 순위 함수로도 알려져 있습니다. 윈도우 함수는 기존에 사용하던 집계 함수도 있고, 새롭게 윈도우 함수 전용으로 만들어진 기능도 있습니다. 윈도우 함수는 다른 함수와 중첩해서 사용하지는 못하지만, 서브쿼리에는 사용할 수 있습니다. WINDOW FUNCTION 종류 1. 그룹 내 순위(RANK) 관련 함수 : RANK, DENSE_RANK, ROW_NUMBER 2. 그룹 내 집계(AGGREGATE) 관련 함수 : SUM, MAX, MIN, AVG, COUNT (sql server는 OVER절의 ORDER BY 지원 X) 3. 그룹 내 행 순서 관련 함수 : FIRST_VALU.. database 2022. 2. 5. [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL SQL 문장들의 종류 명령어의 종류 명령어 설명 데이터 조작어 (DML : Data Manipulation Language) SELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE라고도 합니다. INSERT UPDATE DELETE 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말합니다. 예를 들어 데이터를 테이블에 새로운 행을 집어넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어들을 DML이라고 부릅니다. 데이터 정의어 (DDL : Data Definition Language) CREATE ALTER DROP RENAME 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 .. database/SQLD 2022. 2. 4. [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) 이전 글 : https://sewonzzang.tistory.com/41 [Database] 데이터 모델의 이해 데이터 모델링 데이터 모델링을 하는 주요한 이유는 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하 sewonzzang.tistory.com ERD 작성 순서 1. 엔터티를 그린다. 2. 엔터티를 적절하게 배치한다. 3. 엔터티간 관계를 설정한다. 4. 관계명을 기술한다. 5. 관계의 참여도를 기술한다. 5. 관계의 필수여부를 기술한다. 엔터티 엔터티의 특징 - 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다.(ex. 환자, 토익의 응시횟수,...) - 유일한 식별자에 의해 식별이 가능해야 한다. - .. database/SQLD 2022. 2. 2. [SQLD] 데이터 모델의 이해 데이터 모델링 데이터 모델링을 하는 주요한 이유는 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현함으로써 정보시스템 구축의 대상이 되는 업무 내용을 정확하게 분석하는 것이 첫 번째 목적입니다. 두 번째는 분석된 모델을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터관리에 사용하기 위한 것이 두 번째 목적입니다. 다시 말하면, 데이터모델링이라는 것은 단지 데이터베이스만을 구축 하기 위한 용도로 쓰이는 것이 아니라 데이터모델링 자체로서 업무를 설명하고 분석하는 부분에서도 매우 중요한 의미를 가지고 있다고 할 수 있습니다. 데이터 모델링을 할 때 유의할 사항은 중복성, 비유연성, 비일관성 등 입니다. 1. 중복 (Duplication) 데이터 모델은 같은 데이터를 사용하는 사람, .. database/SQLD 2022. 1. 29. [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 3 이전글 : https://sewonzzang.tistory.com/38 [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 2 이전 글 : https://sewonzzang.tistory.com/37 [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 1 이전 글: https://sewonzzang.tistory.com/34 [SQL] 인덱스(Index) - (1) 미리보는 인덱스 튜닝 sql관련 글들.. sewonzzang.tistory.com 6. SELCET-LIST에서 컬럼 가공 인덱스를 [장비번호 + 변경일자 + 변경순번] 순으로 구성하면, 아래와 같이 변경순번 최소 값을 구할 때도 옵티마이저는 정렬 연산을 따로 수행하지 않습니다. 수직적 탐색을 통해 조건을 만족하는 가.. database 2022. 1. 27. [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 2 이전 글 : https://sewonzzang.tistory.com/37 [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 1 이전 글: https://sewonzzang.tistory.com/34 [SQL] 인덱스(Index) - (1) 미리보는 인덱스 튜닝 sql관련 글들은 친절한SQL튜닝 책을 보며 학습중인 내용들이 작성될 것입니다. 최근에 쿼리 과제를 진행한 적이 있. sewonzzang.tistory.com 3. 더 중요한 인덱스 사용 조건 조건절에서 인덱스 컬럼을 가공하면 인덱스를 정상적으로 사용할 수 없다는 사실을 이해했을 것 입니다. 그런데 인덱스를 사용하는데 있어 더 중요한 선행조건을 알아 볼 것 입니다. 인덱스를 아래처럼 [소속팀 + 사원명 + 연령] 순으로 구성했습니다... database 2022. 1. 26. [SQL] 인덱스(Index) - (2) 인덱스 기본 사용법 - 1 이전 글: https://sewonzzang.tistory.com/34 [SQL] 인덱스(Index) - (1) 미리보는 인덱스 튜닝 sql관련 글들은 친절한SQL튜닝 책을 보며 학습중인 내용들이 작성될 것입니다. 최근에 쿼리 과제를 진행한 적이 있었는데, 발표는 하지 않아 피드백을 받지 못했지만 효율성을 따지지 않고 문제 sewonzzang.tistory.com 인덱스 기본 사용법은 인덱스를 Range Scan 하는 방법을 의미합니다. 인덱스를 Range Scan할 수 없게 되는 이유를 알고 나면, 인덱스를 Range Scan하는 방법도 자연스럽게 터득할 수 있습니다. 인덱스 확장기능은 Index Range Scan 이외의 다양한 스캔 방식을 말합니다. 1. 인덱스를 사용한다는 것 책에서 색인을 찾을 .. database 2022. 1. 25. [SQL] 인덱스(Index) - (1) 미리보는 인덱스 튜닝 sql관련 글들은 친절한SQL튜닝 책을 보며 학습중인 내용들이 작성될 것입니다. 최근에 쿼리 과제를 진행한 적이 있었는데, 발표는 하지 않아 피드백을 받지 못했지만 효율성을 따지지 않고 문제해결에만 집중을 하면서 쿼리를 작성해 성능적으로는 좋지 않은 쿼리를 작성했다는 생각이 들었습니다. 인터넷으로 검색해서 공부하는 방법이 있었지만 무엇부터 공부를 해야 할 지 도저히 감이 잡히지 않아 책을 구매했습니다. 저는 책을 읽으면서 작성했던 쿼리를 다시 살펴보는고, 효율적으로 다시 작성해 보는 방식으로 학습하려고 합니다. 1. 들어가기 전에... 어떤 초등학교를 방문해 '홍길동' 학생을 찾는 방법은 두 가지 입니다. 첫째는, 1학년 1반부터 6학년 맨 마지막 반까지 모든 교실을 돌며 '홍길동' 학생을 찾는 것이고,.. database 2022. 1. 22. [MYSQL] - SELECT 효율적으로 사용하기 - JOIN(2) https://sewonzzang.tistory.com/10 [MYSQL] - SELECT 효율적으로 사용하기 - JOIN 1. 쿼리의 속도를 측정하는 EXPLAIN mysql 옵티마이저는 비용 기반으로 어떤 실행 계획으로 쿼리를 실행했을 때 비용이 얼마나 발생하는지를 계산하여 비용이 가장 적은 것을 택하게 된다. 어디까지 sewonzzang.tistory.com 2. JOIN 쿼리의 최적화 A,B,C테이블을 가정할 떄, A와 C를 JOIN 한다면, select * from A left join C on A.A_ID=C.A_ID 로 하게 된다면 ALL 이 될 것이다. 왜냐하면 A 테이블은 C에 없는 A_ID 행들을 가지고 있기 때문이다. A 기준으로 찾는다고 생각을 해 보면, A테이블을 다 뒤져보게 되는.. database 2022. 1. 3. [MYSQL] - SELECT 효율적으로 사용하기 - JOIN(1) 1. 쿼리의 속도를 측정하는 EXPLAIN mysql 옵티마이저는 비용 기반으로 어떤 실행 계획으로 쿼리를 실행했을 때 비용이 얼마나 발생하는지를 계산하여 비용이 가장 적은 것을 택하게 된다. 어디까지나 추정 값이므로 정확한 비용은 실행 전까지 정확하게 알 수 없다.. EXPLAIN은 MySQL 서버가 어떠한 쿼리를 실행할 것인가, 즉 실행 계획이 무엇인지 알고 싶을 때 사용하는 기본적인 명령어이다. EXPLAIN SELECT * FROM 테이블명 WHERE 조건 SELECT 명령문을 EXPLAIN 앞에 두면, MYSQL은 쿼리 실행 플랜 (query execution plan) 정보를 옵티마이저 (optimizer) 에서 가져와서 출력한다. 즉, MYSQL은 테이블들이 어떤 순서로 조인 (join) 하.. database 2022. 1. 3. [mysql] 자주 사용하는 select 1. RANK() / DENSE_RANK() / ROW_NUMBER() -순위매김 RANK 함수는 중복 값 들에 대해서 동일순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 개수만큼 떨어진 순위로 출력하는 함수입니다. OVER()안에 RANK를 매길 조건을 입력하는데 이 때, 조건이 하나가 아닌 여러개라면 PARTITION BY절을 사용해서 특정 속성 별로 구분을 합니다. 저는 년월, 과목별 점수에 대한 학생별 등수를 보여줘야 했기 때문에, PARTITION BY년월, 과목코드 로, 등수를 매기는 조건은 점수를 내림차순으로 정렬하였습니다. RANK()를 검색하다보면 DENSE_RANK() 도 볼 수 있는데 RANK() 와 DENSE_RANK()는 둘 다 공동순위가 존재하는데, 차이점은 RANK()는 .. database 2021. 12. 31. [mac] mariaDB connection error 해결, workbanch 연결 mysql -u root -p , mysql root -p 등을 실행해 보았지만 Ignoring query to other database 라는 말이 나와 데이터베이스를 사용할 수 없었다. 다음과 같이 입력해야 잘 사용이 되었다. $ sudo mysql -uroot -p 사용자 설정 database 밑의 mysql: 관리데이터베이스 를 제외한 다른 데이터베이스들은 사용자를 생성해야 한다. MariaDB [(none)] SHOW DATABASES; MariaDB [(none)] CREATE DATABASE "데이터베이스명"; MariaDB [(none)] DROP DATABASE "삭제 할 데이터베이스 명" #mysql -u root -D dbname -p; #mysql -u root -p (DBA 권한으.. database 2021. 12. 27. 이전 1 2 다음 반응형