일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @AspectJ
- XML
- Framework
- POJO
- Spring JDBC
- 컨테이너
- Ubunt
- STS
- unix
- @test
- spring framework
- JdbcTemplate
- 마이바티스
- spring aop
- 프로퍼티
- Linux
- java spring
- @JUnit
- Spring Boot
- @Spring-Test
- 리눅스
- AOP
- Dependency Injection
- SpringJDBC
- java
- Di
- pointcut
- spring
- myBatis
- JDBC TEMPLATE
- Today
- Total
목록PostgreSQL (57)
개키우는개발자 : )
실습 테이블 만들기 https://dog-developers.tistory.com/154 AVG 란? 분석함수 AVG() 부터 본격적으로 분석함수를 알아 볼 수 있습니다. 기본문법 - 사용하고자 하는 분석함수를 쓰고 대상 컬럼을 기재 후 PARTITION BY에서 값을 구하는 기준 컬럼을 작성 후 ORDER BY에서 정렬 컬럼을 기재합니다. SELECT C1, 분석함수(C2,C3,...) OVER(PARTITION BY C4 ORDER BY C5) FROM TABLE_NAME; 실습 - PRODUCT 테이블의 전체 PRICE 평균 구하기. select AVG (PRICE) from PRODUCT; - PRODUCT_GROUP 테이블과 PRODUCT 테이블을 GROUP_ID컬럼 기준으로 INNER JOIN..
실습 테이블 만들기 https://dog-developers.tistory.com/154 분석 함수란? 특정 집합 내에서 결과 건수의 변화 없이 해당 집합안에서 합계 및 카운트 등을 계산할 수 있는 함수 이다. 실습 - PRODUCT 테이블의 데이터 개수를 조회 SELECT COUNT(*) FROM PRODUCT; 데이터의 리스트의 개수를 조회한다 - PRODUCT 테이블의 데이터와 개수를 같이 조회 SELECT COUNT(*) OVER(), A.* FROM PRODUCT A; 모든 개수와 데이터를 조회합니다.
실습준비 1 PRODUCT_GROUP 테이블 생성 CREATE TABLE PRODUCT_GROUP ( GROUP_ID SERIAL PRIMARY key, GROUP_NAME VARCHAR (255) NOT NULL ) PRODUCT_GROUP 데이터 저장 INSERT INTO PRODUCT_GROUP (GROUP_NAME) VALUES ('SMARTPHONE'), ('LAPTOP'), ('TABLET') commit; PRODUCT 테이블 만들기 CREATE TABLE PRODUCT ( PRODUCT_ID SERIAL PRIMARY KEY, PRODUCT_NAME VARCHAR(255) NOT NULL, PRICE DECIMAL (11,2), GROUP_ID INT NOT NULL, FOREIGN KEY..
CUBE 란? 지정된 GROUPING 컬럼의 다차원 소계를 생성하는데 사용된다. 간단한 문법으로 다차원 소계를 출력할 수 있다. 기본문법 - CUBE절에서 다차원 소계를 할 열을 지정한다. (지정한 그룹의 모든 경우에 수에 대한 소계와 총계를 구한다.) SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY CUBE (C1, C2, C3); - 특정 컬럼만 분리,선택하여 CUBE 지정을 할 수 있다. SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY C1, CUBE (C2, C3); CUBE 절은 GROUPING SETS 절로 표현하면 총 8개의 소계가 발생합니다. CUBE(C1,C2,C3) -> GROUPING SETS ( (..
ROLL UP 이란? 지정된 GROUPING 컬럼의 소계를 생성하는데 사용된다. 간단한 문법으로 다양한 소계를 출력합니다. 기본문법 소계 「명사」 : 전체가 아닌 어느 한 부분만을 셈한 합계. - 소계를 생성할 컬럼을 지정한 후 순서에 따라 결과값이 달라질 수 있다. (제일 앞에 놓인 것에 소계를 구함) SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY ROLLUP (C1,C2,C3); - 특정 컬럼을 제외한 부분적,선택적 ROLLUP도 가능 합니다. SELECT C1,C2,C3, 집계함수(C4) FROM TABLE_NAME GROUP BY C1 ROLLUP (C2, C3); 실습 - SALES 테이블의 BRAND,SEGMENT 컬럼 기준으로 ROLL UP을 합니..
실습테이블 만들기 https://dog-developers.tistory.com/140 GROUPING SET 이란? 여러 개의 UNION ALL을 이용한 SQL과 같은 결과를 도출할 수 있다. 실습 - SALES 테이블을 BRAND 와 SEGMENT 컬럼 기준으로 GROUP BY 합니다. SELECT BRAND, SEGMENT, SUM (QUANTITY) FROM SALES GROUP BY BRAND, SEGMENT; 일반적인 조회와 값이 별다른 변화가 없습니다. - SALES 테이블을 BRAND 컬럼 기준으로 GROUP BY 합니다. SELECT BRAND, SUM (QUANTITY) FROM SALES GROUP BY BRAND; 그룹화된 BRAND 의 QUANTITY의 합계를 보여줍니다. - SA..
실습테이블 만들기 https://dog-developers.tistory.com/140 HAVING 이란? GROUP BY 절과 함께 HAVING절을 사용하여 GROUP BY의 결과를 특정 조건으로 필터링 하는 기능을 한다. 기본문법 WHERE 절과는 다른건 집계함수의 결과를 가지고 조건을 적용하여 조회합니다. SELECT COLUMN_1, 집계함수(COLUMN_2) FROM TABLE_NAME GROUP BY COLUMN_1 HAVING 조건식; 실습 - PAYMENT 테이블을 CUSTOMER_ID 기준으로 GROUP BY 하고 SUM(AMOUNT) 가 200을 초과하는 값을 조회합니다. SELECT CUSTOMER_ID, SUM(AMOUNT) AS AMOUNT_SUM FROM PAYMENT GROUP..
실습 테이블 만들기 https://dog-developers.tistory.com/140 GROUP BY 란? GROUP BY 절은 SELECT 문에서 반환된 행을 그룹으로 나눈다. 각 그룹에 대한 합계,평균,카운트 등을 계산할 수 있다. 기분문법 GROUP BY 절은 N개의 컬럼을 GROUP BY 하는경우 ,(콤마) 로 구분하며 GROUP BY 절은 FROM 또는 WHERE절 바로 뒤에 작성해야 합니다. SELECT COLUMN_1, 집계함수(COLUMN_2) FROM TABLE_NAME GROUP BY COLUMN_1 실습 PAYMENT 테이블은 payment_id 가 기본키 이기때문에 유일한 값입니다. 하지만 customer_id(1명의 id) 는 여러개의 payment_id 를 가질수 있습니다. ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 NATURAL 조인 이란? 두개의 테이블에서 같은 이름을 가진 컬럼 간의 INNER 조인 집합 결과를 출력한다. SQL문을 보다 짧게 작성할 수 있다. 참고: 실무에선 잘 사용하지 않습니다. 하지만 NATURAL JOIN과 INNER JOIN의 차이로 인해 INNER JOIN을 더 깊게 이해할 수 있습니다. 실습 - PRODUCTS 테이블과 CATEGORIES 테이블을 NATURAL 조인 한다. CATEGORY_ID 를 동일하게 가지고있는 컬럼을 기준으로 INNER 조인 한다. SELECT * FROM PRODUCTS A NATURAL JOIN CATEGORIES B; 장점 - 자동으로 매칭해 코드가 간결해지며 편함..
실습 테이블 만들기 https://dog-developers.tistory.com/140 CROSS 조인 이란? 두개의 테이블의 CATESIAN PRODUCT 연산의 결과를 출력한다. 데이터 복제에 많이 쓰이는 기법이다. 실습 SELECT * FROM CROSS_T1 CROSS JOIN CROSS_T2; CATESIAN PRODUCT 연산의 결과를 출력합니다. 링크 : CATESIAN PRODUCT LABEL 컬럼으로 정렬 SELECT * FROM CROSS_T1 CROSS JOIN CROSS_T2 ORDER BY LABEL; - 같은 표현방법 SELECT * FROM CROSS_T1, CROSS_T2 ORDER BY LABEL; 응용 - LABEL A,B의 SCORE 값을 더하고 B는 -1 을 곱하여 ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 FULL OUTER 조인 이란? INNER,LEFT OUTER,RIGHT OUTER 조인 집합을 모두 출력하는 조인 방식이다. 즉 두 테이블간 출력가능한 모든 데이터를 포함한 집합을 출력한다. 실습 - A와 B의 테이블을 FRUIT 컬럼 기준으로 FULL OUTER 조인 합니다. SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A FULL OUTER JOIN BASKET_B B ON A.FRUIT = B.FRUIT; ID_A -> 1,2는 INNER JOIN , 3,4는 LEFT OUTER 조인 , ID_B -> 3,4는 RIGH..
실습 테이블 만들기 https://dog-developers.tistory.com/140 SELF 조인 이란? 같은 테이블 끼리 특정 컬럼을 기준으로 매칭 되는 컬럼을 출력하는 조인이다. 즉 같은 테이블의 데이터를 각각의 집합으로 분류한 후 조인합니다. 실습 - 업체의 직원 조직도의 데이터를 보여주는 테이블 입니다. SELECT * FROM EMPLOYEE; manager_id는 employee_id 의 하위에 포함된 직원이라고 판단 할 수 있습니다. Windy 는 manager_id 가 null이니 최상위 관리자라 할 수 있으며 Ava,Hassan 은 manager_id가 1입니다. 즉 employee_id 1번 보다 하위의 직책 입니다. 이런식으로 조직도 관계를 데이터로 파악이 가능합니다. tree ..
실습 테이블 만들기 https://dog-developers.tistory.com/140 OUTER 조인 이란? 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다. 실습 - A테이블과 B테이블을 조인하는데 A를 기준집합으로 조인한다. (OUTER 생략 가능) SELECT A.ID AS ID_A, A.FRUIT AS FRUIT_A, B.ID AS ID_B, B.FRUIT AS FRUIT_B FROM BASKET_A A LEFT JOIN BASKET_B B ON A.FRUIT = B.FRUIT 일단 A의 데이터는 모두 가져오며 B는 중복되는 값은 보여주고 중복되는 값이 없으면 NULL로 보여준다. - A의 테이블에만 존재하는 데이..
실습 테이블 만들기 https://dog-developers.tistory.com/140 INNER 조인 이란? 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. INNER 조인은 대표적인 조인의 종류이다. A와 B의 집합 실습 FRUIT 컬럼을 기준으로 A테이블과 B테이블의 데이터를 조회한다. SELECT A.ID ID_A, A.FRUIT FRUIT_A, B.ID ID_B, B.FRUIT FRUIT_B FROM BASKET_A A INNER JOIN BASKET_B B ON A.FRUIT = B.FRUIT; 서로 중복되는 집합의 데이터를 출력합니다. - CUSTOMER 테이블과 PAYMENT 테이블을 CUSTOMER_ID 기준으로 조인 조회를 합니다. SELECT A.CUSTOMER_ID, A.FI..
조인이란? 2개 이상의 테이블에 있는 정보 중 사용자가 필요한 집합에 맞게 가상의 테이블 처럼 만들어서 결과를 보여주는 것이다. 종류 설명 INNER 조인 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. OUTER 조인 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만을 출력한다. SELF 조인 동일한 테이블 끼리 의 특정 컬럼을 기준으로 매칭되는 집합을 출력한다. FULL OUTER 조인 INNER, LEFT OUTER, RIGHT OUTER 조인 집합을 모두 출력한다. CROSS 조인 Cartesian Product라고도 하며 조인되는 두 테이블에서 곱집합을 반환한다. NATURAL 조인 특정 테이블의 같은 이름을 가진 컬럼 간..
문제 고객에게 단체 이메일을 전송 하고자 한다. CUSTOMER 테이블에서 고객의 EMAIL 주소를 추출하고, 이메일 형식에 맞지 않는 이메일 주소는 제외시켜라. ( '@'가 존재해야 하고 '@'로 시작하지 말아야 하고 '@'로 끝나지 말아야 한다.) 1. @로 시작하지 않기 select email from customer where email not like '@%' 2. @로 끝나지 않기 select email from customer where email not like '@%' and email not like '%@' 3. @를 포함하기 select email from customer where email not like '@%' and email not like '%@' and email li..
문제 - PAYMENT 테이블에서 단일 거래의 AMOUNT의 액수가 가장 많은 고객들의 CUSTOMER_ID를 추출해라. 단 CUSTOMER_ID의 값은 유일해야 한다. 1. 가장큰 금액을 먼저 찾는다. 테이블의 데이터를 DESC 내림차순으로 정렬한 후 1개의 데이터만 출력하면 나중에 11.99 보다 큰 금액의 데이터가 들어오더라도 가장 큰금액을 항상 반환한다. select amount from payment order by amount desc limit 1; 2. 서브쿼리를 이용하여 WHERE 조건 필터링 하기 payment테이블의 amount 값이 가장많은 ( 11.99 (최대금액을 계속 반환하는) )값 을 조회한다. select* from payment where amount = ( select ..
NULL연산자 문법 기본문법 특정 컬럼의 값이 IS NULL인지 NOT NULL인지 판단하는 연산자 column_name 값이 null인 데이터 조회 select * from table_name where column_name is null; column_name 값이 null이 아닌 데이터 조회 select * from table_name where column_name is not null; 실습준비 CONTACTS 테이블 만들기 create table CONTACTS( ID INT generated by default as identity, FIRST_NAME VARCHAR(50) not null, LAST_NAME VARCHAR(50) not null, EMAIL VARCHAR(255) not n..
LIKE 문법 집합에서 어떠한 컬럼의 값이 특정 값과 유사한 패턴을 갖는 집합을 출력하는 연산자 기본문법 특정 패턴과 유사한 값을 조회 select * fromt table_name where column_name like 특정패턴 특정 패턴과 유사하지 않은 집합 select * fromt table_name where column_name not like 특정패턴 '%' 는 문자 혹은 문자열이 매칭 되었다고 판단한다. '_'는 한개의 문자이든지 매칭 되었다고 판단한다. 실습 - CUSTOMER 테이블의 FIRST_NAME이 Jen으로 시작하는 데이터를 조회 select first_name, last_name from customer where first_name like 'Jen%' - LIKE 패턴을..
BETWEEN 연산자 문법 특정 범위안에 들어가는 집합을 출력하는 연산자. 기본문법 COLUMN_NAME 값이 VALUE_A 와 VALUE_B 사이에 있는 값을 조회 SELECT * FROM TABLE_NAME WHERE COLUMN_NAME BETWEEN VALUE_A AND VALUE_B; -- BETWEEN연산자를 사용하지 않으면 아래와 같다. COLUMN_NAME >= VALUE_A AND COLUMN_NAME VALUE_B 실습 - AMOUNT가 8부터 9사이의 값을 조회 select customer_id, payment_id, amount from payment where amount between 8 and 9; 다른 방법 select customer_id, payment_id, amount..
IN연산자 문법 특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자입니다. 기본 문법 column_name이 가지고 있는 집합에서 value1,2 등의 값이 존재하는지 확인합니다. select * from table_name where column_name in(value1,value2,...) column_name이 가지고 있는 집합에서 table_name2 테이블의 column_name2의 집합이 존재하는지 확인합니다. select * from table_name where column_name in (select column_name2 from table_name2); 실습 - IN연산자를 사용하여 rental 테이블의 customer_id 가 1 또는 2 인 값을..
FETCH 문법 LIMIT와 마찬가지로 조회한 결과의 개수를 제한하는 역할을 하며. 부분 범위 처리시 사용합니다. 기본문법 출력하는 행의 수를 지정하며 N을 입력하지 않고 ROW ONLY만 입력하면 1개의 데이터만 조회 합니다. SELECT * FROM TABLE_NAME FETCH FIRST [N] ROW ONLY 출력하는 행의 범위를 지정합니다. SELECT * FROM TABLE_NAME OFFSET N ROWS FETCH FIRST [N] ROW ONLY 실습 - film 테이블의 1건의 데이터를 title컬럼 기준으로 조회합니다. select film_id, title from film order by title fetch first row only; - film 테이블의 20건의 데이터를 ti..
LIMIT 문법 LIMIT는 조회한 결과 값의 행의 수를 제한, 한정하는 역할을 합니다. 결과의 범위를 처리할 때 사용합니다. 기본 문법 출력하는 행의 수를 지정한다 SELECT * FROM TABLE_NAME LIMIT N 출력하는 행의 범위를 지정한다. SELECT * FROM TABLE_NAME LIMIT N OFFSET M 실습 - film 테이블 데이터중 5개의 결과 값만 조회하며 film_id로 정렬을 한다. select film_id, title, release_year from film order by film_id limit 5; - film 테이블 데이터중 4개의 결과 값을 film_id로 정렬하여 조회하며 첫번째 데이터는 4번째 행부터 시작을 한다. select film_id, tit..
WHERE 절 문법 집합을 가져올 때 어떤 집합을 가져올 것인지에 대한 조건을 설정할 때 사용하는 WHERE절 입니다. 기본 문법 SELECT COLUMN_1, COLUMN_2 FROM TABLE_NAME WHERE 조건 연산자 연산자 설명 = 같음 > ~보다 큰 = ~보다 크거나 같은
DISTINCT 문법 SELECT 시 DISTINCT를 사용하면 중복 값을 제외한 결과 값이 출력됩니다. 즉 같은 결과의 행이라면 중복을 제거할 수 있습니다. COLUMN_1의 값이 중복 값 존재 시 중복 값을 제거 SELECT DISTINCT COLUMN_1 FROM TABLE_NAME; COLUMN_1 + COLUMN_2의 값이 중복 값 존재 시 중복 값을 제거 SELECT DISTINCT COLUMN_1 , COLUMN_2 FROM TABLE_NAME; COLUMN_1 + COLUMN_2의 값이 중복 값 존재 시 중복 값을 제거 , 결과를 명확하게 하기 위해 ORDER BY절 사용 SELECT DISTINCT COLUMN_1 ,COLUMN_2 FROM TABLE_NAME ORDER BY COLUMN..