SQL/모두를 위한 postgreSQL (12) 썸네일형 리스트형 [PostgreSQL] 8. 함수와 뷰 활용하기_(1) 1. 함수 1) 함수 -원하는 목적의 달성을 위해 일련의 SQL문 작업들을 하나의 단위로 묶는 것을 의미한다 -여러 작업들을 묶어 하나의 함수 이름으로 부를 수 있다 -다른 DBMS에서는 저장프로시저 라고도 한다 2) 함수를 사용하는 이유 -복잡하고 시간이 많이 걸리는 작업들을 일일이 수행하지 않고 하나의 단위로 묶어서 작을 쉽게 하기 위해서이다 -함수 사용 여부에 따라 서버와 클라이언트 간의 통신 횟수가 현저히 차이가 난다 -함수를 사용하지 많으면 각각의 쿼리응 일일이 서버와 통신해야 하는 반면 함수를 사용하면 한번의 통신만 하면 작업이 가능하다\ -함수를 사용하면 여러번의 통신횟수가 줄어들어 DBMS의 작업 처리가 더 빨라진다 3) postgreSQL 프로시저 언어란 -SQL, C언어 등 다양한 재료.. [PostgreSQL] 7. 데이터 인덱싱_(3) 5. 인덱스 유지 관리하기 1) EXPLAIN 명령어 EXPLAIN 쿼리문; EXPLAIN ANALYZE 쿼리문; -EXPLAIN 명령어는 쿼리문 앞에 붙이면 쿼리문이 어떻게 실행되는지를 예상한 쿼리 계획을 출력하게 된다 -EXPLAIN 명령어 뒤어 ANALYZE를 붙이면 실제로 쿼리를 실행한 후 실행한 쿼리계획과 실제 소요된 시간이 함께 출력된다 -쿼리계획 이란 말그대로 쿼리를 실제로 실행하기 위한 계획이다 -쿼리계획에는 어떤 작업을 먼저 하고 나중애 했는지와 같은 정보와 인덱스를 사용했는지 여부가 담겨있다 2) EXPLAIN과 쿼리 계획 Filter : 원하는 정보만을 걸러내는 작업 Sequential Scan : 순차적으로 정보를 읽어내는 작업 Index Scan : 인덱스응 조회하여 원하는 정보를.. [PostgreSQL] 7. 데이터 인덱싱_(2) 4. 인덱스 명령어 1) 종류별 인덱스 생성하기 CREATE INDEX ON [USING] ( [ASC | DESC], ... ) (1) 단일 컬럼 인덱스 -가장 기본이 되는 단일 컬럼 인덱스를 생성하기 위해서는 CREATE INDEX 명령어를 사용해야 한다 -EX) CREATE INDEX name_idx ON ramen(name); >name_idx라는 이름의 인덱스를 생성 >ON 명령어 다음에 ramen테이블이름을 설정하고, 괄호 안에 컬럼이름과 순서를 지정한다 >방향을 지정하지 않으면 디폴트 값으로 오름차순으로 인덱스가 생성된다 (2) 복합 컬럼 인덱스 -여러 개의 컬럼에 대한 인덱스를 말한다 -EX) CREATE INDEX item_idx ON rating(item_type ASC, item_id.. [PostgreSQL] 7. 데이터 인덱싱_(1) 데이터 인덱싱 -인덱스는 한국어로 색인 이라는 의미를 가지고 있다 -데이터베이스 인덱스도 데이터 속에서 중요한 부분을 따로 정리하여 쿼리속도 향상시킨다 1. 인덱스의 특징 -쿼리를 수행할 때 인덱스가 없다면 모든 로우를 일일이 조회해야 한다 인덱스는 쿼리 작업을 매우 효율적으로 만든다 -하지만 인덱스를 만들면 새로운 로우를 생성하거나 제거하는 작업을 빈번하게 할 때 속도의 저하가 일어날 수 있다. 매번 인덱스를 업데이트 해야 하기 때문이다 -단순 인덱스을 만들면 해당 컬럼만 조회할 때 사용할 수 있고, 다수의 컬럼을 대상으로 조회를 할 때에는 복합 인덱스가 효율적이다 -복합 인덱스는 순서가 중요하다 특히 먼저 묶는 정보가 더 큰 범위를 포괄하고 있을수록 유용하다 -'a-b' 복합 인덱스는 a 단순인덱스와.. [PostgreSQL] 6. 데이터 모델링 데이터 모델링 -데이터를 어떻게 하면 효과적으로 다룰 수 있는지 -내부구조나 기능을 활용하여 속도를 향상시키는 방법 1. 테이블 사이의 관계 -관계형 데이터베이스인 postgresql은 데이터를 담기 위해 테이블이라는 그릇이 항상 필요하다 많은 정보를 테이블로 표현하기 위해서는 전략적으로 구성해야한다 -저장할 데이터의 구조를 정하는 작업을 데이터 모델링 이라고 한다 -데이터 모델링은 많은 양의 데이터를 빈번하게 조회하는 서비스에서 특히 중요하다 1) 데이터 모델링 예시 -게시판은 여러개의 게시글을 가질 수 있고, 게시글은 하나의 게시판에 속해 있다 -사용자는 여러 개의 게시글을 쓸 수 있고, 게시글에는 하나의 글쓴이가 있다 -사용자는 여러개의 게시글을 조회할 수 있고, 게시글은 여러명의 사용자가 조회할 .. [PostgreSQL] 5. 데이터의 결합_3 5. 여러 개의 테이블을 로우로 연결하기 1) 명령어의 전제 조건 -서로 다른 테이블을 세로 방향으로 합치기 위해서는 2개의 쿼리문 사이에 연결하는 명령어 추가 -2개의 쿼리문으로 하나의 테이블을 만드는 것인 만큼 전제조건이 성립되어야 한다 (1) 두 SQL은 서로 컬럼의 개수가 동일해야 한다 (2) 같은 위치에 동일한 형식과 의미의 정보가 담겨야 한다 2) UNION / UNION ALL (1)두 명령어의 차이점 -UNION 명령어는 중복되는 로우는 하나의 로우로만 표현한다 -UNION ALL 명령어는 중복여부를 확인하지 않고 그냥 두 테이블을 결합해서 출력한다 (2) UNION 명령어의 중복 제거 -UNION명령어는 두 테이블을 결합할 때 두 테이블에 중복되는 로우만 제거해서출력하는 것이 아니라 두 .. [PostgreSQL] 5. 데이터의 집계_2 3. 집계함수 1) 기본적인 집계함수 avg() : null값이 아닌 모든 입력 값의 평군 count(*) : 입력한 로우의 총 개수 count() : null값이 아닌 모든 입력 로우 값의 개수 max() : null값이 아닌 모든 입려 값의 최댓값 min() : null값이 아닌 모든 입력 값의 최솟값 sum() : null값이 아닌 모든 입력 값의 합산값 -GROUP BY절 없이 WHERE 명령어 다음에는 집게함수를 사용할 수 없다 따라서 보통은 서브쿼리를 사용해서 서브쿼리 안의 SELECT부분에서 집계함수를 사용한다 -쿼리문은 서브쿼리를 먼저 처리하기 때문에 메인쿼리에 WHERE 명령어 이전에 집계함수를 처리한다 EX) SELECT item_type, item_id FROM rating WHERE.. [PostgreSQL] 5. 데이터의 집계 및 결합_1 1. 다양한 데이터의 결합 방법 1) 한 테이블에 여러 줄로 원하는 데이터가 분산되어 있는 경우 -예를 들어 반 아이들의 이름, 성별, 키에 대한 테이블이 기존에 있을 때 성별에 따른 평균 키를 구하기 위한 데이터는 여러줄에 걸쳐서 분산되어 있다 이런 분산된 정보를 합치려면 GROUP BY 절을 이용해 '그룹화' 과정을 거쳐야 한다 2) 여러 테이블에 같은 유형의 데이터가 분산되어 있는 경우 -예를 들어 A반과 B반의 키 정보를 가진 테이블을 합쳐야 하는 상황이라면 2개의 테이블에 분산되어 있는 데이터를 세로로 합쳐야 두 반의 모든 키정보를 가진 테이블을 만들 수 있다 이와 같이 세로로 테이블을 합치려면 UNION 혹은 UNION ALL 연산자를 사용한다 3) 여러 테이블에 서로 다른 유형의 데이터가 분.. [PostgreSQL] 4.쿼리에사용되는연산자와함수 쿼리에 사용되는 연산자와 함수 1. 논리, 비교 연산자와 조건문 함수 -논리, 비교 연산자는 조건이 참인지 거짓인지 판별하는 연산자로 결과는 블리언타입으로 나타낸다 -논리연산자는 조건을 추가적으로 늘릴 때 사용한다 -비교연산자는 2개의 어떤 값 또는 조건을 비교할 때 사용한다 1) 논리 연산자 -AND, OR, NOT으로 구성된다 -조심해야 하는 부분은 조건과 결과의 불리언 타입이 참과 거짓으로만 이루어져 있지않고, NULL을 간과하면은 안된다 즉 조건이 NULL 일 수도 있고 결과가 NULL로 출력될 수도 있다는 것이다 -AND는 두가지 조건 A,B 모두 참일 때 참을 출력한다 -OR는 두가지 조건 중 하나만 참이라면 참을 출력한다 예를 들어 A가 거짓이고 B가 NULL이면 NULL로 출력된다 -NOT.. [PostgreSQL] 3.데이터 타입에 알맞은 테이블 만들기 테이터 타입에 알맞은 테이블 만들기 - 다양한 데이터 타입 이해 및 형 변환 - 데이터 무결성에 대한 이해 - 컬럼 값 제한 및 제약조건 적용 1. 데이터 타입이란 1) 테이터 타입 -데이터 타입을 선언함으로써 테이블의 각 컬럼 속에 있는 테이터의 성질을 정의할 수 있다 -변수명은 소문자로 작성하고 변수명과 구분되게 데이터타입과 제약조건은 대문자로 보통 작성한다 -숫자형,화폐형,문자형,날짜및시간,불리언형,배열형,제이슨형 (1) 숫자형 -테이블의 컬럼속 데이터들을 숫자의 형태로 저장하는 것 -INTEGER : 소수점을 제외한 정수만 입력할 때, INTEGER대신 INT로 작성해도 된다 -NUMERIC : 소수점도 정확하게 입력받아야 할 때 -NUMERIC(p,q)형태로 작성하고 p는 전체자릿수, q는 소수.. 이전 1 2 다음 목록 더보기