개-발/Database

UserRepository는 JPARepository 와 UserRepositoryCustome(DSL)을 인터페이스화한다 그리곤 UserRepositoryCustome 를 구현해줄 UserRepositoryCustomeImpl class를 만들어 DSL을 구현하면 된다.
합집합(정제된), UNION UNION은 합집합 연산. 사용할 컬럼의 수와 데이터 형식이 일치해야 하며, 합친 후 '중복 제거'한다. SELECT * FROM (테이블1) UNION SELECT * FROM (테이블2); 합집합(정제하지 않는), UNION ALL 정렬하지 않고 중복 제거 하지않는다. ( 정제하지 않음) SELECT * FROM (테이블1) UNION ALL SELECT * FROM (테이블2); 교집합(정제된), INTERSECT 두 개의 테이블에 대해 겹치는 부분을 추출하는 연산이다. 추출 후 '중복 제거' 하여 보여준다. SELECT COL1, COL2 FROM A INTERSECT SELECT COL1, COL2 FROM B INTERSECT 명령어는 Oracle DB, Maria..
모아서 보내기 = flush 플러시 란? JPA는 엔티티를 영속성 컨텍스트에서 관리합니다. 영속성 컨텍스트에 있는 내용을 데이터베이스에 반영하는 것을 플러시라고 합니다. 보통 트랜잭션을 커밋하면 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화(등록create, 수정update, 삭제delete) 작업을 진행하게 됩니다. 엔티티 등록 EntityMaanger em = emf.createEnttiyManager(); ENtityTranscation transaction = em.getTransaction(); // 엔티티 매니저는 데이터 변경 시 트랜잭션을 시작해야한다. transaction.begin(); em.persist(memberA); em.persist(memberB); // 여기까지 Inse..
변경 전 SELECT c.title, a.cnt_checkins, b.cnt_total, (a.cnt_checkins/b.cnt_total) AS ratio FROM ( SELECT course_id, count(DISTINCT (user_id)) AS cnt_checkins FROM checkins GROUP BY course_id ) a INNER JOIN ( SELECT course_id, count(*) AS cnt_total FROM orders GROUP BY course_id ) b ON a.course_id = b.course_id INNER JOIN courses c ON a.course_id = c.course_id 변환 하기 변경 후 WITH table1 AS( SELECT cours..
서브쿼리(subquery)는 쿼리문 안에 쿼리가 들어가는 것을 의미한다. 서브쿼리를 작성할때는 서브쿼리문 앞에 Tap 키로 띄어쓰기를 맞춰준다. 1. WHERE - subquery SELECT * FROM 테이블명1 WHERE 필드명1 IN ( SELECT 필드명2 FROM 테이블명2 WHERE 필드명 ='필드명' ) EX) SELECT * FROM users WHERE user_id IN ( SELECT user_id FROM orders WHERE payment_method ='kakaopay' ) 풀이) orders 안에 있는 user_id 필드에 payment_method='kakaopay' 결과물을 users 테이블에 있는 user_id 와 겹치는 *(모든정보) 보여주세요 2.SELECT 서브쿼..
테이블 연결 JOIN 보통 Primary Key 및 Forign Key를 이용하여 조인한다. SELECT * FROM 테이블명 INNER JOIN 테이블명 *INNER은 생략가능 [ LEFT INNER JOIN 왼쪽기준 , RIGHT INNER JOIN 오른쪽기준 ] SELECT A.USER_ID, A.NAME, B.COMPANY_NAME FROM USERTABLE A JOIN COMPANY B ON A.USER_ID = B.USER_ID; ON 테이블명.필드명 = 테이블명.필드명 ex) SELECT * FROM users(테이블명) u(alias 별칭) LEFT JOIN point_users(테이블명) p(alias 별칭) // LEFT를 생략하면 자동으로 LEFT로 지정된다 ON u.user_id =..
1. GROUP BY SELECT 필드명 FROM 테이블명 GROUP BY 필드명 중복된 것을 취합해 준다. DISTINCT = 단일의 대상 GROUP BY = 여러 대상 (집계,통계 데이터) ex) 같은성씨의 갯수 알아보기 SELECT 필드명,COUNT(*) FROM 테이블명 GROUP BY 필드명 2. ~별로 최소값 구하기 (GROUP BY MIN) ~별로 (그룹별 , 나이별 , 날짜별) < GROUP BY SELECT 필드명1,MIN(필드명2) FROM 테이블명 GROUP BY 필드명1 풀이.= 테이블 에서 필드명1으로 묶은 후 거기서 필드명1안에 필드명2로된 최소값들을 구하라 ex) 1주차 별 라이크 수 구하기 SELECT week,MIN(likes) FROM checkins GROUP BY we..
1. SHOW TABLES < 테이블 목록을 확인한다. 2. 확인한 테이블을 보고 SELECT * FROM 테이블명 내가 필요한 정보가 어디에 담겨 있는지 인지 한다. 3. WHERE 로 필요한 정보를 찾는다. SELECT * FROM checkins WHERE user_id = '12dd94fe' < 여기서 문자열은 작은따옴표 ( ' ' ) 안에 넣어준다. ! 숫자는 따옴표를 안넣는다 *빨간색 글씨는 sql의 명령어로 데이터명과 햇깔리지 않게 대문자로 표기해준다. 4.데이터 필드 2개 찾기 (WHERE AND) ex) 이름 황** 과 결재를 카드로 한 사람 찾기. SELECT * FROM checkins WHERE user_id = '황**' AND payment_method = 'CARD' < 이처럼..
imSoo
'개-발/Database' 카테고리의 글 목록 (2 Page)