우주먼지
Stored Procedure
Database/SQL 2023. 3. 28. 22:16

💡 Stored Procedure 쿼리문들의 집합으로, 어떤 동작을 여러쿼리를 거쳐 일괄적으로 처리할 때 사용한다. 만들어놓은 SQL문을 저장하고 필요할 때마다 호출해서 사용하는 방식이다. 사용이유 성능 향상 SP를 처음 실행하면 최적화, 컴파일 단계르 거쳐 결과가 캐시에 저장된다. 이후 해당 SP를 실행하면 캐시에 있는 쿼리를 가져와 사용하므로 속도가 빠르다. 그렇기 때문에 일반 쿼리를 반복하는 것보다 SP를 사용하는게 성능 측면에서 좋다. 유지보수 및 재활용 C#, Java 등으로 만들어진 프로그램에서 직접 SQL 쿼리를 호출하지 않고, SP 이름을 호출하도록 설정하는 경우가 많다. 이 때, 개발자는 수정사항 발생 시 코드 내 SQL문을 건드리는게 아니라 SP 파일만 수정한다. 즉 한번 SP를 생성해..

SQL Operators
Database/SQL 2023. 3. 28. 22:15

💡 Operator SQL에는 다양한 연산자가 있다. 산술연산자, 비트연산자, 비교연산자, 논리연산자등 대부분 프로그래밍의 연산자와 비슷하다. SQL 산술연산자 Operator Description Example + Add Try it - Subtract Try it * Multiply Try it / Divide Try it % Modulo Try it SQL 비트 연산자 Operator Description & Bitwise AND | Bitwise OR ^ Bitwise exclusive OR SQL 비교 연산자 Operator Description Example = Equal to Try it > Greater than Try it = Greater than or equal to Try it

Null Functions
Database/SQL 2023. 3. 28. 21:42

💡 Null Function Null 함수엔 IFNULL(), ISNULL(), COALESCE(), NVL() 등이 있다. IF NULL은 해당 값이 Null일 경우 대체값을 설정해 그 값으로 변환한다. COALESCE는 지정한 표현식들 중에 NULL이 아닌 첫번째 값을 반환한다. 기본 형식 IFNULL(), ISNULL() 자바의 Map 메서드인 getOrDefault() 와 비슷하며, IF와 IS NULL로도 Null 체크를 할 수 있다. SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; SELECT IF(IS NULL(name), "No Name", name) as name FROM Animal_ins COALESCE 표현식은 여러 항목 지정이 가능하고, ..

JPQL 벌크 연산 & 다형성 쿼리 & Named 쿼리
Database/JPQL 2023. 3. 22. 18:42

💡 벌크 연산 PK를 특정한 엔티티의 Update, Delete를 제외한 모든 Update, Delete 쿼리이다. 쿼리 한 번으로 여러 테이블의 Row를 변경한다. (Entity) executeUpdate()의 결과는 영향을 받은 Entity의 수를 반환한다. Insert 문을 Hibernate에서 지원한다. (insert into .. select) // 재고가 10개 미만인 Product의 Price를 쿼리 한 번으로 10% 인상 String qlString = "update Product p " + "set p.price = p.price * 1.1 " + "where p.stockAmount < :stockAmount"; int resultCount = em.createQuery(qlString..

Case
Database/SQL 2023. 3. 20. 13:00

💡 Case Case When 형식으로 When과 같이 자주 쓰이며 프로그래밍의 if - else 문과 비슷하다. When의 평가식은 '필드 = 값' 처럼 조건을 지정하는 식을 말한다. 처리 순서는 처음에 있는 When의 평가식부터 평가되고, 조건이 맞으면 Then 에 지정된 식이 리턴되며 Case식 전체가 종료된다. 만약 조건이 맞지 않으면 다음 When 으로 이동해 같은 처리를 반복한다. 기본 형식 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END; 예시 OrderDetails 테이블의 OrderId와 Quantity를 돌면서 조건에 만족하면 End As 에 ..

Select Into & Insert Into Select
Database/SQL 2023. 3. 20. 12:36

💡 Select Into 한 테이블의 데이터를 새 테이블로 복사할 때 사용한다. 기본 형식 SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition; 일부 열만 새 테이블에 복사 SELECT column1, column2, column3 ... INTO newtable [IN externaldb] FROM oldtable WHERE condition; 예시 Customer의 백업본 생성 SELECT * INTO CustomersBK FROM Customers; IN을 사용하여 데이블을 다른 데이터베이스의 새 테이블로 복사 SELECT * INTO CustomerBK IN 'Backup.mdb' FROM customers; 몇 개의 열만 새..

JPQL Fetch Join
Database/JPQL 2023. 3. 19. 13:29

💡 Fetch Join SQL 조인의 종류가 아니다. JPQL에서 성능 최적화를 위해 제공하는 기능이다. 연관된 Entity나 Collection을 SQL 한 번에 같이 조회하는 기능 (성능 최적화) 글로벌 Fetch Loading 전략보다 우선순위가 높다. 객체 그래프를 유지할 때 사용하면 효과적이다. 여러 테이블을 조인해서 엔티티가 가진 모양이 아닌 전혀 다른 결과를 내야하면, 일반 조인을 사용하고 필요한 데이터만 조회해서 DTO로 반환하는 것이 좋다. join fetch 명령어 사용 ::= [ LEFT [OUTER] | INNER ] join fetch 경로 Entity Fetch Join 엔티티를 조회하면서 연관된 엔티티까지 같이 한번의 쿼리로 조회한다. JPQL String query = "se..

검색 태그